ZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2F0cF9sNGJfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9hdHBfbDRiX3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNDhiY2MKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9hdHBfbDRiX3N0cnVjdC5oCkBAIC0wLDAgKzEsMjE5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgbDRiX2F0cF9zdHJ1Y3QuaAorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogICAgICAgICAgICAgSElTVE9SWQorICogQmVsb3cgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBVcHBlciB0aGlzIGxpbmUsIHRoaXMgcGFydCBpcyBjb250cm9sbGVkIGJ5IFBWQ1MgVk0uIERPIE5PVCBNT0RJRlkhIQorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKyNpZm5kZWYgX0w0Ql9BVFBfU1RSVUNUX0gKKyNkZWZpbmUgX0w0Ql9BVFBfU1RSVUNUX0gKKworI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAiYXRwX3B1YmxpY19kZWZzLmgiCisKKworLyogTVNHX0lEX0FUUF9MNEJfQVRfQ01EX1JFUSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgYXRwX2NoYW5uZWxfZW51bSBjaF9pZDsKK30gYXRwX2w0Yl9hdF9jbWRfcmVxX3N0cnVjdDsKKworLyogTVNHX0lEX0FUUF9MNEJfQVRfQ01EX0NORiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgICAgIAorICAgIGF0cF9jaGFubmVsX2VudW0gY2hfaWQ7CisgICAgcHJveHlfY21kX3Jlc3VsdF9lbnVtIHJlc3VsdDsKKyAgICBhdHBfZXJyX2lkX2VudW0gY2F1c2U7CisgICAga2FsX2Jvb2wgc3R1ZmY7Cit9IGF0cF9sNGJfYXRfY21kX2NuZl9zdHJ1Y3Q7CisKKy8qIE1TR19JRF9BVFBfTDRCX0FUX1VSQ19JTkQgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUiAgICAKKyAgICBrYWxfdWludDggY2hfaWQ7CisgICAga2FsX2Jvb2wgc3R1ZmY7Cit9IGF0cF9sNGJfYXRfdXJjX2luZF9zdHJ1Y3Q7IC8vYWxpZ24gdG8gbDRiX2F0Y2lfYXRfdXJjX2luZF9zdHJ1Y3QKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUiAgICAKKyAgICBrYWxfdWludDggbG9ja19tb2RlOy8vMDp1bmxvY2s7MTpsb2NrCisgICAga2FsX2Jvb2wgYXR0YWNoX3R5cGU7Ly8wOiBubyBhdHRhY2gvZGV0YWNoOzE6YXR0YWNoIHdoZW4gbGNvay9kZXRhY2ggd2hlbiB1bmxvY2sKK30gYXRwX2w0Ym53X3NpbV9sb2NrX3JlcV9zdHJ1Y3Q7IC8vYWxpZ24gdG8gYXRwX2w0Ym53X3NpbV9sb2NrX3JlcV9zdHJ1Y3QKKy8qIE1TR19JRF9BVFBfTDRCTldfU0lNX0xPQ0tfQ05GICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIgICAgCisgICAga2FsX2Jvb2wgcmVzdWx0OworfSBhdHBfbDRibndfc2ltX2xvY2tfY25mX3N0cnVjdDsgLy9hbGlnbiB0byBhdHBfbDRibndfc2ltX2xvY2tfY25mX3N0cnVjdAorCisvL01TR19JRF9BVFBfTDRCU0JQX0FUX0NIX0xPQ0tfUkVRLyBNU0dfSURfQVRQX0w0QlNCUF9BVF9DSF9VTkxPQ0tfUkVRCit0eXBlZGVmIHN0cnVjdCAKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorfSBhdHBfbDRic2JwX2F0X2NoX2xvY2tfcmVxX3N0cnVjdCwgYXRwX2w0YnNicF9hdF9jaF91bmxvY2tfcmVxX3N0cnVjdCwgbDVpb19sNGJzYnBfYXRfY2hfbG9ja19yZXFfc3RydWN0LCBsNWlvX2w0YnNicF9hdF9jaF91bmxvY2tfcmVxX3N0cnVjdDsKKworLy9NU0dfSURfQVRQX0w0QlNCUF9BVF9DSF9MT0NLX0NORi8gTVNHX0lEX0FUUF9MNEJTQlBfQVRfQ0hfVU5MT0NLX0NORgordHlwZWRlZiBzdHJ1Y3QgCit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwOiBmYWlsLCAxOiBzdWNjZXNzCit9IGF0cF9sNGJzYnBfYXRfY2hfbG9ja19jbmZfc3RydWN0LCBhdHBfbDRic2JwX2F0X2NoX3VubG9ja19jbmZfc3RydWN0LCBsNWlvX2w0YnNicF9hdF9jaF9sb2NrX2NuZl9zdHJ1Y3QsIGw1aW9fbDRic2JwX2F0X2NoX3VubG9ja19jbmZfc3RydWN0OworCisvL01TR19JRF9MNUlPX0w0QlNCUF9TQlBfSURfQ0hBTkdFX0lORAordHlwZWRlZiBzdHJ1Y3QgCit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDMyIHNicF9pZDsKK30gbDVpb19sNGJzYnBfc2JwX2lkX2NoYW5nZV9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIgICAgCisgICAgYXRwX2NoYW5uZWxfZW51bSBjaF9pZDsKKyAgICBhdHBfY21kX21vZGVfZW51bSBjbWRfbW9kZTsKKyAgICBrYWxfdWludDggZnVuOworICAgIGthbF91aW50OCBjYXVzZTsgICAgCit9IGF0cF9sNGJwd3JfZWZ1bl9yZXFfc3RydWN0OworCit0eXBlZGVmIGF0cF9sNGJfYXRfY21kX2NuZl9zdHJ1Y3QgYXRwX2w0YnB3cl9lZnVuX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUiAgICAKKyAgICBhdHBfY2hhbm5lbF9lbnVtIGNoX2lkOworICAgIGF0cF9jbWRfbW9kZV9lbnVtIGNtZF9tb2RlOworICAgIGthbF91aW50OCBmdW47CisgICAga2FsX3VpbnQ4IHJzdDsKK30gYXRwX2w0YnB3cl9jZnVuX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgYXRwX2w0Yl9hdF9jbWRfY25mX3N0cnVjdCBhdHBfbDRicHdyX2NmdW5fY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSICAgIAorICAgIGF0cF9jaGFubmVsX2VudW0gY2hfaWQ7Cit9IGF0cF9sNGJwd3JfZXBvZl9yZXFfc3RydWN0OworCit0eXBlZGVmIGF0cF9sNGJfYXRfY21kX2NuZl9zdHJ1Y3QgYXRwX2w0YnB3cl9lcG9mX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGF0cF9jaGFubmVsX2VudW0gY2hfaWQ7Cit9IGF0cF9sNGJwd3JfZ2V0X25yX3BzX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGF0cF9jaGFubmVsX2VudW0gY2hfaWQ7CisgICAga2FsX3VpbnQ4ICAgICAgICB0YXJnZXRfbnJfcHM7ICAgICAgICAgLy8gYml0bWFwIGZvciBwcm90b2NvbHMgd2hpY2ggY2FuIGNvbm5lY3QgTlIKK30gYXRwX2w0YnB3cl9zZXRfbnJfcHNfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBhdHBfbDRiX2F0X2NtZF9jbmZfc3RydWN0IGF0cF9sNGJwd3JfZ2V0X25yX3BzX2NuZl9zdHJ1Y3Q7Cit0eXBlZGVmIGF0cF9sNGJfYXRfY21kX2NuZl9zdHJ1Y3QgYXRwX2w0YnB3cl9zZXRfbnJfcHNfY25mX3N0cnVjdDsKKworI2VuZGlmIC8qIF9MNEJfQVRQX1NUUlVDVF9IICovCisKKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvYXRwX2w0Y19zdHJ1Y3QuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2F0cF9sNGNfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThmMTFmYQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2F0cF9sNGNfc3RydWN0LmgKQEAgLTAsMCArMSwxOTMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBhdHBfbDRjX3N0cnVjdC5oCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAgICAgICAgICAgICBISVNUT1JZCisgKiBCZWxvdyB0aGlzIGxpbmUsIHRoaXMgcGFydCBpcyBjb250cm9sbGVkIGJ5IFBWQ1MgVk0uIERPIE5PVCBNT0RJRlkhIQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVXBwZXIgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworCisjaWZuZGVmIF9BVFBfTDRDX1NUUlVDVF9ICisjZGVmaW5lIF9BVFBfTDRDX1NUUlVDVF9ICisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgImF0cF9wdWJsaWNfZGVmcy5oIgorI2lmIGRlZmluZWQoX19JTVNfU1VQUE9SVF9fKSAmJiAoX19XRkNfU1VQUE9SVF9fKSAmJiBkZWZpbmVkKF9fQUxMT1dfQ0FMTF9EVVJJTkdfU01TX0lOX09USEVSX1NUQUNLX18pICYmIGRlZmluZWQoX19HRU1JTklfXykKKyNpbmNsdWRlICJpbXNfY29tbW9uX2RlZi5oIgorI2VuZGlmCisKKworLyogTVNHX0lEX0FUUF9MNENfRU4zR1BFQ1BfUkVRICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBhdHBfY21kX21vZGVfZW51bSBjbWRfbW9kZTsKKyAgICBrYWxfdWludDggdXJjX3JlcG9ydF9tb2RlOworfSBhdHBfbDRjX2VuM2dwZWNwX3JlcV9zdHJ1Y3Q7CisKKy8qIE1TR19JRF9BVFBfTDRDX0VOM0dQRUNQX0NORiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgYXRwX2NtZF9tb2RlX2VudW0gY21kX21vZGU7CisgICAga2FsX3VpbnQ4IG4zZW5faW5kaWNhdG9yOworICAgIHByb3h5X2NtZF9yZXN1bHRfZW51bSByZXN1bHQ7Cit9IGF0cF9sNGNfZW4zZ3BlY3BfY25mX3N0cnVjdDsKKworLyogTVNHX0lEX0FUUF9MNENfQU5CUl9SRVEgKi8KK3R5cGVkZWYgc3RydWN0eworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGViaTsKKwkvLyBvdmVyIE5SOiB3aGVuIGViaSA9IDAsIHJlZmVyIHRvIHBzaSBhbmQgcWZpCisgICAga2FsX3VpbnQ4IHBzaTsKKyAgICBrYWxfdWludDggcWZpOwkKKyAgICBrYWxfYm9vbCBpc191bDsKKyAgICBrYWxfdWludDMyIGJpdHJhdGU7Cit9IGF0cF9sNGNfYW5icl9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgYXRwX2NoYW5uZWxfZW51bSBjaF9pZDsKKyAgICB2Z19vcHRpb25fZW51bSB2Z19vcHRpb247CisgICAgYXRwX2NtZF9tb2RlX2VudW0gY21kX21vZGU7CisgICAgcHJveHlfY21kX3Jlc3VsdF9lbnVtIHJlc3VsdDsKK30gYXRwX2w0Y19lNWdvcHRfY25mX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgYXRwX2NoYW5uZWxfZW51bSBjaF9pZDsKKyAgICBrYWxfdWludDggdmdfb3B0aW9uOworICAgIGthbF91aW50OCBhY3Rfb3BlcmF0aW9uOworfSBhdHBfbDRjX2U1Z29wdF9yZXFfc3RydWN0OworCisvKiBNU0dfSURfQVRQX0w0Q19DU0ZCX1BBR0VfUkVRICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY3NmYl9wYWdlX3JlcTsKKyAgICBrYWxfdWludDggYWRkX2luZm87IC8vIGlmIGNzZmJfcGFnZV9jb25maWcgaXMgMyBvciA0LCBhZGRfaW5mbyB3aWxsIGJlIHRoZSBuZXcgdGltZXIgdmFsdWUKK30gYXRwX2w0Y19jc2ZiX3BhZ2VfcmVxX3N0cnVjdDsKKworI2lmIGRlZmluZWQoX19JTVNfU1VQUE9SVF9fKSAmJiAoX19XRkNfU1VQUE9SVF9fKSAmJiBkZWZpbmVkKF9fQUxMT1dfQ0FMTF9EVVJJTkdfU01TX0lOX09USEVSX1NUQUNLX18pICYmIGRlZmluZWQoX19HRU1JTklfXykKK3R5cGVkZWYgc3RydWN0Cit7CisJTE9DQUxfUEFSQV9IRFIKKwlpbXNfYWNjZXNzX3JhdF9lbnVtIHRhcmdldF9yYXQ7Cit9IGF0cF9sNGNfY2FsbF9oYW5kb3Zlcl9pbmRfc3RydWN0OworI2VuZGlmCisKKworI2VuZGlmIC8qIF9BVFBfTDRDX1NUUlVDVF9IICovCisKKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvYXRwX3Ntc19zdHJ1Y3QuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2F0cF9zbXNfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYyNjQyYwotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2F0cF9zbXNfc3RydWN0LmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBhdHBfc21zX3N0cnVjdC5oCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAgICAgICAgICAgICBISVNUT1JZCisgKiBCZWxvdyB0aGlzIGxpbmUsIHRoaXMgcGFydCBpcyBjb250cm9sbGVkIGJ5IFBWQ1MgVk0uIERPIE5PVCBNT0RJRlkhIQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBVcHBlciB0aGlzIGxpbmUsIHRoaXMgcGFydCBpcyBjb250cm9sbGVkIGJ5IFBWQ1MgVk0uIERPIE5PVCBNT0RJRlkhIQorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKyNpZm5kZWYgX0FUUF9TTVNfU1RSVUNUX0gKKyNkZWZpbmUgX0FUUF9TTVNfU1RSVUNUX0gKKworI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAiYXRwX3B1YmxpY19kZWZzLmgiCisKKworCisvKiBNU0dfSURfQVRQX1NNU19DNUdVU01TX1JFUSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgYXRwX2NoYW5uZWxfZW51bSBjaF9pZDsKKwlhdHBfY21kX21vZGVfZW51bSBjbWRfbW9kZTsKKwlrYWxfdWludDggc21zX3JlcXVlc3RlZDsKK30gYXRwX3Ntc19zdGF0dXNfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgYXRwX2NoYW5uZWxfZW51bSBjaF9pZDsKKwlhdHBfY21kX21vZGVfZW51bSBjbWRfbW9kZTsKKyAgICBwcm94eV9jbWRfcmVzdWx0X2VudW0gcmVzdWx0OworCWthbF91aW50OCBzbXNfYXZhaWxhYmxlOworICAgIGthbF91aW50OCBzbXNfYWxsb3dlZDsKK30gYXRwX3Ntc19zdGF0dXNfY25mX3N0cnVjdDsKKworCisvKgorICogIChvbmx5IGV4aXN0IGluIG5vbi1JTVMgcHJvamVjdCkKKyAqICBNU0dfSURfQVRQX1NNU19TVEFUVVNfVVJDX0lORAorICogICAgICAgK0M1R1VTTVM6IDxzbXNfYXZhaWxhYmxlPiwgPHNtc19hbGxvd2VkPgorICovCit0eXBlZGVmIHN0cnVjdCAKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgc21zX2F2YWlsYWJsZTsgICAgCisgICAga2FsX3VpbnQ4ICBzbXNfYWxsb3dlZDsKK30gYXRwX3Ntc19zdGF0dXNfdXJjX2luZF9zdHJ1Y3Q7IAorCisKKyNlbmRpZiAvKiBfQVRQX1NNU19TVFJVQ1RfSCAqLworCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2F0cF9zbXNhbF9zdHJ1Y3QuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2F0cF9zbXNhbF9zdHJ1Y3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmQ2ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvYXRwX3Ntc2FsX3N0cnVjdC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBhdHBfc21zYWxfc3RydWN0LmgKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICAgICAgICAgICAgIEhJU1RPUlkKKyAqIEJlbG93IHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogcmVtb3ZlZCEKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVXBwZXIgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworCisjaWZuZGVmIF9BVFBfU01TQUxfU1RSVUNUX0gKKyNkZWZpbmUgX0FUUF9TTVNBTF9TVFJVQ1RfSAorCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJhdHBfcHVibGljX2RlZnMuaCIKKworCisvKiBNU0dfSURfQVRQX1NNU0FMX0M1R1NNU19SRVEgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCWF0cF9jaGFubmVsX2VudW0gY2hfaWQ7CisJYXRwX2NtZF9tb2RlX2VudW0gY21kX21vZGU7CisJa2FsX3VpbnQ4IHNlcnZpY2U7Cit9IGF0cF9zbXNhbF9jNWdzbXNfcmVxX3N0cnVjdDsKKworLyogTVNHX0lEX0FUUF9TTVNBTF9DNUdTTVNfQ05GICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKwlhdHBfY2hhbm5lbF9lbnVtIGNoX2lkOworICAgIGF0cF9jbWRfbW9kZV9lbnVtIGNtZF9tb2RlOworICAgIHByb3h5X2NtZF9yZXN1bHRfZW51bSByZXN1bHQ7CisgICAga2FsX3VpbnQ4IHNlcnZpY2U7Cit9IGF0cF9zbXNhbF9jNWdzbXNfY25mX3N0cnVjdDsKKworCisjZW5kaWYgLyogX0FUUF9TTVNBTF9TVFJVQ1RfSCAqLworCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2NzbWNjX2F0ZnVuYy5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvY3NtY2NfYXRmdW5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVhZDYyYgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2NzbWNjX2F0ZnVuYy5oCkBAIC0wLDAgKzEsNDM4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKgljc21jY19hdGZ1bmMuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNQVVJCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgVGhpcyBmaWxlIGlzIGludGVuZHMgZm9yIGV4cG9ydGluZyBmdW5jdGlvbiBkZWNsYXJhdGlvbiB1c2VkIGJ5IEw0QyBtb2R1bGUuCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAJCQkJSElTVE9SWQorICogQmVsb3cgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEgCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBVcHBlciB0aGlzIGxpbmUsIHRoaXMgcGFydCBpcyBjb250cm9sbGVkIGJ5IFBWQ1MgVk0uIERPIE5PVCBNT0RJRlkhISAKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogIFRoaXMgcHJvZHVjdCBoYXMgYmVlbiBkZXZlbG9wZWQgdXNpbmcgYSBwcm90b2NvbCBzdGFjaworKiAgZGV2ZWxvcGVkIGJ5IFNhc2tlbiBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBMaW1pdGVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0NTTUNDX0FURlVOQ19ICisjZGVmaW5lIF9DU01DQ19BVEZVTkNfSAorCisvLyNpbmNsdWRlICJrYWxfbm9uX3NwZWNpZmljX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19zdHJ1Y3QuaCIKKwordHlwZWRlZiBzdHJ1Y3QgbDRjX2NhbGxfZW50cnlfc3RydWN0Cit7CisgICBrYWxfdWludDggc3JjX2lkOworICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICBrYWxfdWludDggY2FsbF9vcmlnOworICAga2FsX3VpbnQ4IGNhbGxfc3RhdGU7CisgICBrYWxfdWludDggY2FsbF9tb2RlOworICAga2FsX3VpbnQ4IGNhbGxfdHlwZTsKKyAgIGthbF91aW50OCBtcHR5OworICAgbDRfYWRkcl9iY2Rfc3RydWN0IG51bWJlcjsKKyAgIGthbF91aW50OCBwcmlvcml0eTsKKworICAga2FsX3VpbnQ4IG51bWJlcl90eXBlOworICAga2FsX2Jvb2wgYWxwaGFfcHJlc2VudDsKKyAgIGthbF9jaGFyIGFscGhhW01BWF9QU19OQU1FX1NJWkUgKyAxXTsgLy8gTUFYX1BTX05BTUVfU0laRTogNDIKKyAgIGthbF9ib29sIHVyaV9wcmVzZW50OworICAga2FsX2NoYXIgdXJpW01BWF9TSVBfVVJJX0xFTl07CisgICBrYWxfYm9vbCBjbGlfcHJlc2VudDsKKyAgIGthbF91aW50OCBjbGk7CisgICBrYWxfdWludDggY2xpX3ZhbGlkaXR5OworfSBsNGNfY2FsbF9lbnRyeV9zdHJ1Y3Q7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfZ2V0X2NhbGxfaW5mbyAoCisgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBjYWxsX2lkLAorICAgICAgICAgICAgICAgICAgICAgICBsNGNfY2FsbF9lbnRyeV9zdHJ1Y3QgKmNhbGxfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpuZXh0X2NhbGxfaWQpOworICAgICAgICAgICAgICAgICAgICAgICAKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfZ2V0X2FjbSgKKyAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQzMiAqYWNtLAorICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyICphY21tYXgpOworICAgICAgICAgICAgICAgICAgICAgICAKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfZ2V0X2NjbSgKKyAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNhbGxfaWQsCisgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MzIgKmNjbSk7CisKK2V4dGVybiBrYWxfYm9vbCAKK2w0Y2NzbV9jY19nZXRfZGF0YV9yYXRlKGthbF91aW50MzIgKnJhdGUpOworCitleHRlcm4ga2FsX2Jvb2wgCitsNGNjc21fY2NfZ2V0X2RhdGFfY2FsbF9pbmZvKGthbF91aW50OCAqZGF0YV9jYWxsX3R5cGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX2dldF9tdF9jYWxsKAorICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmNhbGxfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX2dldF9pbl9jYWxsKAorICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmNhbGxfaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorZXh0ZXJuIGthbF9ib29sICBsNGNjc21fY2NfZ2V0X291dGdvaW5nX2NhbGwoa2FsX3VpbnQ4ICpjYWxsX2lkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfZ2V0X2FjdGl2ZV9jYWxsKAorICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmNhbGxfaWQpOworICAgICAgICAgICAgICAgICAgICAgIAorZXh0ZXJuIGthbF9ib29sIGw0Y2NzbV9jY19zZXRfYWRkcl90eXBlKAorICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggYWRkcl90eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX2dldF9hZGRyX3R5cGUoCisgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqYWRkcl90eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgCisjaWYgMCAKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZiAvL1tNQVVJXzAwNzM2NDY3XSAgCisKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2Nfc2V0X2NhbGxfbW9kZSAoCisgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBjYWxsX21vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfZ2V0X2NhbGxfbW9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpjYWxsX21vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfdGVzdF9jYWxsX21vZGUoa2FsX3VpbnQ4IGNvbnN0ICoqc3VwcF9wdHIpOworICAgICAgICAgICAgICAgICAgICAgICAKK2V4dGVybiBrYWxfYm9vbCBjc21jY19jaGVja19jYnN0X3BhcmFfc3VwcG9ydGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggYmVhcmVyX3NwZWVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggYmVhcmVyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBiZWFyZXJfY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF9ib29sIG5lZWRfY2hlY2tfZmF4KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y2NzbV9jY19zZXRfYmVhcmVyX3NlcnZpY2VfdHlwZSAoCisgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBiZWFyZXJfc3BlZWQsCisgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBiZWFyZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGJlYXJlcl9jZSk7CisKKyNpZiAwIC8qbXRrMDE2MDIsIDA3MDYwNiovCisjaWZkZWYgX19TQVRDRV9fCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisjZW5kaWYKKyNlbmRpZiAvKm10azAxNjAyLCAwNzA2MDYqLworZXh0ZXJuIGthbF9ib29sIGw0Y2NzbV9jY19nZXRfYmVhcmVyX3NlcnZpY2VfdHlwZSAoCisgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqYmVhcmVyX3NwZWVkLAorICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmJlYXJlcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmJlYXJlcl9jZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfdGVzdF9iZWFyZXJfc2VydmljZV90eXBlKGthbF91aW50OCBjb25zdCAqKnN1cHBfcHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX3NldF9zbnNfbW9kZSAoCisgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzbnNfbW9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgIAorZXh0ZXJuIGthbF9ib29sIGw0Y2NzbV9jY19nZXRfc25zX21vZGUgKAorICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnNuc19tb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX3Rlc3Rfc25zX21vZGUoa2FsX3VpbnQ4IGNvbnN0ICoqc3VwcF9wdHIpOworICAgICAgICAgICAgICAgICAgICAgICAKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2Nfc2V0X2NoYXJfZnJhbWluZyAoCisgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBjZl9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBjZl9wYXJpdHkpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX2dldF9jaGFyX2ZyYW1pbmcgKAorICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmNmX2Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpjZl9wYXJpdHkpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX3Rlc3RfY2hhcl9mcmFtaW5nKGthbF91aW50OCBjb25zdCAqKnN1cHBfcHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2Nfc2V0X3YxMjBfcGFyYW0gKAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB2MTIwX3JhaCwKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdjEyMF9tZm0sCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHYxMjBfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdjEyMF9sbGluZWcsCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHYxMjBfYXNzaWduLAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB2MTIwX25lZ3R5cGUpOworICAgICAgICAgICAgICAgICAgICAgIAorZXh0ZXJuIGthbF9ib29sIGw0Y2NzbV9jY19nZXRfdjEyMF9wYXJhbSAoCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICp2MTIwX3JhaCwKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnYxMjBfbWZtLAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqdjEyMF9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqdjEyMF9sbGluZWcsCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICp2MTIwX2Fzc2lnbiwKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnYxMjBfbmVndHlwZSk7ICAgICAgICAgICAgICAgICAgICAgIAorCisjaWYgMCAgICAgICAgICAgICAgICAgICAgICAgIAorLyogdW5kZXIgY29uc3RydWN0aW9uICEqLworI2VuZGlmIC8vW01BVUlfMDA3MzY0NjddCisKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2Nfc2V0X3JscF9wYXJhbSAoCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJscF9pd3MsCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJscF9td3MsCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJscF9UMSwKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcmxwX04yLAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBybHBfdmVyLAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBybHBfVDQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX2dldF9ybHBfcGFyYW0gKAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcmxwX2l3cywKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnJscF9td3MsCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiAqcmxwX1QxLAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcmxwX04yLAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcmxwX3ZlciwKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnJscF9UNCk7CisgICAgICAgICAgICAgICAgICAgICAgCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX3Rlc3RfcmxwX3BhcmFtKGthbF91aW50OCBjb25zdCAqKnN1cHBfcHRyKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y2NzbV9jY19zZXRfZGF0YV9jb21wcmVzc2lvbl9wYXJhbSAoCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGRpciwKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbmVnb3RpYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBtYXhfZGljdCwKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbWF4X3N0cmluZyk7CisgICAgICAgICAgICAgICAgICAgICAgCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX2dldF9kYXRhX2NvbXByZXNzaW9uX21vZGUoCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpkaXIsCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpuZWdvdGlhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2ICptYXhfZGljdCwKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKm1heF9zdHJpbmcpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX3Rlc3RfZGF0YV9jb21wcmVzc2lvbl9wYXJhbShrYWxfdWludDggY29uc3QgKipzdXBwX3B0cik7CisgICAgICAgICAgICAgICAgICAgICAgCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX3Rlc3RfYW9jX21vZGUoa2FsX3VpbnQ4IGNvbnN0ICoqc3VwcF9wdHIpOworICAgICAgICAgICAgICAgICAgICAgIAorZXh0ZXJuIGthbF9ib29sIGw0Y2NzbV9jY19zZXRfY3VnX3BhcmFtICgKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggY3VnX3RlbXBvcmFyeV9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBjdWdfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGN1Z19zdXBwcmVzcyk7CisgICAgICAgICAgICAgICAgICAgICAgCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX2dldF9jdWdfcGFyYW0gKAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqY3VnX3RlbXBvcmFyeV9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqY3VnX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqY3VnX3N1cHByZXNzKTsKKyNpZiAwICAgICAgICAgICAgICAgICAgICAgICAKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZiAvL1tNQVVJXzAwNzM2NDY3XQorCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX3NldF9mY2xhc3NfbW9kZSgKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggZmNsYXNzX21vZGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX2dldF9mY2xhc3NfbW9kZSgKKyAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmZjbGFzc19tb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfdGVzdF9mY2xhc3NfbW9kZShrYWxfdWludDggY29uc3QgKipzdXBwX3B0cik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfdGVzdF9jaGxkX21vZGUoa2FsX3VpbnQ4IGNvbnN0ICoqc3VwcF9wdHIpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX3Rlc3RfdnRzX21vZGUoa2FsX3VpbnQ4IGNvbnN0ICoqc3VwcF9wdHIpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX3Rlc3RfY3Bhc19tb2RlKGthbF91aW50OCBjb25zdCAqKnN1cHBfcHRyKTsKKworZXh0ZXJuIGthbF91aW50OCBjc21jY19nZXRfbGluZV9pZCh2b2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y2NzbV9jY19zZXRfY3RtX3N0YXR1cyhrYWxfdWludDggY3RtX3N0YXR1cyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2Nfc2V0X2NhbGxfY2FwYWJpbGl0eShrYWxfdWludDMyIGNhcGFiaWxpdHkpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjY3NtX2NjX3NldF9pd2Yoa2FsX3VpbnQ4IGl3Zik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfZ2V0X2l3ZihrYWxfdWludDggKiBpd2YpOworICAgICAgICAgICAgICAgICAgICAgIAorZXh0ZXJuIGthbF9ib29sIGw0Y2NzbV9jY19nZXRfaG9sZF9jYWxsKGthbF91aW50OCAqY2FsbF9pZCk7CisJCQkKK2V4dGVybiBrYWxfYm9vbCBjaGVja19jYWxsX2V4aXN0X2luX2VpdGhlcl9TSU0oa2FsX3VpbnQ4IHdoaWNoX3NpbSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2Nfc2V0X3JhdF9tb2RlKGthbF91aW50OCByYXRfbW9kZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfbXRfY2FsbF9ub3RfYXBwcm92ZWQoa2FsX3VpbnQ4IGNhbGxfaWQpOworCisvKiBNQVVJXzAxNjE4ODY5IENTTSBwcm92aWRlIGw0Y2NzbV9jY19nZXRfQ1NNX2NhbGxfaWQgZnVuY3Rpb24gKi8KK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2NfZ2V0X0NTTV9jYWxsX2lkKGthbF91aW50OCogY2FsbF9pZF9wdHIpOworCitleHRlcm4ga2FsX3VpbnQ4IGNzbWNjX2dldF9jbGNjX21vZGUoa2FsX3VpbnQ4IGNhbGxfaWQpOworCitleHRlcm4gdm9pZCBjc21jY19maW5kX25leHRfY2FsbChrYWxfdWludDggY2FsbF9pZCwga2FsX3VpbnQ4ICpuZXh0X2NhbGxfaWQpOworCitrYWxfdWludDE2IGw0Y2NzbV9jY19jdHJsX2J5X3NpbV9yZXBsYWNlX2NhdXNlKGthbF91aW50OCBjYWxsX2lkLCBrYWxfdWludDE2IGNhdXNlKTsKKworZXh0ZXJuIHZvaWQgbDRjY3NtX2NjX3NldF9jbGlfdmFsaWRpdHkoa2FsX3VpbnQ4IGNhbGxfaWQsIGthbF91aW50OCBjbGlfdmFsaWRpdHkpOworCitleHRlcm4ga2FsX3VpbnQ4IGw0Y2NzbV9jY19nZXRfZW1lcmdlbmN5X2NhbGxfaWQodm9pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNjc21fY2hlY2tfU0lNX2ludGVyZmFjZV9mb3JfY3NfY2FsbChrYWxfdWludDggc2ltX2luZGV4KTsKKworI2VuZGlmIC8qIF9DU01DQ19FWFRfRlVOQ19IICovCisKKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvZGRtX2V2YWxfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9kZG1fZXZhbF9zdHJ1Y3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjBhYTU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvZGRtX2V2YWxfc3RydWN0LmgKQEAgLTAsMCArMSwxMjYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBkZG1fZXZhbF9zdHJ1Y3QuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICAKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAgCisgKiAgIAorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDEwIDIyIDIwMjAgeGluY2h1bi5ndW8KKyAqIFtNT0xZMDA1ODIxNjFdIEVNTbSlt6JERE22z7+qaW50ZXJuZXQgUEROIGZvciBnYXJiYWdlIHBhZ2luZyBmZWF0dXJlCisgKiAJCisgKiAJLgorICoKKyAqIDEwIDIyIDIwMjAgeGluY2h1bi5ndW8KKyAqIFtNT0xZMDA1ODIxNjFdIEVNTbSlt6JERE22z7+qaW50ZXJuZXQgUEROIGZvciBnYXJiYWdlIHBhZ2luZyBmZWF0dXJlCisgKiAJCisgKiAJLgorICoKKyAqIDEwIDIyIDIwMjAgeGluY2h1bi5ndW8KKyAqIFtNT0xZMDA1ODIxNjFdIEVNTbSlt6JERE22z7+qaW50ZXJuZXQgUEROIGZvciBnYXJiYWdlIHBhZ2luZyBmZWF0dXJlCisgKiAuCisgKgorICogMTAgMjIgMjAyMCB4aW5jaHVuLmd1bworICogW01PTFkwMDU4MjE2MV0gRU1NtKW3okRETbbPv6ppbnRlcm5ldCBQRE4gZm9yIGdhcmJhZ2UgcGFnaW5nIGZlYXR1cmUKKyAqIAkKKyAqIAkuCisgKgorICogMDUgMTUgMjAxOCBkZW5uaXMudHNhaQorICogW01PTFkwMDMyNjAxNF0gW0dlbjk1XVtNU1BNXSBTVyBjaGFuZ2VzIGNoZWNrIGluIFVNT0xZRQorICogYWRkIE1TUE0gZmVhdHVyZSBmb3IgRERNLgorICoKKyAqIDAyIDEzIDIwMTggZGVubmlzLnRzYWkKKyAqIFtNT0xZMDAzMDcyNzFdIFtVTU9MWUVdW3RvcF3jgJDlvankv6HjP5Horr7ljT8x5Li65Li75Y2h77yM55So55S15L+h5Y2hMuWPkeW9qeS/oeWPkeS4jeWHuuWOPworICogYWRkIGRkbV9ldmFsIG1tcyBwZG4gc3RhcnQvc3RvcCBjb250cm9sLgorICoKKyAqIDAxIDE1IDIwMTggemFueWEucGVuZworICogW01PTFkwMDMwMjQwOF0gW1ppb25dW01UNjczOV1bTzFdW01QMl1bUkRJVF1bVnpXXVtMVEVdW0RSXVs1LjVfSU1TUm9hbV1SUkNDb25uZWN0aW9uUmVxdWVzdCBUaW1lT3V0IHdoZW4gVDM0MTcgMTB0aCBleHBpcmVkLgorICogCQorICogCS4KKyAqCisgKiAxMCAzMCAyMDE3IGRlbm5pcy50c2FpCisgKiBhZGQgdDMzNDYgZmVhdHVyZS4KKyAqIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgIF9ERE1fRVZBTF9TVFJVQ1RfSAorI2RlZmluZSAgX0RETV9FVkFMX1NUUlVDVF9ICisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfZGVmcy5oIgorCisjaW5jbHVkZSAiYXRjbWRfc3RydWN0LmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKworI2luY2x1ZGUgInBzX3B1YmxpY19zdHJ1Y3QuaCIKKwordHlwZWRlZiBlbnVtCit7CisJVF9UMzM0NiwKKwlUX1RIUk9UVExJTkcKKworfWRkbV9ldmFsX2JhY2tvZmZfdGltZXJfaWRfZW51bTsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBhdF9jYWJ0c3JpX2luZF9zdHJ1Y3QgY2FidHNyaV9pbmQ7CisJZGRtX2V2YWxfYmFja29mZl90aW1lcl9pZF9lbnVtIGJhY2tvZmZfdGltZXJfaWQ7CisKK30gZGRtX2V2YWxfY2FidHNyaV9pbmRfc3RydWN0IDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKK30gZGRtX2V2YWxfcGFnaW5nX3Byb3RlY3RlZF90aW1lcl9tYXhfaW5kX3N0cnVjdCA7CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9kZG1fbDRhcHNfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9kZG1fbDRhcHNfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQwNjY5NgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2RkbV9sNGFwc19zdHJ1Y3QuaApAQCAtMCwwICsxLDMxOCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGRkbV9sNGFwc19zdHJ1Y3QuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICAKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAgCisgKiAgIAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgIF9ERE1fTDRBUFNfU1RSVUNUX0gKKyNkZWZpbmUgIF9ERE1fTDRBUFNfU1RSVUNUX0gKKworI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiCisKKyNpbmNsdWRlICJkZG1fY29tbW9uX3N0cnVjdC5oIgorI2luY2x1ZGUgImF0Y21kX3N0cnVjdC5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19lbnVtLmgiCisKKyNpbmNsdWRlICJwc19wdWJsaWNfc3RydWN0LmgiCisjaW5jbHVkZSAibWNkX2wzX2luY19zdHJ1Y3QuaCIKKworI2luY2x1ZGUgImw0YXBzX2w0YnBkbl9zdHJ1Y3QuaCIKKyNpbmNsdWRlICJsNGFwc19wdWJsaWNfZW51bS5oIgorCisjaWYgMSAvKiBNU0c6IERETSAtPiBMNEFQUyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgIE1TRzogRERNIC0+IEw0QVBTOiBTdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jbWRfY29tbW9uX2hlYWRlcl9yZXFfc3RydWN0ICAgICBkZG1fbDRhcHNfY21kX2NvbW1vbl9oZWFkZXJfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fbndfYXBwbGllZF9jYWNoZV9kYXRhX25vdGlmeV9zdHJ1Y3QgICAgIGRkbV9sNGFwc19ud19hcHBsaWVkX2NhY2hlX2RhdGFfbm90aWZ5X3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dkY29udF9yZXFfc3RydWN0ICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnZGNvbnRfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dkc2NvbnRfcmVxX3N0cnVjdCAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnZHNjb250X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NndGZ0X3JlcV9zdHJ1Y3QgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ3RmdF9yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ3FyZXFfcmVxX3N0cnVjdCAgICAgICAgICAgICAgICBkZG1fbDRhcHNfY2dxcmVxX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NncW1pbl9yZXFfc3RydWN0ICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ3FtaW5fcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dlcXJlcV9yZXFfc3RydWN0ICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnZXFyZXFfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dlcW1pbl9yZXFfc3RydWN0ICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnZXFtaW5fcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dlcW5lZ19yZXFfc3RydWN0ICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnZXFuZWdfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dhY3RfcmVxX3N0cnVjdCAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnYWN0X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NnY21vZF9yZXFfc3RydWN0ICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ2Ntb2RfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dwYWRkcl9yZXFfc3RydWN0ICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NncGFkZHJfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dhdXRvX3JlcV9zdHJ1Y3QgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnYXV0b19yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ2Fuc19yZXFfc3RydWN0ICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfY2dhbnNfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dlcmVwX3JlcV9zdHJ1Y3QgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnZXJlcF9yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ2NvbnRyZHBfcmVxX3N0cnVjdCAgICAgICAgICAgICBkZG1fbDRhcHNfY2djb250cmRwX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2Nnc2NvbnRyZHBfcmVxX3N0cnVjdCAgICAgICAgICAgIGRkbV9sNGFwc19jZ3Njb250cmRwX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NndGZ0cmRwX3JlcV9zdHJ1Y3QgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ3RmdHJkcF9yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ2Vxb3NfcmVxX3N0cnVjdCAgICAgICAgICAgICAgICBkZG1fbDRhcHNfY2dlcW9zX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NnZXFvc3JkcF9yZXFfc3RydWN0ICAgICAgICAgICAgIGRkbV9sNGFwc19jZ2Vxb3NyZHBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fYzVncW9zX3JlcV9zdHJ1Y3QgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2M1Z3Fvc19yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jNWdxb3NyZHBfcmVxX3N0cnVjdCAgICAgICAgICAgICBkZG1fbDRhcHNfYzVncW9zcmRwX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NnZGVsX3JlcV9zdHJ1Y3QgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ2RlbF9yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ2F1dGhfcmVxX3N0cnVjdCAgICAgICAgICAgICAgICBkZG1fbDRhcHNfY2dhdXRoX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NsYWRuX3JlcV9zdHJ1Y3QgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jbGFkbl9yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9lY25jZmdfcmVxX3N0cnVjdCAgICAgICAgICAgICAgICBkZG1fbDRhcHNfZWNuY2ZnX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VnZGNvbnRfcmVxX3N0cnVjdCAgICAgICAgICAgICAgIGRkbV9sNGFwc19lZ2Rjb250X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX3Z6d2FwbmV0bXJfcmVxX3N0cnVjdCAgICAgICAgICAgIGRkbV9sNGFwc192endhcG5ldG1yX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX3Z6d2FwbmVfcmVxX3N0cnVjdCAgICAgICAgICAgICAgIGRkbV9sNGFwc192endhcG5lX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VncGF1X3JlcV9zdHJ1Y3QgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19lZ3BhdV9yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9lZ2FjdF9yZXFfc3RydWN0ICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfZWdhY3RfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dzZGF0YV9yZXFfc3RydWN0ICAgICAgICAgICAgICAgZGRtX2w0YXBzX2Nnc2RhdGFfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fYWN0dGVzdF9yZXFfc3RydWN0ICAgICAgICAgICAgICAgZGRtX2w0YXBzX2FjdHRlc3RfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fcHNiZWFyZXJfcmVxX3N0cnVjdCAgICAgICAgICAgICAgZGRtX2w0YXBzX3BzYmVhcmVyX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VnZmJfcmVxX3N0cnVjdCAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19lZ2ZiX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VnZGVscGZfcmVxX3N0cnVjdCAgICAgICAgICAgICAgIGRkbV9sNGFwc19lZ2RlbHBmX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VnbG5rcGZfcmVxX3N0cnVjdCAgICAgICAgICAgICAgIGRkbV9sNGFwc19lZ2xua3BmX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VncGNvcmRwX3JlcV9zdHJ1Y3QgICAgICAgICAgICAgIGRkbV9sNGFwc19lZ3Bjb3JkcF9yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9lZ3Bjb19yZXFfc3RydWN0ICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfZWdwY29fcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dkYXRhX3JlcV9zdHJ1Y3QgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnZGF0YV9yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9lZ2xkX3JlcV9zdHJ1Y3QgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfZWdsZF9yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9lZGFsbG93X3JlcV9zdHJ1Y3QgICAgICAgICAgICAgICBkZG1fbDRhcHNfZWRhbGxvd19yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9sdGVfYXR0YWNoX3Bkbl9kZWZpbmVfbmVlZGVkX3JzcF9zdHJ1Y3QgICAgIGRkbV9sNGFwc19sdGVfYXR0YWNoX3Bkbl9kZWZpbmVfbmVlZGVkX3JzcF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX3NldF9kZWZhdWx0X3NpbV9pbmRfc3RydWN0ICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX3NldF9kZWZhdWx0X3NpbV9pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9zZXRfZWltc3JvYW1fY29uZmlnX3ZhbHVlX3JlcV9zdHJ1Y3QgICAgICAgIGRkbV9sNGFwc19zZXRfZWltc3JvYW1fY29uZmlnX3ZhbHVlX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NtZF9ub3RfeWV0X3N1cHBvcnRfcmVxX3N0cnVjdCAgICAgICAgICAgICAgZGRtX2w0YXBzX2NtZF9ub3RfeWV0X3N1cHBvcnRfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fZWFwbnN5bmNfcmVxX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfZWFwbnN5bmNfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fZXZ6d2FwZmNpYV9yZXFfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfZXZ6d2FwZmNpYV9yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9lZ2dybnRyc3B0X3JlcV9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19lZ2dybnRyc3B0X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VncGNhcF9yZXFfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2VncGNhcF9yZXFfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9ub3RpZnlfcGRuX3R5cGVfcmVxX3N0cnVjdCAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19ub3RpZnlfcGRuX3R5cGVfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fZXNjb250aW5kX2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfZXNjb250aW5kX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VzY29udGluZF9yZXFfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2VzY29udGluZF9yZXFfc3RydWN0OworCit0eXBlZGVmIGlhX2Fwbl9jaGFuZ2VfcmVxX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19pYV9hcG5fY2hhbmdlX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4IGFwX2NpZDsKKyAgICBrYWxfdWludDggZDJfY2lkOworfSBkZG1fbDRhcHNfdXBkYXRlX2NpZF9tYXBwaW5nX3JlcV9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICBNU0c6IERETSAtPiBMNEFQUzogRW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNlbmRpZiAKKworI2lmIDEgLyogTVNHOiBMNEFQUyAtPiBERE0gKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICBNU0c6IEw0QVBTIC0+IERETTogU3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIEEgZ2VuZXJhbCBwdXJwb3NlIEFULUNNRCBjb25maXJtIG1lc3NhZ2UgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9jbWRfY25mX3N0cnVjdCBjbWQ7CisKKyAgICAvKiBJbiB0aGUgYWJvdmUgZmllbGQgKGNtZCksIAorICAgICAqIGlmIGNtZC5pc19zdWNjZXNzID09IEtBTF9GQUxTRSwgdGhlIGNtZC5lcnJfY2F1c2UgaXMgYSBjb252ZXJ0ZWQgY2F1c2UgYWNjb3JkaW5nIHRvIDI3LjAwNy4gCisgICAgICogVGhlIGJlbG93IG9yaWdpbmFsX2NhdXNlIGlzIGFuICJ1bmNvbnZlcnRlZCIgY291bnRlcnBhcnQgZm9yIHJlZmVyZW5jZS4gKi8KKyAgICBrYWxfYm9vbCAgICAgICAgICBpc19vcmlnaW5hbF9jYXVzZV9mcm9tXzNncHBfcHJlc2VudDsgIC8qIFRydWU6IElmIChjbWQuaXNfc3VjY2VzcyA9PSBLQUxfRkFMU0UpIEFORCAoaXMgZnJvbSAzR1BQIE1EKSAqLworICAgIHBzX2NhdXNlX2VudW0gICAgIG9yaWdpbmFsX2NhdXNlX2Zyb21fM2dwcDsgICAgICAgICAgICAgLyogVmFsaWQgaWYgaXNfb3JpZ2luYWxfY2F1c2VfZnJvbV8zZ3BwX3ByZXNlbnQgPT0gS0FMX1RSVUUgKi8KKworICAgIGw0YXBzX3JldHJ5X3R5cGVfZW51bSByZXRyeV90eXBlOworfSBkZG1fbDRhcHNfY21kX2NuZl9zdHJ1Y3Q7CisKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dldl9pbmRfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfY2dldl9pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ2Rjb250X2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ2Rjb250X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NnZHNjb250X2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnZHNjb250X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NndGZ0X2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NndGZ0X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NncXJlcV9pbmRfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NncXJlcV9pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ3FtaW5faW5kX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ3FtaW5faW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dlcXJlcV9pbmRfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfY2dlcXJlcV9pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ2VxbWluX2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ2VxbWluX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NnZXFuZWdfaW5kX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnZXFuZWdfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dhY3RfaW5kX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfY2dhY3RfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dwYWRkcl9pbmRfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfY2dwYWRkcl9pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ2F1dG9faW5kX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ2F1dG9faW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2dlcmVwX2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfY2dlcmVwX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NnY29udHJkcF9pbmRfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnY29udHJkcF9pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ3Njb250cmRwX2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ3Njb250cmRwX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NndGZ0cmRwX2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NndGZ0cmRwX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NnZXFvc19pbmRfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnZXFvc19pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ2Vxb3NyZHBfaW5kX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ2Vxb3NyZHBfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fYzVncW9zX2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfYzVncW9zX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2M1Z3Fvc3JkcF9pbmRfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2M1Z3Fvc3JkcF9pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ2RlbF9pbmRfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ2RlbF9pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9jZ2F1dGhfaW5kX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19jZ2F1dGhfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2xhZG5faW5kX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfY2xhZG5faW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fY2xhZG51X2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfY2xhZG51X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX3BzYmVhcmVyX2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX3BzYmVhcmVyX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VnZmJfaW5kX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2VnZmJfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fZWdkZWxwZl9pbmRfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfZWdkZWxwZl9pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9lZ2xua3BmX2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19lZ2xua3BmX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VncGNvcmRwX2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2VncGNvcmRwX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VncGNvX2luZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2VncGNvX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2NnZGF0YV9jbmZfc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2NnZGF0YV9jbmZfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9lZ2xkX2NuZl9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgIGRkbV9sNGFwc19lZ2xkX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VnZXZfaW5kX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2VnZXZfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fbHRlX2F0dGFjaF9uZWVkZWRfaW5kX3N0cnVjdCAgICAgICAgICAgICAgICAgICAgICBkZG1fbDRhcHNfbHRlX2F0dGFjaF9uZWVkZWRfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fbHRlX2F0dGFjaF9wZG5fZGVmaW5lX25lZWRlZF9pbmRfc3RydWN0ICAgICAgICAgICBkZG1fbDRhcHNfbHRlX2F0dGFjaF9wZG5fZGVmaW5lX25lZWRlZF9pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX2w0YnBkbl9sdGVfYXR0YWNoX3Bkbl9hY3RpdmF0ZV9zdWNjZXNzX2luZF9zdHJ1Y3QgICAgICAgIGRkbV9sNGFwc19sdGVfYXR0YWNoX3Bkbl9hY3RpdmF0ZV9zdWNjZXNzX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2x0ZV9hdHRhY2hfcGRuX2FjdGl2YXRlX2ZhaWx1cmVfaW5kX3N0cnVjdCAgICAgICAgZGRtX2w0YXBzX2x0ZV9hdHRhY2hfcGRuX2FjdGl2YXRlX2ZhaWx1cmVfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fdnp3YXBuZV9pbmRfc3RydWN0ICAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX3Z6d2FwbmVfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fdnp3YXBuZXRtcl9pbmRfc3RydWN0ICAgICAgICAgICAgICAgZGRtX2w0YXBzX3Z6d2FwbmV0bXJfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fcGRuX21vZGlmeV9pbmRfc3RydWN0ICAgICAgICAgICAgICAgZGRtX2w0YXBzX3Bkbl9tb2RpZnlfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBsNGFwc19sNGJwZG5fZWFwbnN5bmNfaW5kX3N0cnVjdCAgICAgICAgICAgICAgICAgZGRtX2w0YXBzX2VhcG5zeW5jX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2V2endhcGZjaWFfaW5kX3N0cnVjdCAgICAgICAgICAgICAgIGRkbV9sNGFwc19ldnp3YXBmY2lhX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VnZ3JudHJzcHRfaW5kX3N0cnVjdCAgICAgICAgICAgICAgIGRkbV9sNGFwc19lZ2dybnRyc3B0X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2VncGNhcF90ZXN0X21vZGVfaW5kX3N0cnVjdCAgICAgICAgIGRkbV9sNGFwc19lZ3BjYXBfdGVzdF9tb2RlX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRhcHNfbDRicGRuX2JhY2tvZmZfdGltZXJfc3RhdHVzX2luZF9zdHJ1Y3QgICAgIGRkbV9sNGFwc19iYWNrb2ZmX3RpbWVyX3N0YXR1c19pbmRfc3RydWN0OworCit0eXBlZGVmIGw0YXBzX3RjbV91cGRhdGVfY2lkX21hcHBpbmdfY25mX3N0cnVjdCAgICAgICAgICBkZG1fbDRhcHNfdXBkYXRlX2NpZF9tYXBwaW5nX2NuZl9zdHJ1Y3Q7CisgCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgTVNHOiBMNEFQUyAtPiBERE06IEVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZW5kaWYgCisKKyNlbmRpZiAvKiBfRERNX0w0QVBTX1NUUlVDVF9IICovCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9kZG1fbDRibndfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9kZG1fbDRibndfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBiYTFmYwotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2RkbV9sNGJud19zdHJ1Y3QuaApAQCAtMCwwICsxLDExMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGRkbV9sNGJud19zdHJ1Y3QuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICAKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAgCisgKiAgIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiAgX0RETV9MNEJOV19TVFJVQ1RfSAorI2RlZmluZSAgX0RETV9MNEJOV19TVFJVQ1RfSAorCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKyNpbmNsdWRlICJsM19pbmNfZW51bXNfcHVibGljLmgiCisjaW5jbHVkZSAibDNfaW5jX2VudW1zLmgiCisjaW5jbHVkZSAibDRibndfcHVibGljX3N0cnVjdC5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19lbnVtLmgiCisjaW5jbHVkZSAibmFzX3N2X3N0cnVjdC5oIgorCisvL3R5cGVkZWYgc3RydWN0IHsKKy8vICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICAvKiogT25seSBleHBlY3RzIHRoZSBiZWxvdyB2YWx1ZXMgZnJvbSByYXRfZW51bTogCisgICAgICogICAgUkFUX05PTkUgICAgID0gMCwKKyAgICAgKiAgICBSQVRfR1NNICAgICAgPSAxLAorICAgICAqICAgIFJBVF9VTVRTICAgICA9IDIsCisgICAgICogICAgUkFUX0xURSAgICAgID0gNCwgICAgCisgICAgICogICAgUkFUX0MySyAgICAgID0gMTYsCisgICAgICogICAgUkFUXzF4UlRUICAgID0gMzIsCisgICAgICogICAgUkFUX0hSUEQgICAgID0gNjQsCisgICAgICovCisvLyAgICByYXRfZW51bSBjdXJyZW50bHlfYXR0YWNoZWRfcmF0OworLy8gICAgbDRibndfcHVibGljX2F0dGFjaGVkX25ldHdvcmtfaW5mb19zdHJ1Y3QgYXR0YWNoZWRfbmV0d29ya19pbmZvOworLy99IGRkbV9sNGJud19hdHRhY2hlZF9yYXRfaW5kX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBsNF9wc190eXBlX2NvbmZpZ19lbnVtICBwc190eXBlOworICAgIGthbF9ib29sICAgIGZvbGxvd19vbl9yZXF1ZXN0OyAgICAgIC8vIFRTIDI0LjAwOCAtRk9SLCBtYWtlIEdNTSBwcm9sb25nIGFuIGVzdGFibGlzaGVkIFBTIHNpZ25hbGxpbmcgY29ubmVjdGlvbgorfSBkZG1fbDRibndfcHNfdHlwZV9jb25maWdfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgbDRfcHNfY29uZmlnX3Jlc3VsdF9lbnVtICAgcmVzdWx0OworfSBkZG1fbDRibndfcHNfdHlwZV9jb25maWdfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX2Jvb2wgICAgaXNfcmVhdHRhY2g7Cit9IGRkbV9sNGJud19wc19yZWF0dGFjaF9jb25maWdfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQxNiAgICBjYXVzZTsKK30gZGRtX2w0Ym53X2ltc19wZG5fcmVqX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIG1taV9ldmVudF9lbnVtIGV2ZW50X2lkOyAgLy9tbWlfZXZlbnRfZW51bQorfSBkZG1fbDRibndfcHNfZXZlbnRfcmVwb3J0X2luZF9zdHJ1Y3Q7IC8vIHNhbWUgYXMgbDRjcmFjX3BzX2V2ZW50X3JlcG9ydF9pbmRfc3RydWN0CisKK3R5cGVkZWYgbmFzX3N2X2VtbV90MzQwMl9zdG9wX2luZF9zdHJ1Y3QgZGRtX2w0Ym53X3QzNDAyX3N0b3BfaW5kX3N0cnVjdDsKKworI2VuZGlmIC8qIF9ERE1fTDRCTldfU1RSVUNUX0ggKi8KZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2RkbV9sNGNfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9kZG1fbDRjX3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzM2VkZmUKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9kZG1fbDRjX3N0cnVjdC5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMworKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogRmlsZW5hbWU6CisqIC0tLS0tLS0tLS0tLQorKiAgIGRkbV9sNGNfc3RydWN0LmgKKyoKKyogUHJvamVjdDoKKyogLS0tLS0tLS0tLS0tCisqICAgVk1PTFkKKyoKKyogRGVzY3JpcHRpb246CisqIC0tLS0tLS0tLS0tLQorKiAgIFRoaXMgZmlsZSBpcyBpbnRlbmRzIGZvciBMNEMvRERNIGludGVyZmFjZQorKgorKiBBdXRob3I6CisqIC0tLS0tLS0tLS0tCisgKiAtLS0tLS0tCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfRERNX0w0Q19TVFJVQ1RfSAorI2RlZmluZSBfRERNX0w0Q19TVFJVQ1RfSAorCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfZW51bS5oIgorI2luY2x1ZGUgImwzX2luY19lbnVtcy5oIgorCisvKiBNU0dfSURfRERNX0w0Q19VRV9VU0FHRV9TRVRUSU5HX1JFUSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorfSBkZG1fbDRjX3VlX3VzYWdlX3NldHRpbmdfcmVxX3N0cnVjdDsKKworLyogTVNHX0lEX0RETV9MNENfVUVfVVNBR0VfU0VUVElOR19DTkYgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICB1ZV91c2FnZV9zZXR0aW5nX2VudW0gICB1ZV91c2FnZV9zZXR0aW5nOworfSBkZG1fbDRjX3VlX3VzYWdlX3NldHRpbmdfY25mX3N0cnVjdDsKKworI2VuZGlmIC8qIF9ERE1fTDRDX1NUUlVDVF9IICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvaXdsYW5fbDRjX3N0cnVjdC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvaXdsYW5fbDRjX3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2YTAyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9pd2xhbl9sNGNfc3RydWN0LmgKQEAgLTAsMCArMSwxODkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBpd2xhbl9sNGNfc3RydWN0LmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogIAorICogICAKKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKiAwNiAyOSAyMDIwIHN0YXIua3VvCisgKiBbTU9MWTAwNTM2ODQ1XSBBVCZUIENEUi1XaUZpLTE1MTAgKE1EIHBhcnQpIENlbGwgbWVhc3VyZW1lbnQgNTAwIG1zIGluIE1QNk1QNyBwcmVjaGVja2luCisgKiBDZWxsIG1lYXN1cmVtZW50IDUwMG1zIGluIE5SMTUuUjMuTVAKKyAqCisgKiAwOCAyNiAyMDE5IGphbmkubWFubmluZW4KKyAqIFtNT0xZMDA0MzMwNDFdIFtHZW45N11bRVBTRkJdIElUIHJlbGF0ZWQgaXNzdWVzCisgKiAJCisgKiAJVk1PTFkuQVBPTExPLlNRQyAtIElNUyA1RyBWb2ljZSBTdXBwb3J0IENoYW5nZXMKKyAqCisgKiAwOCAxNCAyMDE5IGphbmkubWFubmluZW4KKyAqIFtNT0xZMDA0MzE3NjJdIFtWT05SXSBJV0xBTiBDaGFuZ2VzIGZvciA1RyBWb2ljZSBTdXBwb3J0IC0gSVdMQU4KKyAqIAkKKyAqIAlWTU9MWS5WLjVHVk9JQ0UuREVWIC0gSVdMQU4gKEludGVyZmFjZSAvIEFUUCAvIElXTEFOIC8gVVQpCisgKgorICogMDcgMTIgMjAxOSBzdGFyLmt1bworICogW01PTFkwMDQyMTM4N10gW1ZNT0xZXVtTdWJtYXJpbmVdIE1lcmdlIGNvZGUgcHJvdG9jb2wgSVdMQU4gaW50ZXJmYWNlCisgKiBNZXJnZSBjb2RlIHByb3RvY29sIElXTEFOIGludGVyZmFjZQorICoKKyAqIDEwIDE2IDIwMTggc3Rhci5rdW8KKyAqIFtNT0xZMDAzNTMyNzhdIENlbGx1bGFyIHNpZ25hbGluZyBwb3dlciBsZXZlbCBjb25maWcgd2l0aCBmbGV4aWJsZSBudW1iZXIgb2YgdGhyZXNob2xkcworICogQ2VsbHVsYXIgc2lnbmFsaW5nIHBvd2VyIGxldmVsIGNvbmZpZyB3aXRoIGZsZXhpYmxlIG51bWJlciBvZiB0aHJlc2hvbGRzCisgKgorICogMDcgMjQgMjAxOCBzdGFyLmt1bworICogW01PTFkwMDMzODg2MV0gUGhhc2Ugb3V0IElNU19DQVBfSU5EIGZyb20gSVdMQU4gdG8gTDRDCisgKiBQaGFzZSBvdXQgISBJV0xBTiBnaXZlcyBJTVNfQ0FQX0lORCB0byBMNEMKKyAqCisgKiAwNiAxOSAyMDE4IHN0YXIua3VvCisgKiBbTU9MWTAwMzI5NzMwXSBTcHJpbnQgbmVlZHMgdG8gbW9uaXRvciAxeCAoQzJLKSBzaWduYWxpbmcKKyAqIExSMTMuUjAgc3luYyBTcHJpbnQgbW9uaXRvcmluZyAxeCAoQzJLKSBzaWduYWxpbmcKKyAqCisgKiAwNSAyMSAyMDE4IGhzaW4tanVuLnRhbmcKKyAqIFtNT0xZMDAzMjU0MjNdIFtJV0xBTl0gRGVidWcgZW5oYW5jZW1lbnQgLSBBLiBJV0xBTiBsb2cgZW5oYW5jZW1lbnQsIEIuIEtBTCBsZWdhY3kgQVBJIERITCBuZXcgQVBJCisgKiBbSVdMQU5dIGxvZyBlbmhhbmNlbW5ldCAtIAorICogCUEuIGFwcGx5IERITCBuZXcgbG9nIEFQSQorICogCUIuIGxvZyBlbmhhbmNlbWVudCAtIHByaW1pdGl2ZXMgbnVtYmVyIHRvIGVudW0gCisgKiAJY2hhbmdlOgorICogCUQyUk0sIEw0QywgU0RNLCBBVFAKKyAqIAlubyBjaGFuZ2U6CisgKiAJV08sIEw0Qk5XLCBTSU0sIEw0QlBXUiwgSU1DCisgKiAJCisgKiAJQVRQOgorICogCTEuIEVTUlZTVEFURQorICogCTIuIEVDTkNGRworICogCTMuIEVXSUZJRU4KKyAqIAk0LiBFV0ZDUFJFRgorICogCTUuIEVXSUZJQVNDCisgKiAJNi4gUmVtb3ZlIEVQTFdUSCwgRUdSRUcKKyAqIAk3LiBFSVdMUElORworICogCTguIEVJUkFUCisgKgorICogMDMgMTQgMjAxOCBzdGFyLmt1bworICogW01PTFkwMDMxMzMwOV0gW1dXIEZUXVtaSU9OXVtNVDY3MzldW08xXVtNUDJdW1NRQ11bVnpXXVtJbnRlcm5hbCBGVF1bSXJ2aW5lXVtWLVNNUy0wMDhdIFZvTFRFIEZ1bmN0aW9uIC0gU01TIGNhbm5vdCBiZSBzZW50IHdoZW4gQWR2YW5jZWQgQ2FsbGluZyBpcyB0dXJuZWQgT0ZGCisgKiBNYW51YWwgc3luYy4gd2l0aCBSMworICogTmV3IElMTSAtIEw0IElNU0NGRworICoKKyAqIDAzIDE0IDIwMTggc3Rhci5rdW8KKyAqIFtNT0xZMDAzMTMzMDldIFtXVyBGVF1bWklPTl1bTVQ2NzM5XVtPMV1bTVAyXVtTUUNdW1Z6V11bSW50ZXJuYWwgRlRdW0lydmluZV1bVi1TTVMtMDA4XSBWb0xURSBGdW5jdGlvbiAtIFNNUyBjYW5ub3QgYmUgc2VudCB3aGVuIEFkdmFuY2VkIENhbGxpbmcgaXMgdHVybmVkIE9GRgorICogU2VuZCBJTE0gdG8gTDQgZm9yIHN5bmMuIHdpdGggSU1DIElNU0NGRy4KKyAqIE5XU0VMIG5lZWRzIExURSBJTVMgaW5mb21hdGlvbiB0byBhdHRhY2ggTFRFLgorICoKKyAqIDAzIDAyIDIwMTggbXQudHNhaQorICogW01PTFkwMDMwOTgyMF0gW0lXTEFOXVtMNF0gU1NBQyBpbmZvcm1hdGlvbiBmb3IgVm9XaUZpIHJlcXVpcmVtZW50ICJWeldfMjAxNkZlYl9WWl9SRVFfVm9XaUZpXzM3NjI3IgorICogW0lGXVtJV0xBTl1bTDRdIFNTQUMgaW5mb3JtYXRpb24gZm9yIFZvV2lGaSByZXF1aXJlbWVudCAiVnpXXzIwMTZGZWJfVlpfUkVRX1ZvV2lGaV8zNzYyNyIKKyAqCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiAgX0lXTEFOX0w0Q19TVFJVQ1RfSAorI2RlZmluZSAgX0lXTEFOX0w0Q19TVFJVQ1RfSAorCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKyNpbmNsdWRlICJsM19pbmNfZW51bXNfcHVibGljLmgiCisjaW5jbHVkZSAibDRjX2V2YWxfc3RydWN0LmgiCisjaW5jbHVkZSAiY3VzdG9tX2l3bGFuX2NvbmZpZy5oIgorCisjZGVmaW5lICBJV0xBTl9MNENfTUFYX1RIUkVTICA4CisKK3R5cGVkZWYgZW51bSB7CisgICAgSVdMQU5fTDRDX0dTTV9SU1NJID0gMCwKKyAgICBJV0xBTl9MNENfVVRSQU5fUlNDUCwKKyAgICBJV0xBTl9MNENfVVRSQU5fRUNOTywKKyAgICBJV0xBTl9MNENfTFRFX1JTUlAsCisgICAgSVdMQU5fTDRDX0xURV9SU1JRLAorICAgIElXTEFOX0w0Q19MVEVfUlNTTlIsCisgICAgSVdMQU5fTDRDXzFYX1JTU0kgICA9IDYsCisgICAgSVdMQU5fTDRDXzFYX0VDSU8sCisgICAgSVdMQU5fTDRDX0VWRE9fUlNTSSwKKyAgICBJV0xBTl9MNENfRVZET19FQ0lPID0gOSwKKyAgICBJV0xBTl9MNENfTlJfU1NfUlNSUCwKKyAgICBJV0xBTl9MNENfTlJfU1NfUlNSUSwKKyAgICBJV0xBTl9MNENfTlJfU1NfU0lOUiwKKyAgICBJV0xBTl9MNENfTlJfQ1NJX1JTUlAsCisgICAgSVdMQU5fTDRDX05SX0NTSV9SU1JRLAorICAgIElXTEFOX0w0Q19OUl9DU0lfU0lOUgorfSBpd2xhbl9sNGNfc2lnX3R5cGVfZW51bTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgaXdsYW5fbDRjX3NpZ190eXBlX2VudW0gc2lnbmFsX3R5cGU7CisgICAga2FsX2Jvb2wgIG1vZGU7ICAgICAgICAgICAgICAgLyogMDogRGlzYWJsZSwgMTogRW5hYmxlZCAqLworICAgIGthbF91aW50OCBudW1fdGhyZXNob2xkczsgICAgIC8vIHRoZSBudW1iZXIgb2YgdGhyZXNob2xkcworICAgIGthbF9pbnQzMiBhcnJheV90aHJlc2hvbGRbSVdMQU5fTDRDX01BWF9USFJFU107CisgICAga2FsX2ludDMyIHVwcGVyX3RocmVzaG9sZDsgICAgLy8gTmVlZCB0byBwaGFzZSBvdXQKKyAgICBrYWxfaW50MzIgbG93ZXJfdGhyZXNob2xkOyAgICAvLyBOZWVkIHRvIHBoYXNlIG91dAorICAgIGthbF91aW50MTYgdGltZXJfbXM7CisgICAgaXdsYW5fbDRjX3NpZ19tZWFzX3RpbWVyX2xldmVsIHRpbWVyX2xldmVsOworfSBpd2xhbl9sNGNfc2V0X3B3bF90aHJoZF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCByZXN1bHQ7Cit9IGl3bGFuX2w0Y19zZXRfcHdsX3RocmhkX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgZW51bSB7CisgICAgU0lHTkFMX1NUQVRVU19CQUQgPSAwLAorICAgIFNJR05BTF9TVEFUVVNfR09PRCA9IDEsCisgICAgU0lHTkFMX1NUQVRVU19GQUlSID0gMiwKKyAgICBTSUdOQUxfU1RBVFVTX0lOVkFMSUQgPSAzLAorICAgIFNJR05BTF9TVEFUVVNfQ05ULAorfSBpd2xhbl9sNGNfc2lnbmFsX3N0YXR1c19lbnVtOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBpd2xhbl9sNGNfc2lnX3R5cGVfZW51bSBzaWduYWxfdHlwZTsKKyAgICBpd2xhbl9sNGNfc2lnbmFsX3N0YXR1c19lbnVtIHNpZ25hbF9zdGF0dXM7CisJa2FsX2ludDMyIHNpZ25hbF92YWx1ZTsKK30gbDRjX2l3bGFuX3B3cl9sZXZlbF9pbmRfc3RydWN0OworCit0eXBlZGVmIGw0Y19ldmFsX2ltc19zeXNfaW5mb19pbmRfc3RydWN0IGl3bGFuX2w0Y19pbXNfc3lzX2luZm9faW5kX3N0cnVjdDsKKworI2VuZGlmIC8qIF9JV0xBTl9MNENfU1RSVUNUX0ggKi8KZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2wzX2luY19lbnVtcy5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDNfaW5jX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU2ZTRiMAotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2wzX2luY19lbnVtcy5oCkBAIC0wLDAgKzEsNTgyNCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgbDNfaW5jX2VudW1zLmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgTUFVSQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogICAgICAgICAgICAgSElTVE9SWQorICogQmVsb3cgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBVcHBlciB0aGlzIGxpbmUsIHRoaXMgcGFydCBpcyBjb250cm9sbGVkIGJ5IFBWQ1MgVk0uIERPIE5PVCBNT0RJRlkhIQorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogIFRoaXMgcHJvZHVjdCBoYXMgYmVlbiBkZXZlbG9wZWQgdXNpbmcgYSBwcm90b2NvbCBzdGFjaworKiAgZGV2ZWxvcGVkIGJ5IFNhc2tlbiBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBMaW1pdGVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworCisjaWZuZGVmIF9sM19JTkNfRU5VTVNfSAorI2RlZmluZSBfbDNfSU5DX0VOVU1TX0gKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3VnZ2VzdCBBZGQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyNpbmNsdWRlICJrYWxfbm9uX3NwZWNpZmljX2dlbmVyYWxfdHlwZXMuaCIKKworLy8jaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3VnZ2VzdCBBZGQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorCisvKiBUZW1wIHNvbHV0aW9uIGZybyBNTSBQcmUtaW50ZWdyYXRpb24gKi8KKyNpbmNsdWRlICJpcmF0X2NvbW1vbl9lbnVtcy5oIgorI2luY2x1ZGUgImwzX2luY19lbnVtc19wdWJsaWMuaCIKKyNpbmNsdWRlICJhc19pbnRlcl9jb3JlX2VudW0uaCIKKworLyogVUFTL0dBUyA8LT4gUkFUQ00gYmVnaW4gKi8KKyNkZWZpbmUgTUFYX1JFQ09WRVJZX1RJTUVSX05VTSAgMjMgLyogU2hvdWxkIGluIHJhbmdlIDEgfiAyNTYgKi8KKyNkZWZpbmUgUkVDT1ZFUllfVElNRVJfUEVSSU9EX01VTFRJUExJRVIgIDEKKworLyogbW92ZSB0byBjcm9zcyBjb3JlICovCisvLyNpZmRlZiBfX1I3X0VIUExNTl9fCisvLyNkZWZpbmUgTUFYX05VTV9IUExNTiA0CisvLyNlbHNlCisvLyNkZWZpbmUgTUFYX05VTV9IUExNTiAxCisvLyNlbmRpZgorCisKKyNkZWZpbmUgTUFYX05VTV9FTUNfRlBMTU4gMzIKKworI2RlZmluZSBNQVhfTlVNX1NOSUZGRVJfUExNTiAoTUFYX05VTV9FUV9QTE1OICsgTUQxX01BWF9OVU1fSFBMTU4gLSAxKQorCisvKiBDb25zaWRlciBTaGFyZSBuZXR3b3JrIGZvciBzaWduYWxfYXBwZWFyX2luZCAqLworI2RlZmluZSBNQVhfTlVNX1NJR05BTF9BUFBFQVJfUExNTiAxMgorCisjaWZkZWYgX19TRUFSQ0hfQUxMX0VIUExNTl9UT0dFVEhFUl9fCisvKiBfX1NFQVJDSF9BTExfRUhQTE1OX1RPR0VUSEVSX18gaXMgZGVwZW5kZW50IG9uIF9fUjdfRUhQTE1OX18sIHNvIE1BWF9OVU1fSFBMTU4gPT0gNCBoZXJlLiAqLworI2RlZmluZSBNQVhfTlVNX1NFQVJDSF9QTE1OIChNQVhfTlVNX0VRX1BMTU4gKyBNRDFfTUFYX05VTV9IUExNTiAtIDEpCisjZWxzZQorI2RlZmluZSBNQVhfTlVNX1NFQVJDSF9QTE1OIChNQVhfTlVNX0VRX1BMTU4gKyAxKQorI2VuZGlmCisKKyNkZWZpbmUgRVhUUkFfSU5GT19CSVRNQVNLX0RTQUMgICgweDAxKQorI2RlZmluZSBFWFRSQV9JTkZPX0JJVE1BU0tfREFUQV9TUEVFRF9TVVBQT1JUICAoMHgwMikKKyNkZWZpbmUgRVhUUkFfSU5GT19CSVRNQVNLX1BQQUNSICgweDA0KQorI2RlZmluZSBFWFRSQV9JTkZPX0JJVE1BU0tfQ1NHICAgKDB4MDgpCisjZGVmaW5lIEVYVFJBX0lORk9fQklUTUFTS19CQU5EX0lORk8gICAoMHgxMCkKKworCisjZGVmaW5lIE1BWF9OVU1fUExNTl9QRVJfUkFUICAxNgorLyogPENEUi1GRU0tNjIwPiBDU0cgQXdhcmUgVUlDQyBDb25maWd1cmF0aW9u77+9WEVGLU9wZXJhdG9yIENTRyBMaXN0cworVGhlIGRldmljZSBzaGFsbCBzdXBwb3J0IGF0IGxlYXN0IDM1IENTRyBJRCdzICovCisjaWZkZWYgVU5JVF9URVNUCisjZGVmaW5lIE1BWF9DU0dfTlVNIDEwCisjZWxzZQorI2RlZmluZSBNQVhfQ1NHX05VTSA1MAorI2VuZGlmCisKKyNkZWZpbmUgTUFYX0xFTl9PRl9JTVNJX0xPQ0lfR0xPQ0kgKDkrMTErMTQpCisKKyNkZWZpbmUgUFNfSU5WQUxJRF9QTE1OX1NFQVJDSF9UUlhfSUQgMHhmZiAvKiBSaXBwbGUgKi8KKworLyogVUFTL0dBUyA8LT4gUkFUQ00gZW5kICovCisKKy8qIEw0QyA8LT4gRU5BUy9FQVMgYmVnaW4gKi8KKyNkZWZpbmUgRUFSRkNOX1JBTkdFX05VTSAgICAgMworI2RlZmluZSBQQ0lfUkFOR0VfTlVNICAgICAgICAzCisjZGVmaW5lIE1BWF9OVU1fRlBMTU5TICAgICAgIDI1NQorLyogTDRDIDwtPiBFTkFTL0VBUyBlbmQgKi8KKworLyogRVJBQyA8LT4gRU5BUy9FQVMgYmVnaW4gKi8KKyNkZWZpbmUgU0laRV9JTVNJICAgICAgICAgICAgICAgOQorI2RlZmluZSBTSVpFX0lNRUkgICAgICAgICAgICAgICA5CisjZGVmaW5lIFNJWkVfRVBTTE9DSSAgICAgICAgICAgIDE4CisjZGVmaW5lIFNJWkVfRVBTTlNDICAgICAgICAgICAgIDU0CisjZGVmaW5lIFNJWkVfRFJYX0RBVEEgICAgICAgICAgIDIKKyNkZWZpbmUgTUFYX1NVUFBPUlRFRF9DT0RFQ19MRU4gOAorLyogRVJBQyA8LT4gRU5BUy9FQVMgZW5kICovCisKKy8qIFZHUkFDIDwtPiBWR01NIGJlZ2luICovCisjZGVmaW5lIFNJWkVfT0ZfSU1FSVNWICAgICAgICAgIDkKKworI2RlZmluZSBMRU5fT0ZfTlNTQUlfTElTVF9MT05HICAgICAgICAgICAgICAgIDE0NCAvLyBTcGFjZSBmb3IgMTYgUy1OU1NBSQorI2RlZmluZSBMRU5fT0ZfTlNTQUlfTElTVF9TSE9SVCAgICAgICAgICAgICAgIDcyIC8vIFNwYWNlIGZvciA4IFMtTlNTQUkKKworI2RlZmluZSBWR1NfTlNTQUlfREVGQVVMVF9DT05GSUdVUkVEICAgICAgICAweDAxCisjZGVmaW5lIFZHU19OU1NBSV9SRUpFQ1RFRCAgICAgICAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgVkdTX05TU0FJX0NPTkZJR1VSRUQgICAgICAgICAgICAgICAgMHgwNAorI2RlZmluZSBWR1NfTlNTQUlfQUxMT1dFRCAgICAgICAgICAgICAgICAgICAweDA4CisjZGVmaW5lIFZHU19OU1NBSV9QUkVGRVJSRUQgICAgICAgICAgICAgICAgIDB4MTAKKworI2RlZmluZSBOVU1fTlNTQUlfUExNTl9JRFMgICAgICAgICAgICAgICAgICAgIDE2CisKKyNkZWZpbmUgVkdTX0NMRUFSX1BSRUZFUlJFRF9OU1NBSV8zR1BQICAgICAgMHgwMQorI2RlZmluZSBWR1NfQ0xFQVJfUFJFRkVSUkVEX05TU0FJX05PTjNHUFAgICAweDAyCisKKy8qIFZHUkFDIDwtPiBWR01NIGVuZCAqLworCisjZGVmaW5lIEVNTV9UMzQwMl9ERUZBVUxUX1ZBTCAgIDcyMAorCisvKiBtb3ZlIHRvIGNyb3NzIGNvcmUgKi8KKy8vI2RlZmluZSBOV1NFTF9NQVhfTlVNX1BMTU5TICAgICAoMzIpCisKKy8vMHhBRShBY3RpdkUpCisjZGVmaW5lIE5XU0VMX1RSWF9JRF9UT19TRVRfQUNUSVZFX1JBVCAweEFFCisKKy8qIEdNU1MgPC0+IE5XU0VMICovCisjZGVmaW5lIE1BWF9NQ0NfU0VBUkNIX1JBVF9OVU0gMworCisvKiBOV1NFTCAtPiB4QVMgKi8KKyNkZWZpbmUgTUFYX05VTV9PRl9NQ0MgMTIKKy8qIFBBTSA8LT4gTldTRUwgKi8KKyNkZWZpbmUgTUFYX1RIUk9UVExJTkdfQVBOX0JMT0NLX05VTSAgICAzMgorCisvKk5XU0VML1JBQyA8LT4gRU1NL0dNTS9NTSovCisjZGVmaW5lIERPU19FTkhBTkNFTUVOVF9NQVhfUkVUUllfVkFMVUUgIDMKKworLyogVkdNTSA8LT4gVkdTTS9MUFAgKi8KKyNkZWZpbmUgTUFYX05VTV9PRl9PUFRfSUVfTVVMVEkgNAorI2RlZmluZSBNQVhfTEVOX09GX09QVF9JRV9NVUxUSSAyNjAKKworLyogSUVJIHVzZWQgaW4gTVVMVElQTEUgUEFZTE9BRCAqLworI2RlZmluZSBWR01NX1JFUV9UWVBFX0lFSSAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgVkdNTV9QRFVfU0VTU0lPTl9JRF9JRUkgICAgICAgICAgICAgICAgICAweDEyCisjZGVmaW5lIFZHTU1fU19OU1NBSV9JRUkgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMgorI2RlZmluZSBWR01NX0FERElUSU9OQUxfSU5GT1JNQVRJT05fSUVJICAgICAgICAgIDB4MjQKKyNkZWZpbmUgVkdNTV9ETk5fSUVJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1CisjZGVmaW5lIFZHTU1fVF9CQUNLX09GRl9JRUkgICAgICAgICAgICAgICAgICAgICAgMHgzNworI2RlZmluZSBWR01NX0NBVVNFX0lFSSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgKKyNkZWZpbmUgVkdNTV9PTERfUERVX1NFU1NJT05fSURfSUVJICAgICAgICAgICAgICAweDU5CisKKy8qIEludGVyd29ya2luZyBEZWZpbml0aW9ucyAqLworI2RlZmluZSBTMV9OMV9OQVNfVFJBTlNQQVJFTlRfQ09OVEFJTkVSX0lFX0xFTkdUSCAgIDgKKwordHlwZWRlZiBlbnVtCit7CisgICAgQ0hfTU9ERV9OT05FID0gMHhmZiwKKyAgICBTSUdOQUxMSU5HX09OTFkgPSAweDAwLAorICAgIFNQRUVDSF9GVUxMX09SX0hBTEZfVkVSXzEgPSAweDAxLAorICAgIFNQRUVDSF9GVUxMX09SX0hBTEZfVkVSXzFfVkFNT1MgPSAweGMxLCAgIC8qIFNQRUVDSCBWZXIzIGluIFZBTU9TICovCisgICAgU1BFRUNIX0ZVTExfT1JfSEFMRl9WRVJfMiA9IDB4MjEsCisgICAgU1BFRUNIX0ZVTExfT1JfSEFMRl9WRVJfMl9WQU1PUyA9IDB4YzIsICAgLyogU1BFRUNIIFZlcjMgaW4gVkFNT1MgKi8KKyAgICBTUEVFQ0hfRlVMTF9PUl9IQUxGX1ZFUl8zID0gMHg0MSwgLyogaXMgYWxzbyByZWZlcnJlZCBhcyBBTVIgKi8KKyAgICBTUEVFQ0hfRlVMTF9PUl9IQUxGX1ZFUl8zX1ZBTU9TID0gMHhjMywgICAvKiBTUEVFQ0ggVmVyMyBpbiBWQU1PUyAqLworICAgIC8qWlk6IGFkZCBmb3IgQU1SLVdCKi8KKyAgICBTUEVFQ0hfRlVMTF9PUl9IQUxGX1ZFUl80ID0gMHg4MSwgLyogT0ZSIEFNUi1XQiBvciBPSFIgQU1SLVdCICovCisgICAgU1BFRUNIX0ZVTExfT1JfSEFMRl9WRVJfNSA9IDB4ODIsIC8qIEZSIEFNUi1XQiAqLworICAgIFNQRUVDSF9GVUxMX09SX0hBTEZfVkVSXzVfVkFNT1MgPSAweGM1LCAgIC8qIFNQRUVDSCBWZXI1IGluIFZBTU9TICovCisKKyAgICBEQVRBXzQzXzVfRExfUExVU18xNF81X1VMID0gMHg2MSwKKyAgICBEQVRBXzI5XzBfRExfUExVU18xNF81X1VMID0gMHg2MiwKKyAgICBEQVRBXzQzXzVfRExfUExVU18yOV8wX1VMID0gMHg2NCwKKyAgICBEQVRBXzE0XzVfRExfUExVU180M181X1VMID0gMHg2NywKKyAgICBEQVRBXzE0XzVfRExfUExVU18yOV8wX1VMID0gMHg2NSwKKyAgICBEQVRBXzI5XzBfRExfUExVU180M181X1VMID0gMHg2NiwKKyAgICBEQVRBXzQzXzVfUkFESU9fSU5URl9SQVRFID0gMHgyNywKKyAgICBEQVRBXzMyXzBfUkFESU9fSU5URl9SQVRFID0gMHg2MywKKyAgICBEQVRBXzI5XzBfUkFESU9fSU5URl9SQVRFID0gMHg0MywKKyAgICBEQVRBXzE0XzVfUkFESU9fSU5URl9SQVRFID0gMHgwZiwKKyAgICBEQVRBXzEyXzBfUkFESU9fSU5URl9SQVRFID0gMHgwMywKKyAgICBEQVRBXzA2XzBfUkFESU9fSU5URl9SQVRFID0gMHgwYiwKKyAgICBEQVRBXzAzXzZfUkFESU9fSU5URl9SQVRFID0gMHgxMywKKworLyoKKyAqICBtdGswMjM3NCAyMDExMDgwMSBzZXR0aW5nIG9mIGNoYW5uZWwgbW9kZSBpbiBTTENFIGlzIGFzIGZvbGxvd2luZyB0YWJsZQorICogend3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d7CisgKiB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1MgT3ZlciBIU1BBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4CisgKiB1d3d3d3d3d3d3d3dzd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3QKKyAqIHggICAgICAgIFlFUyAgICAgICAgICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeAorICogdXd3d3d3d3d3d3d3cXd3d3dzd3d3c3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0CisgKiB4ICAgICAgICAgICAgICAgICAgICAgIHggICAgICAgIHggICAgICB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4CisgKiB4ICAgICAgICAgICAgICAgICAgICAgIHV3d3d3cXd3d3F3d3d3d3d3d3d3d3d3d3N3d3d3d3d3d3d3d3d3d3N3d3d3d3d3d3d3dAorICogeCAgICAgICAgICAgICAgICAgICAgICB4ICAgICAgICB4ICAgICAgeCAgICAgICAgIDEwIG9yIDIwICAgICAgICAgICB4ICAgICAgICAgICAgICA0MCAgICAgICAgICAgIHggICAgICAgICAgODAgICAgICAgIHgKKyAqIHggICAgICAgIChSOCkgICAgICAgICAgdXd3d3dxd3d3cXd3d3d3d3d3d3d3d3d3cXd3d3d3d3d3d3d3d3d3cXd3d3d3d3d3d3d0CisgKiB4IFVNVFNfUkFCX0hTUEFfU1BFRUNIIHggICAgICAgIHg8NTAwICB4ICAgICAgVU1UU19SQUJfU1BFRUNIICAgICAgIHhVTVRTX1JBQl9DT05WRVJTQVRJT05BTF9EQVRBeCAgICAgICAgICAgICAgICAgICAgeAorICogeCAgICAgICAgICAgICAgICAgICAgICB4ICAgICAgICB1d3d3cXd3d3d3d3d3d3d3d3d3cXd3d3d3d3d3d3d3d3d3dCAgICAgICAgICAgICAgICAgICAgeAorICogeCAgICAgICAgICAgICAgICAgICAgICB4IE1heCBSTEN4IDU3NiAgeFVNVFNfUkFCX0NPTlZFUlNBVElPTkFMX0RBVEF4ICBVTVRTX1JBQl9TVFJFQU1JTkdfREFUQSAgIHggICAgICAgICAgICAgICAgICAgIHgKKyAqIHggICAgICAgICAgICAgICAgICAgICAgeCAgc2l6ZSAgdXd3d3F3d3d3d3d3d3d3d3d3d3F3d3d3d3d3d3d3d3d3d3RVTVRTX1JBQl9VTlNQRUNJRklFRHgKKyAqIHggICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAgeCA2NDAgIHhVTVRTX1JBQl9DT05WRVJTQVRJT05BTF9EQVRBeCAgICBVTVRTX1JBQl9VTlNQRUNJRklFRCAgICB4ICAgICAgICAgICAgICAgICAgICB4CisgKiB4ICAgICAgICAgICAgICAgICAgICAgIHggICAgICAgIHV3d3dxd3d3d3d3d3d3d3d3d3dxd3d3d3d3d3d3d3d3d3d0ICAgICAgICAgICAgICAgICAgICB4CisgKiB4ICAgICAgICAgICAgICAgICAgICAgIHggICAgICAgIHhvdGhlcnN4ICAgIFVNVFNfUkFCX1VOU1BFQ0lGSUVEICAgIHhVTVRTX1JBQl9DT05WRVJTQVRJT05BTF9EQVRBeCAgICAgICAgICAgICAgICAgICAgeAorICogfHd3d3d3d3d3d3d3cnd3d3dyd3d3cnd3d3d3d3d3d3d3d3d3cnd3d3d3d3d3d3d3d3d3cnd3d3d3d3d3d3d9CisgKi8KKyAgICBVTVRTX1JBQl9TUEVFQ0ggICAgICAgICAgPSAweDcwLAorICAgIFVNVFNfUkFCX0hTUEFfU1BFRUNILAorICAgIFVNVFNfUkFCX0NPTlZFUlNBVElPTkFMX0RBVEEsICAgICAgIC8qIEp1c3QgZm9yIHJlZmVyZW5jZSwgaXQgbWlnaHQgYmUgbm90IHByZWNpc2UgKi8KKyAgICBVTVRTX1JBQl9TVFJFQU1JTkdfREFUQSwgICAgICAgICAgICAvKiBKdXN0IGZvciByZWZlcmVuY2UsIGl0IG1pZ2h0IGJlIG5vdCBwcmVjaXNlICovCisgICAgVU1UU19SQUJfTk9OX0RFQ0lERUQsCisgICAgVU1UU19SQUJfVU5TUEVDSUZJRUQ9IDB4ZmYKK30gY2hhbm5lbF9tb2RlX2VudW07CisKKyNpZiAwCisjaWZkZWYgX19BUFBfU0VDT05EQVJZX1BEUF9TVVBQT1JUX18gLy9tdGswMDcxNCBzdHJlYW1pbmcKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorI2VuZGlmCisKK3R5cGVkZWYgZW51bSB7CisgICAgU1VCU0NSSUJFRF9QRUFLX1RIUk9VR0hQVVRfQ0xBU1MgPSAwLAorICAgIFNNX1FPU19QRUFLX1RIUk9VR0hQVVRfVVBfVE9fMTAwMF9PQ1RFVF9QRVJfU0VDID0gMSwKKyAgICBTTV9RT1NfUEVBS19USFJPVUdIUFVUX1VQX1RPXzIwMDBfT0NURVRfUEVSX1NFQyA9IDIsCisgICAgU01fUU9TX1BFQUtfVEhST1VHSFBVVF9VUF9UT180MDAwX09DVEVUX1BFUl9TRUMgPSAzLAorICAgIFNNX1FPU19QRUFLX1RIUk9VR0hQVVRfVVBfVE9fODAwMF9PQ1RFVF9QRVJfU0VDID0gNCwKKyAgICBTTV9RT1NfUEVBS19USFJPVUdIUFVUX1VQX1RPXzE2MDAwX09DVEVUX1BFUl9TRUMgPSA1LAorICAgIFNNX1FPU19QRUFLX1RIUk9VR0hQVVRfVVBfVE9fMzIwMDBfT0NURVRfUEVSX1NFQyA9IDYsCisgICAgU01fUU9TX1BFQUtfVEhST1VHSFBVVF9VUF9UT182NDAwMF9PQ1RFVF9QRVJfU0VDID0gNywKKyAgICBTTV9RT1NfUEVBS19USFJPVUdIUFVUX1VQX1RPXzEyODAwMF9PQ1RFVF9QRVJfU0VDID0gOCwKKyAgICBTTV9RT1NfUEVBS19USFJPVUdIUFVUX1VQX1RPXzI1NjAwMF9PQ1RFVF9QRVJfU0VDID0gOSwKKyAgICBTTV9RT1NfUkVTRVJWRURfUEVBS19USFJPVUdIUFVUX0NMQVNTID0gMTUKK30gc21fcmVhZGFibGVfcGVha190aHJvdWdocHV0X2NsYXNzX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgUkFESU9fUFJJT1JJVFlfMSA9IDEsCisgICAgUkFESU9fUFJJT1JJVFlfMiwKKyAgICBSQURJT19QUklPUklUWV8zLAorICAgIFJBRElPX1BSSU9SSVRZXzQsCisgICAgUkFESU9fUFJJT1JJVFlfTk9UX0NIRUNLCit9IHJwX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgUlBfMSwKKyAgICBSUF8yLAorICAgIFJQXzMsCisgICAgUlBfNCwKKyAgICBSUF9JTlZBTElECit9IHJhZGlvX3ByaW9yaXR5OworCit0eXBlZGVmIGVudW0geworICAgIFJMQ19TVVNQRU5ELAorICAgIFJMQ19SRVNVTUUsCisgICAgUkxDX0ZBSUxFRCwKKyAgICBSTENfUkVDRUlWRV9OT1RfUkVBRFksCisgICAgUkxDX1JFQ0VJVkVfUkVBRFkKK30gZ3JyX2NhdXNlX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgU1VCU0NSSUJFRF9SRUxJQUJJTElUWV9DTEFTUyA9IDAsCisgICAgU01fUU9TX1VOVVNFRF9SRUxJQUJJTElUWV9DTEFTUyA9IDEsCisgICAgU01fUU9TX1JFTElBQklMSVRZX0NMQVNTXzJfR1RQX1VOQUNLX0xMQ19BQ0tfUkxDX0FDS19QUk9URUNURURfREFUQSA9IDIsCisgICAgU01fUU9TX1JFTElBQklMSVRZX0NMQVNTXzNfR1RQX1VOQUNLX0xMQ19VTkFDS19STENfQUNLX1BST1RFQ1RFRF9EQVRBID0gMywKKyAgICBTTV9RT1NfUkVMSUFCSUxJVFlfQ0xBU1NfNF9HVFBfVU5BQ0tfTExDX1VOQUNLX1JMQ19VTkFDS19QUk9URUNURURfREFUQSA9IDQsCisgICAgU01fUU9TX1JFTElBQklMSVRZX0NMQVNTXzVfR1RQX1VOQUNLX0xMQ19VTkFDS19STENfVU5BQ0tfVU5QUk9URUNURURfREFUQSA9IDUsCisgICAgU01fUU9TX1JFTElBQklMSVRZX0NMQVNTXzdfUkVTRVJWRUQgPSA3Cit9IHNtX3JlYWRhYmxlX3JlbGlhYmlsaXR5X2NsYXNzX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgU1VCU0NSSUJFRF9QUkVDRURFTkNFX0NMQVNTID0gMCwKKyAgICBTTV9RT1NfUFJFQ0VERU5DRV9DTEFTUzFfSElHSF9QUklPUklUWSA9IDEsCisgICAgU01fUU9TX1BSRUNFREVOQ0VfQ0xBU1MyX05PUk1BTF9QUklPUklUWSA9IDIsCisgICAgU01fUU9TX1BSRUNFREVOQ0VfQ0xBU1MzX0xPV19QUklPUklUWSA9IDMsCisgICAgU01fUU9TX1JFU0VSVkVEX1BSRUNFREVOQ0VfQ0xBU1MgPSA3Cit9IHNtX3JlYWRhYmxlX3ByZWNlZGVuY2VfY2xhc3NfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBTVUJTQ1JJQkVEX01FQU5fVEhST1VHSFBVVF8gPSAwLAorICAgIFNNX1FPU19NRUFOX1RIUk9VR0hQVVRfMTAwX09DVEVUX1BFUl9IT1VSID0gMSwKKyAgICBTTV9RT1NfTUVBTl9USFJPVUdIUFVUXzIwMF9PQ1RFVF9QRVJfSE9VUiA9IDIsCisgICAgU01fUU9TX01FQU5fVEhST1VHSFBVVF81MDBfT0NURVRfUEVSX0hPVVIgPSAzLAorICAgIFNNX1FPU19NRUFOX1RIUk9VR0hQVVRfMTAwMF9PQ1RFVF9QRVJfSE9VUiA9IDQsCisgICAgU01fUU9TX01FQU5fVEhST1VHSFBVVF8yMDAwX09DVEVUX1BFUl9IT1VSID0gNSwKKyAgICBTTV9RT1NfTUVBTl9USFJPVUdIUFVUXzUwMDBfT0NURVRfUEVSX0hPVVIgPSA2LAorICAgIFNNX1FPU19NRUFOX1RIUk9VR0hQVVRfMTAwMDBfT0NURVRfUEVSX0hPVVIgPSA3LAorICAgIFNNX1FPU19NRUFOX1RIUk9VR0hQVVRfMjAwMDBfT0NURVRfUEVSX0hPVVIgPSA4LAorICAgIFNNX1FPU19NRUFOX1RIUk9VR0hQVVRfNTAwMDBfT0NURVRfUEVSX0hPVVIgPSA5LAorICAgIFNNX1FPU19NRUFOX1RIUk9VR0hQVVRfMTAwMDAwX09DVEVUX1BFUl9IT1VSID0gMTAsCisgICAgU01fUU9TX01FQU5fVEhST1VHSFBVVF8yMDAwMDBfT0NURVRfUEVSX0hPVVIgPSAxMSwKKyAgICBTTV9RT1NfTUVBTl9USFJPVUdIUFVUXzUwMDAwMF9PQ1RFVF9QRVJfSE9VUiA9IDEyLAorICAgIFNNX1FPU19NRUFOX1RIUk9VR0hQVVRfMTAwMDAwMF9PQ1RFVF9QRVJfSE9VUiA9IDEzLAorICAgIFNNX1FPU19NRUFOX1RIUk9VR0hQVVRfMjAwMDAwMF9PQ1RFVF9QRVJfSE9VUiA9IDE0LAorICAgIFNNX1FPU19NRUFOX1RIUk9VR0hQVVRfNTAwMDAwMF9PQ1RFVF9QRVJfSE9VUiA9IDE1LAorICAgIFNNX1FPU19NRUFOX1RIUk9VR0hQVVRfMTAwMDAwMDBfT0NURVRfUEVSX0hPVVIgPSAxNiwKKyAgICBTTV9RT1NfTUVBTl9USFJPVUdIUFVUXzIwMDAwMDAwX09DVEVUX1BFUl9IT1VSID0gMTcsCisgICAgU01fUU9TX01FQU5fVEhST1VHSFBVVF81MDAwMDAwMF9PQ1RFVF9QRVJfSE9VUiA9IDE4LAorICAgIFNNX1FPU19SRVNFUlZFRE1FQU5fVEhST1VHSFBVVCA9IDMwLAorICAgIFNNX1FPU19NRUFOX1RIUk9VR0hQVVRfQkVTVF9FRkZPUlQgPSAzMQorfSBzbV9yZWFkYWJsZV9tZWFuX3Rocm91Z2hwdXRfZW51bTsKKworLyogU00gUkFURE0gY29tbW9uIGVudW0gYmVnaW4gKi8KK3R5cGVkZWYgZW51bXsKKyAgICBSQVRETV9UUkFGRklDX0NMQVNTX0NPTlZFUlNBVElPTkFMID0gMSwKKyAgICBSQVRETV9UUkFGRklDX0NMQVNTX1NUUkVBTUlORyA9IDIsCisgICAgUkFURE1fVFJBRkZJQ19DTEFTU19JTlRFUkFDVElWRSA9IDMsCisgICAgUkFURE1fVFJBRkZJQ19DTEFTU19CQUNLR1JPVU5EID0gNCwKKyAgICBSQVRETV9UUkFGRklDX0NMQVNTX1VOS05PV04gPSAweEZGCit9cmF0ZG1fdHJhZmZpY19jbGFzc19lbnVtOworLyogU00gUkFURE0gY29tbW9uIGVudW0gZW5kICovCisKK3R5cGVkZWYgZW51bSB7CisgICAgU1VCU0NSSUJFRF9UUkFGRklDX0NMQVNTXyA9IDAsCisgICAgU01fUU9TX0NPTlZFUlNBVElPTkFMX0NMQVNTID0gMSwKKyAgICBTTV9RT1NfU1RSRUFNSU5HX0NMQVNTID0gMiwKKyAgICBTTV9RT1NfSU5URVJBQ1RJVkVfQ0xBU1MgPSAzLAorICAgIFNNX1FPU19CQUNLR1JPVU5EX0NMQVNTID0gNCwKKyAgICBTTV9RT1NfUkVTRVJWRURfVFJBRkZJQ19DTEFTUyA9IDcKK30gc21fcmVhZGFibGVfdHJhZmZpY19jbGFzc19lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIFNVQlNDUklCRURfREVMSVZFUllfT1JERVJfID0gMCwKKyAgICBTTV9RT1NfREVMSVZFUllfT1JERVJfWUVTID0gMSwKKyAgICBTTV9RT1NfREVMSVZFUllfT1JERVJfTk8gPSAyLAorICAgIFNNX1FPU19SRVNFUlZFRF9ERUxJVkVSWV9PUkRFUiA9IDMKK30gc21fcmVhZGFibGVfZGVsaXZlcnlfb3JkZXJfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBTVUJTQ1JJQkVEX0RFTElWRVJZX09GX0VSUk9ORU9VU19TRFU9IDAsCisgICAgU01fUU9TX0RFTElWRVJZX09GX0VSUk9ORU9VU19TRFVfTk9fREVURUNUID0gMSwKKyAgICBTTV9RT1NfREVMSVZFUllfT0ZfRVJST05FT1VTX1NEVV9ZRVMgPSAyLAorICAgIFNNX1FPU19ERUxJVkVSWV9PRl9FUlJPTkVPVVNfU0RVX05PID0gMywKKyAgICBTTV9RT1NfUkVTRVJWRURfREVMSVZFUllfT0ZfRVJST05FT1VTX1NEVSA9IDcKK30gc21fcmVhZGFibGVfZGVsaXZlcnlfb2ZfZXJyX3NkdV9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIFNVQlNDUklCRURfQklUX0VSUk9SX1JBVEVfID0gMCwKKyAgICBTTV9RT1NfUkVTSUJVQUxfQklUX0VSUk9SX1JBVEVfNV8xMF8yID0gMSwKKyAgICBTTV9RT1NfUkVTSUJVQUxfQklUX0VSUk9SX1JBVEVfMV8xMF8yID0gMiwKKyAgICBTTV9RT1NfUkVTSUJVQUxfQklUX0VSUk9SX1JBVEVfNV8xMF8zID0gMywKKyAgICBTTV9RT1NfUkVTSUJVQUxfQklUX0VSUk9SX1JBVEVfNF8xMF8zID0gNCwKKyAgICBTTV9RT1NfUkVTSUJVQUxfQklUX0VSUk9SX1JBVEVfMV8xMF8zID0gNSwKKyAgICBTTV9RT1NfUkVTSUJVQUxfQklUX0VSUk9SX1JBVEVfMV8xMF80ID0gNiwKKyAgICBTTV9RT1NfUkVTSUJVQUxfQklUX0VSUk9SX1JBVEVfMV8xMF81ID0gNywKKyAgICBTTV9RT1NfUkVTSUJVQUxfQklUX0VSUk9SX1JBVEVfMV8xMF82ID0gOCwKKyAgICBTTV9RT1NfUkVTSUJVQUxfQklUX0VSUk9SX1JBVEVfNl8xMF84ID0gOSwKKyAgICBTTV9RT1NfUkVTRVJWRURfUkVTSUJVQUxfQklUX0VSUk9SX1JBVEUgPSAxNQorfSBzbV9yZWFkYWJsZV9yZXNpZHVhbF9iaXRfZXJyb3JfcmF0ZV9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIFNVQlNDUklCRURfU0RVX0VSUl9SQVRJT18gPSAwLAorICAgIFNNX1FPU19TRFVfRVJSX1JBVElPXzFfMTBfMiA9IDEsCisgICAgU01fUU9TX1NEVV9FUlJfUkFUSU9fN18xMF8zID0gMiwKKyAgICBTTV9RT1NfU0RVX0VSUl9SQVRJT18xXzEwXzMgPSAzLAorICAgIFNNX1FPU19TRFVfRVJSX1JBVElPXzFfMTBfNCA9IDQsCisgICAgU01fUU9TX1NEVV9FUlJfUkFUSU9fMV8xMF81ID0gNSwKKyAgICBTTV9RT1NfU0RVX0VSUl9SQVRJT18xXzEwXzY9IDYsCisgICAgU01fUU9TX1NEVV9FUlJfUkFUSU9fMV8xMF8xID0gNywKKyAgICBTTV9RT1NfUkVTRVJWRURfU0RVX0VSUl9SQVRJTyA9IDE1Cit9IHNtX3JlYWRhYmxlX3NkdV9lcnJfcmF0aW9fZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBTVUJTQ1JJQkVEX1RSQUZGSUNfSEFORExJTkdfUFJJT1JJVFkgPSAwLAorICAgIFNNX1FPU19UUkFGRklDX0hBTkRMSU5HX1BSSU9SSVRZXzEgPSAxLAorICAgIFNNX1FPU19UUkFGRklDX0hBTkRMSU5HX1BSSU9SSVRZXzIgPSAyLAorICAgIFNNX1FPU19UUkFGRklDX0hBTkRMSU5HX1BSSU9SSVRZXzMgPSAzCit9IHNtX3JlYWRhYmxlX3RyYWZmaWNfaG5kbF9wcmlvcml0eV9lbnVtOworCisvLyNpZmRlZiBfX1JFTDZfXyAvLyBpbmNyZWFzZSBRb1MgTGVuZ3RoIGZyb20gMTEgdG8gMTIKK3R5cGVkZWYgZW51bSB7CisgICAgU01fTk9UX09QVElNSVNFRF9GT1JfU0lHTkFMSU5HX1RSQUZGSUM9IDAsCisgICAgU01fT1BUSU1JU0VEX0ZPUl9TSUdOQUxJTkdfVFJBRkZJQyA9IDEKK30gc2lnbmFsaW5nX2luZGljYXRpb25fZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBTTV9RT1NfU0lHTkFMSU5HX0lORElDQVRJT05fTk9UX09QVElNSVNFRF9GT1JfU0lHTkFMSU5HX1RSQUZGSUM9IDAsCisgICAgU01fUU9TX1NJR05BTElOR19JTkRJQ0FUSU9OX09QVElNSVNFRF9GT1JfU0lHTkFMSU5HX1RSQUZGSUMgPSAxCit9IHNtX3JlYWRhYmxlX3NpZ25hbGluZ19pbmRpY2F0aW9uX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgU01fVU5LTk9XTl9TT1VSQ0VfU1RBVElTVElDU19ERVNDUklQVE9SPSAwLAorICAgIFNNX1NQRUVDSF9TT1VSQ0VfU1RBVElTVElDU19ERVNDUklQVE9SID0gMQorfSBzb3VyY2Vfc3RhdGlzdGljc19kZXNjcmlwdG9yX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgU01fUU9TX1NPVVJDRV9TVEFUSVNUSUNTX0RFU0NSSVBUT1JfVU5LTk9XTl9TT1VSQ0VfU1RBVElTVElDU19ERVNDUklQVE9SPSAwLAorICAgIFNNX1FPU19TT1VSQ0VfU1RBVElTVElDU19ERVNDUklQVE9SX1NQRUVDSF9TT1VSQ0VfU1RBVElTVElDU19ERVNDUklQVE9SID0gMQorfSBzbV9yZWFkYWJsZV9zb3VyY2Vfc3RhdGlzdGljc19kZXNjcmlwdG9yX2VudW07CisvLyNlbmRpZiAvLyB+IF9fUkVMNl9fIC8vIGluY3JlYXNlIFFvUyBMZW5ndGggZnJvbSAxMSB0byAxMgorCit0eXBlZGVmIGVudW0KK3sKKyAgICBNQU5VQUxfUkVTRUxFQ1RJT04gPSAwLAorICAgIEFVVE9fUkVTRUxFQ1RJT04gICA9IDEKK30gcGxtbl9yZXNlbGVjdGlvbl9lbnVtOworCisvKjIwMTMwNzE2LCBCb3d1OiBNTURDIEIzJkIzOSBDb19leGlzdGluZyBpc3N1ZSovCisKK3R5cGVkZWYgZW51bQoreworICAgIFBMTU5fU1RBVFVTX05PTkUgICAgICA9IDAsCisgICAgUExNTl9TVEFUVVNfQVZBSUxBQkxFID0gMSwKKyAgICBQTE1OX1NUQVRVU19DVVJSRU5UICAgPSAyLAorICAgIFBMTU5fU1RBVFVTX0ZPUkJJRERFTiA9IDMKK30gcGxtbl9zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVteworICAgIEdBU19FTUVSR0VOQ1lfQ0FMTCAgICAgICAgPSAwLAorICAgIEdBU19SRUdJU1RSQVRJT04gICAgICAgICAgPSAxLAorICAgIEdBU19ERVRBQ0ggICAgICAgICAgICAgICAgPSAyLAorICAgIEdBU19MT1dfUFJJT1JJVFlfU0lHICAgICAgPSAzLAorICAgIEdBU19DQUxMX1JFX0VTVEFCTElTSE1FTlQgPSA0LAorICAgIEdBU19TUEVFQ0hfQ0FMTCAgICAgICAgICAgPSA1LAorICAgIEdBU19EQVRBX0NBTEwgICAgICAgICAgICAgPSA2LAorICAgIEdBU19QQUdFX1JFU1AgICAgICAgICAgICAgPSA3LAorICAgIEdBU19TU19EQVRBICAgICAgICAgICAgICAgPSA4Cit9Z2FzX2VzdF9jYXVzZV9lbnVtOworCisKK3R5cGVkZWYgZW51bXsKKyAgICBDU0ZCX1NFU1NJT05fU1RBUlQgICA9IDAsCisgICAgQ1NGQl9TRVNTSU9OX0VORCAgICAgPSAxCit9Y3Nfc3RhdHVzX2VudW07CisKK3R5cGVkZWYgZW51bXsKKyAgICBQTE1OX0xPU1NfTk9STUFMICAgICAgICAgICAgPSAwLAorICAgIFBMTU5fTE9TU19JUlJEVF9GQUlMICAgICAgICA9IDEKK31wbG1uX2xvc3NfcmVhc29uX2VudW07CisKKy8qIFVzZWQgZm9yIGdpdmluZyBwYWdpbmcgY2F1c2UgdG8gTU0gYW5kIGVzdGFiLiBjYXVzZSB0byBBUy4gQWxzbworICogdXNlZCB1cHRvIGFwcGxpY2F0aW9uICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBPUklHX0NPTlZFUl9DQUxMICAgICAgICAgICAgPSAwLAorICAgIE9SSUdfU1RSRUFNSU5HX0NBTEwgICAgICAgICA9IDEsCisgICAgT1JJR19JTlRFUkFDVElWRV9DQUxMICAgICAgID0gMiwKKyAgICBPUklHX0JBQ0tHUk9VTkRfQ0FMTCAgICAgICAgPSAzLAorICAgIE9SSUdfU1VCU0NSSUJFRF9DQUxMICAgICAgICA9IDQsCisgICAgVEVSTV9DT05WRVJfQ0FMTCAgICAgICAgICAgID0gNSwKKyAgICBURVJNX1NUUkVBTUlOR19DQUxMICAgICAgICAgPSA2LAorICAgIFRFUk1fSU5URVJBQ1RJVkVfQ0FMTCAgICAgICA9IDcsCisgICAgVEVSTV9CQUNLR1JPVU5EX0NBTEwgICAgICAgID0gOCwKKyAgICBFTUVSR0VOQ1lfQ0FMTCAgICAgICAgICAgICAgPSA5LAorICAgIElOVEVSX1JBVF9DRUxMX1JFU0VMRUNUSU9OICA9IDEwLAorICAgIElOVEVSX1JBVF9DRUxMX0NIQU5HRV9PUkRFUiA9IDExLAorICAgIFJFR0lTVFJBVEUgICAgICAgICAgICAgICAgICA9IDEyLAorICAgIERFVEFDSCAgICAgICAgICAgICAgICAgICAgICA9IDEzLAorICAgIEhJR0hfUFJJT1JJVFlfU0lHICAgICAgICAgICA9IDE0LAorICAgIExPV19QUklPUklUWV9TSUcgICAgICAgICAgICA9IDE1LAorICAgIENBTExfUkVfRVNUQUJMSVNITUVOVCAgICAgICA9IDE2LAorICAgIFNQRUVDSF9DQUxMICAgICAgICAgICAgICAgICA9IDE3LAorICAgIERBVEFfQ0FMTCAgICAgICAgICAgICAgICAgICA9IDE4LAorICAgIExPQ19VUERBVEUgICAgICAgICAgICAgICAgICA9IDE5LAorICAgIFNNU19EQVRBICAgICAgICAgICAgICAgICAgICA9IDIwLAorICAgIFRDSEZfT1JfU0RDQ0hfTkVFREVEICAgICAgICA9IDIxLAorICAgIFBBR0VfUkVTUCAgICAgICAgICAgICAgICAgICA9IDIyLAorICAgIE1FQVNfUkVQT1JUICAgICAgICAgICAgICAgICA9IDIzLAorICAgIElNU0lfREVUQUNIX1BST0MgICAgICAgICAgICA9IDI0LAorICAgIE1NX1BST0MgICAgICAgICAgICAgICAgICAgICA9IDI1LAorICAgIFNTX0RBVEEgICAgICAgICAgICAgICAgICAgICA9IDI2LAorICAgIFZJREVPX0NBTEwgICAgICAgICAgICAgICAgICA9IDI3IC8qIF9fUkVMNl9fICovCit9IGVzdF9jYXVzZV9lbnVtOworCisvKgorICogIHRoZSBtbV9jYXVzZV9lbnVtIGluY2x1ZGVzCisgKiAgICAgIDEuIE1NLCBHTU0sIEVNTSBjYXVzZXMKKyAqICAgICAgMi4gTVRLIGRlZmluZWQgaW50ZXJuYWwgY2F1c2VzCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgQ0FVU0VfTk9ORSAgICAgICAgICAgICAgICAgICAgID0gICAgIDB4MDAsCisgICAgSU1TSV9VTktOT1dOX0lOX0hMUiAgICAgICAgICAgID0gICAgIDB4MDIsCisgICAgSUxMRUdBTF9NUyAgICAgICAgICAgICAgICAgICAgID0gICAgIDB4MDMsCisgICAgSU1TSV9VTktOT1dOX0lOX1ZMUiAgICAgICAgICAgID0gICAgIDB4MDQsCisgICAgSU1FSV9OT1RfQUNDRVBURUQgICAgICAgICAgICAgID0gICAgIDB4MDUsCisgICAgSUxMRUdBTF9NRSAgICAgICAgICAgICAgICAgICAgID0gICAgIDB4MDYsCisgICAgR1BSU19OT1RfQUxMT1dFRCAgICAgICAgICAgICAgID0gICAgIDB4MDcsCisgICAgR1BSU19OT05fR1BSU19OT1RfQUxMT1dFRCAgICAgID0gICAgIDB4MDgsCisgICAgTVNfSURfTk9UX0RFUklWRURfQllfTlcgICAgICAgID0gICAgIDB4MDksCisgICAgSU1QTElDSVRfREVUQUNIICAgICAgICAgICAgICAgID0gICAgIDB4MGEsCisgICAgUExNTl9OT1RfQUxMT1dFRCAgICAgICAgICAgICAgID0gICAgIDB4MGIsCisgICAgTE9DQVRJT05fQVJFQV9OT1RfQUxMT1dFRCAgICAgID0gICAgIDB4MGMsCisgICAgUk9BTUlOR19BUkVBX05PVF9BTExPV0VEICAgICAgID0gICAgIDB4MGQsCisgICAgR1BSU19OT1RfQUxMT1dFRF9JTl9QTE1OICAgICAgID0gICAgIDB4MGUsCisgICAgTk9fU1VJVEFCTEVfQ0VMTFNfSU5fTEEgICAgICAgID0gICAgIDB4MGYsCisgICAgTVNDX1RFTVBfTk9UX1JFQUNIQUJMRSAgICAgICAgID0gICAgIDB4MTAsCisgICAgTkVUV09SS19GQUlMVVJFICAgICAgICAgICAgICAgID0gICAgIDB4MTEsCisgICAgQ1NfRE9NQUlOX05PVF9BVkFJTEFCTEUgICAgICAgID0gICAgIDBYMTIsICAvKiBMVEUgc3BlY2lmaWMgKi8KKyAgICBFU01fRkFJTFVSRSAgICAgICAgICAgICAgICAgICAgPSAgICAgMHgxMywgIC8qIExURSBzcGVjaWZpYyAqLworICAgIE1BQ19GQUlMVVJFICAgICAgICAgICAgICAgICAgICA9ICAgICAweDE0LAorICAgIFNZTkNfRkFJTFVSRSAgICAgICAgICAgICAgICAgICA9ICAgICAweDE1LAorICAgIENPTkdFU1RJT04gICAgICAgICAgICAgICAgICAgICA9ICAgICAweDE2LAorICAgIEdTTV9BVVRIRU5fVU5BQ0NFUFRBQkxFICAgICAgICA9ICAgICAweDE3LAorICAgIFVFX1NFQ1VSSVRZX0NBUEFfTUlTTUFUQ0ggICAgICA9ICAgICAweDE3LAorICAgIFNFQ1VSSVRZX1JFSkVDVEVEX1VOU1BFQ0lGSUVEICA9ICAgICAweDE4LCAgLyogTFRFIHNwZWNpZmljICovCisgICAgTk9UX0FVVEhPUklaRURfRk9SX1RISVNfQ1NHICAgID0gICAgIDB4MTksCisgICAgTk9OX0VQU19BVVRIRU5fVU5BQ0NFUFRBQkxFICAgID0gICAgIDB4MWEsICAvKiBMVEUgc3BlY2lmaWMgKi8KKyAgICBOMV9NT0RFX05PVF9BTExPV0VEICAgICAgICAgICAgPSAgICAgMHgxYiwgIC8qIE5SIHNwZWNpZmljICovCisgICAgUkVTVFJJQ1RFRF9TRVJWSUNFX0FSRUEgICAgICAgID0gICAgIDB4MWMsICAvKiBOUiBzcGVjaWZpYyAqLworICAgIFNFUlZfT1BUSU9OX05PVF9TVVBQT1JURUQgICAgICA9ICAgICAweDIwLAorICAgIFJFUV9TRVJWX09QVElPTl9OT1RfU1VCU0NSSUJFRCA9ICAgICAweDIxLAorICAgIFNFUlZfT1BUSU9OX1RFTVBfT1VUX09GX09SREVSICA9ICAgICAweDIyLAorICAgIFJFUV9TRVJWX09QVElPTl9OT1RfQVVUSF9JTl9QTE1OICA9ICAweDIzLAorICAgIENBTExfQ0FOTk9UX0JFX0lERU5USUZJRUQgICAgICA9ICAgICAweDI2LAorICAgIENTX0RPTUFJTl9URU1QX05PVF9BVkFJTEFCTEUgICA9ICAgICAweDI3LCAgLyogTFRFIHNwZWNpZmljICovCisgICAgTk9fUERQX0NPTlRFWFRfQUNUSVZBVEVEICAgICAgID0gICAgIDB4MjgsCisgICAgU0VWRVJFX05FVFdPUktfRkFJTFVSRSAgICAgICAgID0gICAgIDB4MkEsICAvKiBMVEUgc3BlY2lmaWMgKi8KKyAgICBMQUROX05PVF9BVkFJTEFCTEUgICAgICAgICAgICAgPSAgICAgMHgyYiwKKyAgICBNQVhfTlVNX1BEVV9TRVNTSU9OU19SRUFDSEVEICAgPSAgICAgMHg0MSwKKworICAgIFJFVFJZX1VQT05fRU5UUllfSU5UT19ORVdDRUxMX01JTiA9ICAweDMwLCAgLyogMzAuLjNmICovCisgICAgUkVUUllfVVBPTl9FTlRSWV9JTlRPX05FV0NFTExfTUFYID0gIDB4M2YsCisKKyAgICBJTlNVRkZfUkVTT1VSQ0VTX1NMSUNFX0FORF9ETk4gCSAgPSAweDQzLAorICAgIElOU1VGRl9SRVNPVVJDRVNfU0xJQ0UgICAgICAgICAJICA9IDB4NDUsCisgICAgTkdLU0lfQUxSRUFEWV9JTl9VU0UgICAgICAgICAgICAgID0gMHg0NywKKyAgICBOM0dQUF9BQ0NFU1NfVE9fNUdDTl9OT1RfQUxMT1dFRCAgPSAweDQ4LAorICAgIFNFUlZJTkdfTkVUV09SS19OT1RfQVVUSE9SSVpFRCAgICA9ICAweDQ5LCAgLyogTlIgc3BlY2lmaWMgKi8KKyAgICBQQVlMT0FEX05PVF9GT1JXQVJERUQgICAgICAgICAgICAgPSAweDVhLAorICAgIEROTl9OT1RfU1VQX1NMSUNFICAgICAgICAgICAgICAgICA9IDB4NWIsCisgICAgSU5TVUZGX1VQX1JFU19GT1JfUERVX1NFU1NJT04gICAgID0gMHg1YywKKworICAgIFNFTUFOVElDQUxMWV9JTkNPUlJFQ1RfTVNHICAgICAgICA9ICAweDVmLAorICAgIElOVkFMSURfTU1fTUFORF9JTkZPICAgICAgICAgICAgICA9ICAweDYwLAorICAgIE1TR19UWVBFX05PTl9FWElTVEVOVCAgICAgICAgICAgICA9ICAweDYxLAorICAgIE1TR19UWVBFX05PVF9JTVBMRU1FTlRFRCAgICAgICAgICA9ICAweDYxLAorICAgIE1TR19UWVBFX0lOQ09NUEFUX1dJVEhfUFJPVE9fU1RBVEUgPSAweDYyLAorICAgIElFX05PVF9JTVBMRU1FTlRFRCAgICAgICAgICAgICAgICAgPSAweDYzLAorICAgIENPTkRJVElPTkFMX01NX0lFX0VSUk9SICAgICAgICAgICAgPSAweDY0LAorICAgIE1TR19OT1RfQ09NUEFUX1dJVEhfUFJPVE9fU1RBVEUgICAgPSAweDY1LCAgLyogNjUuLjZmICovCisgICAgUFJPVE9fRVJST1JfVU5TUEVDSUZJRUQgICAgICAgICAgICA9IDB4NmYsCisgICAgLyogSW5jYXNlIGlmIGFueSBtb3JlIHN0YW5kYXJkIGNhdXNlIHZhbHVlcyBhcmUgdG8gYmUgYWRkZWQgdGhlbgorICAgICAqIHRoZSBjYXVzZSBoYXZpbmcgdGhlIGdyZWF0ZXN0IHZhbHVlIHNob3VsZCBiZSBwbGFjZWQganVzdCBiZWZvcmUKKyAgICAgKiB0aGUgaW50ZXJuYWwgY2F1c2UgdmFsdWVzLgorICAgICAqLworICAgIC8qIFRoZSBmb2xsb3dpbmcgY2F1c2UgYXJlIGludGVybmFsIHRvIFRjbSBhbmQgR21tICovCisgICAgRk9SQklEREVOX1BMTU4gPSAweDcwLAorICAgIE1PREVNX0lOVEVSTkFMX0NBVVNFX1NUQVJUID0gRk9SQklEREVOX1BMTU4sIC8qIDB4NzAgKi8KKyAgICBBQ0NFU1NfQ0xBU1NfQkFSUkVELAorICAgIE5PX0NPVkVSQUdFLAorICAgIEdQUlNfU0VSVl9OT1RfQUxMT1dFRCwKKyAgICBUSU1FUl9FWFBJUlksCisgICAgU0lNX0lOU0VSVEVELAorICAgIFNJTV9SRU1PVkVELAorICAgIFNJTV9BQlNFTlQsCisgICAgU0lNX0lOVkFMSURfRk9SX1BTLAorICAgIFNJTV9JTlZBTElEX0ZPUl9DUywKKyAgICBTSU1fSU5WQUxJRF9GT1JfQ1NfQU5EX1BTLAorICAgIExPV19MQVlFUl9GQUlMLAorICAgIE1NX0NPTk5fSU5fUFJPR1JFU1MsIC8qIDB4N2MgKi8KKyAgICBNTV9OT1RfVVBEQVRFRCwKKyAgICBSUl9DT05OX0VTVEFCX0ZBSUxVUkUsCisgICAgUlJDX0NPTk5fQUJPUlQsIC8qIDB4N2YgKi8KKyAgICBNTV9DT05OX0ZBSUxVUkUsIC8qIDB4ODAgKi8KKyAgICBNTV9FTUVSR0VOQ1lfTk9UX0FMTE9XRUQsCisgICAgTk9fR1BSU19DT1ZFUkFHRSwKKyAgICBNTV9BQk5PUk1BTF9MVSwKKyAgICBNTV9BQk5PUk1BTF9MVV9MRVNTX1RIRU5fNF9USU1FUywKKyAgICAvKiAyNC4wMDggQ1IjIDE3OTEgU3RhcnQgKi8KKyAgICBNTV9BQk5PUk1BTF9MVV9DT05HRVNTSU9OX0NPTlRST0wsCisgICAgLyogMjQuMDA4IENSIyAxNzkxIEVuZCAqLworICAgIE1NX0RPX05PVF9ORUVEX1BMTU5fU0VBUkNILAorICAgIE1NX1NBTUVfTEFJX0lNU0lfQVRUQUNISU5HLCAvL2VyaWNhIHRpZXIgb25lCisgICAgTU1fUkVDT1ZFUllfU0VBUkNILCAvL210azAyNDc1CisgICAgU0VBUkNIX0ZJTklTSEVELAorICAgIE1NX1dBSVRfRk9SX1JFTEVBU0UsCisgICAgTU1fUkVKX0NVWl9SUl9JTl9TVVNQRU5EX01PREUsIC8qIGZvciBBVFRBQ0hfUkVKICovLy8weDhhCisgICAgTU1fSURMRV9PT1NfSU5ELAorICAgIEdQUlNfSU5fTElNSVRFRF9TRVJWSUNFLCAvKiAweDhjICovCisgICAgQVVUSF9GQUlMLAorICAgIEdNTV9UMzM0Nl9SVU5OSU5HLAorICAgIE1NX0FCTk9STUFMX0xVX0xFU1NfVEhFTl80X1RJTUVTX0FGUl9ORUVERUQsIC8qIEFMUFMwMTgxMTcxMDogV2hlbiBMVSBBYm5vcm1hbCBkdXJpbmcgQ1NGQiBoYXBwZW5lZCwgbm90aWZ5IFJBQyBzcGVjaWFsIGNhdXNlIHRvIGhpZGUgdGhlIExVIGFibm9ybWFsIGZyb20gVUkuICovCisgICAgU0lNX0lOVkFMSURfRk9SX0xURV9CRUNBVVNFX05PTl9VU0lNX0lOU0VSVEVELAorICAgIE1NX0FCTk9STUFMX0xVX1JFSjE3X01BTlVBTF9NT0RFLAorICAgIEdNTV9JTl9WSVJUVUFMX01PREUsCisgICAgTldTRUxfSVZTUl9TVEFSVCwKKyAgICBQTE1OX0xPU1MsICAgIC8qIEZvciByZXBvcnQgUExNTl9MT1NTIHdoZW4gY29udHJvbCBieSBHTVNTICovCisgICAgQUJPUlRFRF9CWV9VUFBFUl9MQVlFUiwKKyAgICBNTV9JTl9WSVJUVUFMX01PREUsCisgICAgTU1fQ0FVU0VfRU5VTV9FTkQgPSBNTV9JTl9WSVJUVUFMX01PREUKK31tbV9jYXVzZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBNTV9DQVVTRV9TT1VSQ0VfT1RIRVIgICAgICAgICAgICAgICAgICAgICA9MCwKKyAgICBNTV9DQVVTRV9TT1VSQ0VfTFVfUkVKRUNUICAgICAgICAgICAgICAgICA9MSwKKyAgICBNTV9DQVVTRV9TT1VSQ0VfQ01TRVJWSUNFX1JFSkVDVCAgICAgICAgICA9MiwKKyAgICBNTV9DQVVTRV9TT1VSQ0VfQUJPUlQgICAgICAgICAgICAgICAgICAgICA9MywKKyAgICBNTV9DQVVTRV9TT1VSQ0VfQVRUQUNIX1JFSkVDVCAgICAgICAgICAgICA9NCwKKyAgICBNTV9DQVVTRV9TT1VSQ0VfQ09NQklORURfQVRUQUNIX05PTl9HUFJTICA9NSwKKyAgICBNTV9DQVVTRV9TT1VSQ0VfUkFVX1JFSkVDVCAgICAgICAgICAgICAgICA9NiwKKyAgICBNTV9DQVVTRV9TT1VSQ0VfQ09NQklORURfUkFVX05PTl9HUFJTICAgICA9NywKKyAgICBNTV9DQVVTRV9TT1VSQ0VfU0VSVklDRV9SRUpFQ1QgICAgICAgICAgICA9OCwKKyAgICBNTV9DQVVTRV9TT1VSQ0VfTldfREVUQUNIICAgICAgICAgICAgICAgICA9OSwKK31tbV9jYXVzZV9zb3VyY2VfZW51bTsKKworCit0eXBlZGVmIGVudW0KK3sKKyAgICBpc0FCU0VOVCA9IDAsCisgICAgaXNQUkVTRU5UID0gMQorfWlzUHJlc2VudF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBpc19hYnNlbnQgPSAwLAorICAgIGlzX3ByZXNlbnQgPSAxCit9aXNfcHJlc2VudF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBDU19TRVJWSUNFID0gMCwKKyAgICBQU19TRVJWSUNFLAorICAgIENTX1BTX1NFUlZJQ0UsCisgICAgTk9ORV9TRVJWSUNFCit9bW1fdXNlcl9yZWduX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgQ1NfU0VSVklDRV9ERVRBQ0ggPSAwLAorICAgIFBTX1NFUlZJQ0VfREVUQUNILAorICAgIENTX1BTX1NFUlZJQ0VfREVUQUNICit9bW1fdXNlcl9zcnZfZGV0YWNoX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgTU1JX1NFQVJDSF9BTlksCisgICBNTUlfU0VBUkNIX05PUk1BTCwKKyAgIE1NSV9TRUFSQ0hfTk9ORQorfSBtbV91c2VyX3NlYXJjaF90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgU0VBUkNIX0NBVVNFX05PTkU9MCwKKyAgIFNFQVJDSF9DQVVTRV9VTkJMT0NLX0lMTEVHQUxfTUUsIC8qdGhlIHNlYXJjaCBpcyB0cmlnZ2VyZWQgYnkgaWxsZWFnbCBzaW0gdW5ibG9jayovCisgICBTRUFSQ0hfQ0FVU0VfQ09QU19BVVRPCit9IG1tX3VzZXJfc2VhcmNoX2NhdXNlX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgIFNUT1JFRF9BTkRfRlVMTF9CQU5ELAorICBTVE9SRURfT05MWSwKKyAgRlVMTF9CQU5ELAorfSBzY2FuX3R5cGVfZW51bSA7CisKK3R5cGVkZWYgZW51bSB7CisgIEZJTklTSEVELAorICBOT1RfRklOSVNIRUQsCit9IGZ1bGxiYW5kX3Jlc3VsdF9lbnVtIDsKKwordHlwZWRlZiBlbnVtIHsKKyAgTk9UX1VTRURfU0VBUkNIX1BFUklPRCwgLy8gbm90IHN3aXRjaAorICBTSE9SVF9TRUFSQ0hfUEVSSU9ELCAvLyBFQ0Mgb3IgTUNDIHNlYXJjaAorICBOT1JNQUxfU0VBUkNIX1BFUklPRCwgLy8gb3RoZXIgZnVsbGJhbmQKK30gc2VhcmNoX3BlcmlvZF9lbnVtOworCit0eXBlZGVmIGVudW0geworICBDQUxMX1NUQVRVU19TVEFSVCwgLy8gc3RhcnQgb2YgdXNlciB2aWV3IGNhbGwKKyAgQ0FMTF9TVEFUVVNfU1RPUCAvLyBlbmQgb2YgdXNlciB2aWV3IGNhbGwKK30gY2FsbF9zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgU01TX1NUQVRVU19TVEFSVCwgLy8gc3RhcnQgb2YgU01TIHNlc3Npb24KKyAgU01TX1NUQVRVU19TVE9QLCAvLyBlbmQgb2YgU01TIHNlc3Npb24KKyAgU01TX1NUQVRVU19OVU0sCit9IHNtc19zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgSU1DU01TX1NUQVRVU19TVEFSVCwgLy8gc3RhcnQgb2YgU01TIHNlc3Npb24KKyAgSU1DU01TX1NUQVRVU19TVE9QLCAvLyBlbmQgb2YgU01TIHNlc3Npb24KKyAgSU1DU01TX1NUQVRVU19OVU0sCit9IGltY3Ntc19zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBTTVNfTU8gPSAwLAorICAgIFNNU19NVAorfXNtc19kaXJlY3Rpb25fZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgQ0FMTF9UWVBFX0lORElDQVRJT05fTk9STUFMLCAvLyB0aGUgY2FsbCBpcyBub3JtYWwgY2FsbAorICBDQUxMX1RZUEVfSU5ESUNBVElPTl9FTUVSR0VOQ1ksIC8vIHRoZSBjYWxsIGlzIGVtZXJnZW5jeSBjYWxsCisgIENBTExfVFlQRV9JTkRJQ0FUSU9OX05VTEwgLy8gTlVMTAorfSBjYWxsX3R5cGVfaW5kaWNhdGlvbl9lbnVtOworCit0eXBlZGVmIGVudW0geworICBOT19FUlJPUl9QTE1OX0xJU1RfUkVTVUxUID0gMCwKKyAgQ0FOTk9UX1BST0NFU1NfUExNTl9MSVNUX1JFU1VMVCA9IDEsCit9IHBsbW5fbGlzdF9yZXN1bHRfZW51bSA7CisKK3R5cGVkZWYgZW51bSB7CisgICAgQVNfUExNTl9MSVNUX1JFU1VMVF9TVUNDRVNTLAorICAgIEFTX1BMTU5fTElTVF9SRVNVTFRfRkFJTFVSRQorfSBhc19wbG1uX2xpc3RfcmVzdWx0X2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgIE5PX0FDVElPTl9GT1JfUExNTl9TRUFSQ0ggPSAwLAorICBOT19BQ1RJT05fRk9SX1BMTU5fTElTVCA9IDEKK30gbm9fYWN0aW9uX2NhdXNlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgQ0FQQUJJTElUWV9ESVNBQkxFRCwKKyAgIENBUEFCSUxJVFlfRU5BQkxFRCwKKyAgIENBUEFCSUxJVFlfSU5WQUxJRCwgLy8gRm9yIGluaXRpYWxpemF0aW9uCit9IGNhcGFiaWxpdHlfc3dpdGNoX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgTkFTX1NWX0NBUF9HU01fRkRELAorICAgTkFTX1NWX0NBUF9VTVRTLAorI2lmZGVmIF9fVU1UU19UREQxMjhfTU9ERV9fCisgICBOQVNfU1ZfQ0FQX0dTTV9UREQsCisgICBOQVNfU1ZfQ0FQX1REU0NETUEsCisjZW5kaWYKKyAgIE5BU19TVl9DQVBfTFRFLAorICAgTkFTX1NWX0NBUF9OUiwKKyAgIE5BU19TVl9DQVBfVE9UQUwsCit9IG5hc19zdl9jYXBhYmlsaXR5X3JhdF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIE5BU19TVl9DQVBfVVBEQVRFX1BST0NfU1lTX0lORk8sCisgICBOQVNfU1ZfQ0FQX1VQREFURV9QUk9DX0FUVEFDSCwKK30gbmFzX3N2X2NhcGFiaWxpdHlfdXBkYXRlX3Byb2NlZHVyZV90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE5BU19TVl9MT0NBTF9SRUxfV0FJVF9UT19JRExFID0gMCwKKyAgICBOQVNfU1ZfTE9DQUxfUkVMX0ZPUkNFX1JFTEVBU0UgPSAweDEsCisgICAgTkFTX1NWX0xPQ0FMX1JFTF9FTkFMQkVfUzFfTjFfTU9ERSA9IDB4MiwKKyAgICBOQVNfU1ZfTE9DQUxfUkVMX1VTRVJfVFJJR0dFUiA9IDB4NCwKK30gbmFzX3N2X2xvY2FsX3JlbGVhc2VfY2F1c2VfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBOV1NFTF9JTVNfTk9STUFMX1NFUlZJQ0UgPSAwLCAvKiBOQVMgcmVnaXN0cmF0aW9uIHN1Y2Nlc3MgKi8KKyAgICBOV1NFTF9JTVNfTElNSVRFRF9TRVJWSUNFLAorICAgIE5XU0VMX0lNU19OT19TRVJWSUNFICAgLyogcGxtbiBsb3NzL2lkbGUgb29zIGhhcHBlbiAqLworfSBud3NlbF9pbXNfc2VydmljZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBOV1NFTF9QTE1OX0xJU1RfSU5WQUxJRCA9IDAsCisgICAgTldTRUxfUExNTl9MSVNUX0FWQUlMQUJMRSA9IDEsCisgICAgTldTRUxfUExNTl9MSVNUX0NVUlJFTlQgPSAyLAorICAgIE5XU0VMX1BMTU5fTElTVF9GT1JCSURERU4gPSAzCit9bndzZWxfcGxtbl9saXN0X3N0YXR1c19lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBOV1NFTF9JTlRFUk5BVElPTkFMX1JPQU1JTkdfTk9UX0FMTE9XID0gMSwKKyAgICBOV1NFTF9OQVRJT05BTF9ST0FNSU5HX05PVF9BTExPVyA9IDIsCisgICAgTldTRUxfRlBMTU5fTk9UX0FMTE9XID0gMywKKyAgICBOV1NFTF9OT05fRVhJU0lOR19OT1RfQUxMT1cgPSA0LAorICAgIE5XU0VMX0ZBSUxVUkVfTk9UX0FMTE9XID0gNSwKKyAgICBOV1NFTF9DVVNUT01FUl9GUExNTl9OT1RfQUxMT1cgPSA2LAorICAgIE5XU0VMX0NVU1RPTUVSX1RFU1RfTU9ERV9GUExNTl9OT1RfQUxMT1cgPSA3LAorICAgIE5XU0VMX1NQUklOVF9JTlRfTFRFX1JPQU1JTkdfTk9UX0FMTE9XID0gOCwKKyAgICBOV1NFTF9MVEVfUk9BTUlOR19OT1RfQUxMT1cgPSA5LAorICAgIE5XU0VMX05SX1JPQU1JTkdfTk9UX0FMTE9XID0gMTAsCisgICAgTldTRUxfTUNDX05PVF9JTl9BTExPV0VEX01DQ19MSVNUID0gMTEKK31ud3NlbF9wbG1uX25vdF9hbGxvd19yZWFzb25fZW51bTsKKworLyogRGVmaW5lIHRoZSBzZWFyY2ggYWN0aW9uIGFmdGVyIHJlY2VpdmluZyBzcGVjaWZpYyByZWplY3QgY2F1c2UgaW4gQVVUTy9NQU5VQUwgbW9kZSovCit0eXBlZGVmIGVudW0KK3sKKyAgICBOV1NFTF9TRUFSQ0hfQUNUSU9OX0RFRkFVTFQsCisKKyAgICAvKiBSZWplY3QgMTMgKi8KKyAgICBOV1NFTF9BVVRPX1NFQVJDSF9ORVhUX1BMTU5fUkFUX0FGVEVSX1JFSjEzLAorICAgIE5XU0VMX0FVVE9fU0VBUkNIX05FWFRfUExNTl9BRlRFUl9SRUoxMywKKyAgICBOV1NFTF9BVVRPX1NFQVJDSF9DVVJSX1BMTU5fUkFUX0FGVEVSX1JFSjEzLAorICAgIE5XU0VMX01BTlVBTF9TRUFSQ0hfTkVYVF9QTE1OX1JBVF9BRlRFUl9SRUoxMywKKyAgICBOV1NFTF9NQU5VQUxfU0VBUkNIX05FWFRfUExNTl9BRlRFUl9SRUoxMywKKyAgICBOV1NFTF9NQU5VQUxfU0VBUkNIX0NVUlJfUExNTl9SQVRfQUZURVJfUkVKMTMsCisKKyAgICAvKiBSZWplY3QgMTUgKi8KKyAgICBOV1NFTF9BVVRPX1NFQVJDSF9ORVhUX1BMTU5fUkFUX0FGVEVSX1JFSjE1LAorICAgIE5XU0VMX0FVVE9fU0VBUkNIX0NVUlJfUExNTl9SQVRfQUZURVJfUkVKMTUsCisgICAgTldTRUxfTUFOVUFMX1NFQVJDSF9ORVhUX1BMTU5fUkFUX0FGVEVSX1JFSjE1LAorICAgIE5XU0VMX01BTlVBTF9TRUFSQ0hfQ1VSUl9QTE1OX1JBVF9BRlRFUl9SRUoxNSwKKworICAgIE5XU0VMX1NFQVJDSF9BQ1RJT05fTlVNX01BWAorfSBud3NlbF9zZWFyY2hfYWN0aW9uX2Zvcl9yZWplY3RfY2F1c2VfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTldTRUxfUExNTl9USU1FUl9SRUFTT05fTk9ORSwKKyAgICBOV1NFTF9QTE1OX1RJTUVSX1JFQVNPTl9SRUpfNDIsCisgICAgTldTRUxfUExNTl9USU1FUl9BVE5UX0JBQ0tPRkYsCisgICAgTldTRUxfUExNTl9USU1FUl9FVVRSQU5fTk9fU1VJVEFCTEUsCisgICAgTldTRUxfUExNTl9USU1FUl9OT19QRE5fQVZBSUxBQkxFLAorI2lmZGVmIFVOSVRfVEVTVAorICAgIE5XU0VMX1BMTU5fVElNRVJfVVRfSU1TX1BETl9USFJPVFRMSU5HLAorI2VuZGlmCisgICAgLyogRm9yIFZ6VyBDRE1BLWxlc3MsIHdlIG5lZWQgdG8gc3RhcnQgVFBMTU5fYmFycmluZyBmb3IgUExNTiB3aGVyZSB2b2ljZSBpcyBub3QgcG9zc2libGUgb24gRVVUUkFOICovCisgICAgTldTRUxfUExNTl9USU1FUl9WWldfRVVUUkFOX0JBUlJJTkcsCisKKyAgICAvKiBGb3IgVnpXIENETUEtbGVzcywgd2UgbmVlZCB0byBzdGFydCBUNUdOUlNBX2JhcnJpbmcgdGltZXIgZm9yIFBMTU4gd2hlcmUgdm9pY2UgaXMgbm90IHBvc3NpYmxlIG9uIE5SICovCisgICAgTldTRUxfUExNTl9USU1FUl9WWldfNUdOUlNBX0JBUlJJTkcsCisKKyAgICAvKiBUUyAyNC4zMDEgc3ViY2xhdXNlIDQuNQorICAgICAqICAgIEFzIGFuIGltcGxlbWVudGF0aW9uIG9wdGlvbiwgdGhlIFVFIG1heSBzdGFydCBhIHRpbWVyIGZvciBlbmFibGluZyBFLVVUUkEgIHdoZW4gdGhlIFVFJ3MgYXR0YWNoIGF0dGVtcHQKKyAgICAgKiAgICBjb3VudGVyIG9yIHRyYWNraW5nIGFyZWEgdXBkYXRpbmcgYXR0ZW1wdCBjb3VudGVyIHJlYWNoZXMgNSBhbmQgdGhlIFVFIGRpc2FibGVzIEUtVVRSQSBjYXBhYmlsaXR5IGZvciBjYXNlcworICAgICAqICAgIGRlc2NyaWJlZCBpbiBzdWJjbGF1c2VzIDUuNS4xLjMuNC4zLCA1LjUuMS4zLjYsIDUuNS4zLjMuNC4zIGFuZCA1LjUuMy4zLjYuCisgICAgICovCisgICAgTldTRUxfUExNTl9USU1FUl9FVVRSQU5fQUJOT1JNQUwsCisgICAgLyogVFMgMjMuMTIyIHN1YmNsYXVzZSAzLjEKKyAgICAgKiAgICBJZiBNUyB0aGF0IGhhcyBkaXNhYmxlZCBpdHMgRS1VVFJBIGNhcGFiaWxpdHkgcmUtZW5hYmxlcyBpdCB3aGVuIFBMTU4gc2VsZWN0aW9uIGlzIHBlcmZvcm1lZCwgdGhlbiB0aGUgTVMKKyAgICAgKiAgICBzaG91bGQsIGZvciBkdXJhdGlvbiBvZiB0aW1lciBURCwgbWVtb3JpemUgdGhlIFBMTU5zIHdoZXJlIEUtVVRSQSBjYXBhYmlsaXR5IHdhcyBkaXNhYmxlZCBhcyBQTE1OcyB3aGVyZSB2b2ljZQorICAgICAqICAgIHNlcnZpY2Ugd2FzIG5vdCBwb3NzaWJsZS4KKyAgICAgKi8KKyAgICBOV1NFTF9QTE1OX1RJTUVSX0VVVFJBTl9WT0lDRV9OT1RfUE9TU0lCTEUsCisgICAgLyogVFMgMjMuMTIyIHN1YmNsYXVzZSAzLjEKKyAgICAgKiAgICBUaGUgTVMgc2hvdWxkIG1haW50YWluIGEgbGlzdCBvZiBQTE1OcyB3aGVyZSB0aGUgTjEgbW9kZSBjYXBhYmlsaXR5IHdhcyBkaXNhYmxlZCBkdWUgdG8gcmVjZWlwdCBvZiBhIHJlamVjdAorICAgICAqICAgIGZyb20gdGhlIG5ldHdvcmsgd2l0aCA1R01NIGNhdXNlICMyNywgYXMgUExNTnMgd2hlcmUgTjEgbW9kZSBpcyBub3QgYWxsb3dlZC4uLgorICAgICAqICAgIHRoZSBNUyBzaG91bGQgYWRkIHRoZSBpZGVudGl0eSBvZiB0aGUgUExNTiB0byB0aGUgbGlzdCBvZiBQTE1OcyB3aGVycmUgTjEgbW9kZSBpcyBub3QgYWxsb3dlZCBhbmQgc2hvdWxkCisgICAgICogICAgc3RhcnQgdGltZXIgVEcgaWYgdGltZXIgVEcgaXMgbm90IGFscmVhZHkgcnVubmluZy4KKyAgICAgKi8KKyAgICBOV1NFTF9QTE1OX1RJTUVSX04xX01PREVfTk9UX0FMTE9XLAorICAgIC8qIFRTIDI0LjUwMSBzdWJjbGF1c2UgNC45IFIxNQorICAgICAgICAgIElmIHRoZSBVRSBhdHRlbXB0cyB0byBlc3RhYmxpc2ggYW4gZW1lcmdlbmN5IFBEVSBzZXNzaW9uIGluIGEgUExNTiB3aGVyZSBOMSBtb2RlIGNhcGFiaWxpdHkgd2FzIGRpc2FibGVkIGR1ZQorICAgICAgICAgIHRvIHRoZSBVRWBzIHJlZ2lzdHJhdGlvbiBhdHRlbXB0IGNvdW50ZXIgaGF2ZSByZWFjaGVkIDUsIHRoZSBVRSBtYXkgZW5hYmxlIE4xIG1vZGUgY2FwYWJpbGl0eSBmb3IgdGhhdCBQTE1OCisgICAgICAgICAgbWVtb3JpemVkIGJ5IHRoZSBVRS4KKworICAgICAgICAgIE5PVEUgMjogdGhlIHZhbHVlIG9mIHRoZSB0aW1lciBmb3IgcmUtZW5hYmxpbmcgTjEgbW9kZSBjYXBhYmlsaXR5IGlzIHJlY29tbWVuZGVkIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSB2YWx1ZQorICAgICAgICAgIG9mIFQzNTAyIHdoaWNoIGZvbGxvd3MgdGhlIGhhbmRsaW5nIHNwZWNpZmllZCBpbiBzdWJjbGF1c2UgNS4zLjguCisgICAgICovCisgICAgTldTRUxfUExNTl9USU1FUl9OMV9BQk5PUk1BTCwKKyAgICAvKiBUUyAyMy4xMjIgc3ViY2xhdXNlIDMuMSBSMTUKKyAgICAgKiAgICBXaGVuIHRoZSBNUyBkaXNhYmxlcyBpdHMgTjEgbW9kZSBjYXBhYmlsaXR5IGR1ZSB0byBJTVMgdm9pY2Ugbm90IGF2YWlsYWJsZSBhbmQgdGhlIE1TYHMgdXNhZ2Ugc2V0dGluZyB3YXMKKyAgICAgKiAgICAidm9pY2UgY2VudHJpYyI6dGhlIE1TIHNob3VsZCBhZGQgdGhlIGlkZW50aXR5IG9mIHRoZSBQTE1OIHRvIHRoZSBsaXN0IG9mIFBMTU5zIHdoZXJlIHZvaWNlIHNlcnZpY2Ugd2FzIG5vdAorICAgICAqICAgICBwb3NzaWJsZSBpbiBOMSBtb2RlIGFuZCBzaG91bGQgc3RhcnQgdGltZXIgVEYgaWYgdGltZXIgVEYgaXMgbm90IGFscmVhZHkgcnVubmluZy4KKyAgICAgKi8KKyAgICBOV1NFTF9QTE1OX1RJTUVSX04xX1ZPSUNFX05PVF9QT1NTSUJMRSwKKyAgICBOV1NFTF9QTE1OX1RJTUVSX0hQTE1OX1JFSl8xNCwKKyAgICBOV1NFTF9QTE1OX1RJTUVSX1ZaV19WR01NX1QzNTAyLAorICAgIE5XU0VMX1BMTU5fVElNRVJfVlpXX1ZHTU1fVDM1MjUsCisgICAgTldTRUxfUExNTl9USU1FUl9WWldfVkdNTV9TUl9USFJPVFRMSU5HLAorCisgICAgTldTRUxfUExNTl9USU1FUl9OMV9NQVhfUERVX0VTVF9USU1FT1VUX1JFQUNIRUQsIC8qIEFUVCBMVEUtTjM3LTEtMzcwNiBzdGVwIDUgKi8KKwlOV1NFTF9QTE1OX1RJTUVSX04xX0RJU0FCTEVfNEc1X0lSQVRfRkFJTF9GVEEsCit9bndzZWxfcGxtbl90aW1lcl9yZWFzb25fZW51bTsKKworLyogdGhlIGVudW0gaXMgdXNlZCBpbiBJQ0QsIHBsZWFzZSBhcHBlbmQgbmV3IGFkZGVkIGVudW0sIG5vdCBpbnNlcnQgaXQgKi8KK3R5cGVkZWYgZW51bQoreworICAgIE5XU0VMX1JFQVNPTl9OT05FID0gMCwKKyAgICBOV1NFTF9HUFJTX0ZQTE1OLAorICAgIE5XU0VMX0VTTV9GUExNTiwKKyAgICBOV1NFTF9DVVNUT01fRVVUUkFOX0RJU0FCTEUsCisgICAgTldTRUxfQ1VTVE9NX04xX0RJU0FCTEUsCisgICAgTldTRUxfQ1VTVE9NX0VORENfRElTQUJMRSwKKyAgICBOV1NFTF9BVE5UX0JBQ0tPRkYsCisgICAgTldTRUxfUkVKXzQyLAorICAgIE5XU0VMX1ZaV19IVk9MVEVfSU1TX05PVF9ST0FNSU5HX0NTXzE4LAorICAgIE5XU0VMX0FUTlRfRElTQUJMRV9MVEUsCisgICAgTldTRUxfQ1NfUFNfQ0FVU0UsCisgICAgTldTRUxfREFUQV9PRkZfSU1TX09GRiwKKyAgICBOV1NFTF9EQVRBX1JPQU1JTkdfT0ZGX0lNU19PRkYsCisgICAgTldTRUxfUk9BTUlOR19OT1RfQUxMT1csCisgICAgTldTRUxfVk9JQ0VfQ0VOVFJJQ19TMV9ESVNBQkxFRCwKKyAgICBOV1NFTF81R19TQV9PUFRJT05fMl9OT1RfRU5BQkxFRCwKKyAgICBOV1NFTF9SQVRfSVNfTk9UX0VOQUJMRUQsCisgICAgTldTRUxfQ0FOTk9UX0hBVkVfUFNfTk9STUFMX1NFUlZJQ0UsCisgICAgTldTRUxfRElTQUJMRV9QTE1OX0JBU0VfVElNRVJfUlVOTklORywKKworICAgIC8qIFBMTU4gQkFTRSBUSU1FUiBzdGFydCAqLworICAgIE5XU0VMX0RJU0FCTEVfVElNRVJfUkVBU09OX1JFSl80MiwKKyAgICBOV1NFTF9ESVNBQkxFX1RJTUVSX0FUTlRfQkFDS09GRiwKKyAgICBOV1NFTF9ESVNBQkxFX1RJTUVSX05PX1NVSVRBQkxFLAorICAgIE5XU0VMX0RJU0FCTEVfVElNRVJfTk9fUEROX0FWQUlMQUJMRSwKKyAgICBOV1NFTF9ESVNBQkxFX1RJTUVSX0VVVFJBTl9WWldfQkFSUklORywKKyAgICBOV1NFTF9ESVNBQkxFX1RJTUVSX0VVVFJBTl9BQk5PUk1BTCwKKyAgICBOV1NFTF9ESVNBQkxFX1RJTUVSX0VVVFJBTl9WT0lDRV9OT1RfUE9TU0lBQkxFLAorICAgIE5XU0VMX0RJU0FCTEVfVElNRVJfTjFfTk9UX0FMTE9XLAorICAgIE5XU0VMX0RJU0FCTEVfVElNRVJfTjFfQUJOT1JNQUwsCisgICAgTldTRUxfRElTQUJMRV9USU1FUl9OMV9WT0lDRV9OT1RfUE9TU0lBQkxFLAorICAgIE5XU0VMX0RJU0FCTEVfVElNRVJfNUdOUlNBX1ZaV19CQVJSSU5HLAorICAgIE5XU0VMX0RJU0FCTEVfVElNRVJfRVVUUkFOX0hQTE1OX1JFSl8xNCwKKyAgICBOV1NFTF9ESVNBQkxFX1RJTUVSX04xX0RJU0FCTEVfNEc1X0lSQVRfRkFJTF9GVEEsCisKKyAgICAvKiBOQVMgbm90IGFsbG93IGNhdXNlICovCisgICAgTldTRUxfTkFTX05PVF9BTExPV19OT19QRE4sCisgICAgTldTRUxfTkFTX05PVF9BTExPV19UMzQwMiwKKyAgICBOV1NFTF9OQVNfTk9UX0FMTE9XX1RIUk9UVExJTkdfQVBOLAorICAgIE5XU0VMX05BU19OT1RfQUxMT1dfRU1DX0JTLAorCisgICAgLyogVnpXIFZHTU0gTkFTIG5vdCBhbGxvdyBjYXVzZSAqLworICAgIE5XU0VMX05BU19OT1RfQUxMT1dfVlpXX1ZHTU1fVDM1MDIsCisgICAgTldTRUxfTkFTX05PVF9BTExPV19WWldfVkdNTV9UMzUyNSwKKyAgICBOV1NFTF9OQVNfTk9UX0FMTE9XX1ZaV19WR01NX1NSX1RIUk9UVExJTkcsICAgICAgICAKKyAgICBOV1NFTF9OQVNfTk9UX0FMTE9XX1ZaV19WR01NX04xX01PREVfTk9UX0FMTE9XRUQsCisJCisJLyogUExNTiBCQVNFIFRJTUVSIHN0YXJ0ICovCisgICAgTldTRUxfRElTQUJMRV9USU1FUl9OMV9BQk5PUk1BTF9JUkFUX0ZBSUwsCisKKwkvKiBjb21tb24gcmVhc29uKi8KKyAgICBOV1NFTF9ESVNBQkxFX0JBU0VEX09OX01SU19DT05GSUcsCisgICAgTldTRUxfSU1TX09GRl9BTkRfQ1NfVU5BVkFJTEFCTEUsCisKKyAgICBOV1NFTF9ESVNBQkxFX1RJTUVSX04xX01BWF9QRFVfRVNUX1RJTUVPVVRfUkVBQ0hFRCwKKworICAgIC8qIFZ6VyBWR01NIE5BUyBub3QgYWxsb3cgY2F1c2UgKi8KKyAgICBOV1NFTF9OQVNfTk9UX0FMTE9XX1ZaV19WR01NX04xX01PREVfTk9UX0FMTE9XRURfVEcsCit9IG53c2VsX2NhcGFiaWxpdHlfZGlzYWJsZWRfcmVhc29uX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgQ09VTlRSWV9OT1RfQ0FNUEVELAorICAgIENPVU5UUllfVU5LTk9XTiwKKyAgICBDT1VOVFJZX0lORElBCit9bndzZWxfY291bnRyeV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBGT1VORF9JTkRfRFVSSU5HX1NFQVJDSCA9IDAsCisgICAgRk9VTkRfSU5EX0RVUklOR19VU0VSX0xJU1QgPSAxLAorfWZvdW5kX2luZF9zb3VyY2VfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTElTVF9JTkRfU1lTX0lORk8gPSAwLAorICAgIExJU1RfSU5EX0FWQUlMQUJMRSA9IDEsCisgICAgTElTVF9JTkRfVVNFUiA9IDIsCisgICAgTElTVF9JTkRfRklSU1RfRk9VTkQgPSAzLAorICAgIExJU1RfSU5EX0ZPVU5EX0lORCA9IDQsCit9bGlzdF9pbmRfc291cmNlX2VudW07CisKKwordHlwZWRlZiBlbnVtCit7CisgICAgVVNFUl9MSVNUX1RZUEVfTk9STUFMID0gMCwKKyAgICBVU0VSX0xJU1RfVFlQRV9GQVNUID0gMSwKKyAgICBVU0VSX0xJU1RfVFlQRV9HSVZFTl9USU1FUl9OVU1CRVIgPSAzLAorICAgIFVTRVJfTElTVF9UWVBFX0lQQ19OV19TQ0FOID0gNCwKKyAgICBVU0VSX0xJU1RfVFlQRV9DRUxMX01FQVMgPSA1LAorfXVzZXJfbGlzdF90eXBlX2VudW07CisKKy8qIE1NIFBlZXIgdG8gUGVlciBNZXNzYWdlIHR5cGUgdmFsdWVzICovCisvKiB0aGUgZ2VuZXJhbCBmb3JtYXQgb2YgdmFsdWUgaWYgMHgtLSAtLS0tIHdoZXJlIHggc3RhbmRzCisgKiBmb3Igc2VuZCBzZXF1ZW5jZSBudW1iZXIuVGhlIHBlZXIgbWVzc2FnZXMgZnJvbSBuL3cgd2lsbCBzZXQgaXQgdG8KKyAqIDAgc2VlIHNlY3Rpb24gMTAuNCBvZiBHU00gMDQuMDguSW4gIHRoZSBjYXNlIG9mIE1PIHBlZXIgbWVzc2FnZXMsUlIKKyAqIHdpbGwgYWRkIHNlbmQgc2VxdWVuY2UgbnVtYmVyLiBUaGUgdmFsdWUgZmlsbGVkIGJ5IE1NIGZvciB4IGlzCisgKiB6ZXJvLiAqLworCit0eXBlZGVmIGVudW17CisgICAgTU1fUEVFUl9NU0dfQkVHSU4gICAgICAgICAgICAgPSAweDAxLCAgICAgIC8qIDEgKi8KKyAgICBNTV9QRUVSX0lNU0lfREVUQUNIX0lORF9NU0cgICA9IE1NX1BFRVJfTVNHX0JFR0lOLAorICAgIE1NX1BFRVJfTE9DX1VQREFUSU5HX0FDQ19NU0cgID0gMHgwMiwgICAgICAvKiAyICovCisgICAgTU1fUEVFUl9MT0NfVVBEQVRJTkdfUkVKX01TRyAgPSAweDA0LCAgICAgIC8qIDQgKi8KKyAgICBNTV9QRUVSX0xPQ19VUERBVElOR19SRVFfTVNHICA9IDB4MDgsICAgICAgLyogOCAqLworICAgIE1NX1BFRVJfQVVUSEVOX1JFSl9NU0cgICAgICAgID0gMHgxMSwgICAgICAvKiAxNyAqLworICAgIE1NX1BFRVJfQVVUSEVOX1JFUV9NU0cgICAgICAgID0gMHgxMiwgICAgICAvKiAxOCAqLworICAgIE1NX1BFRVJfQVVUSEVOX1JTUF9NU0cgICAgICAgID0gMHgxNCwgICAgICAvKiAyMCAqLworICAgIE1NX1BFRVJfQVVUSEVOX0ZBSUxfTVNHICAgICAgID0gMHgxQywgICAgICAvKiAyOCAqLworICAgIE1NX1BFRVJfSURFTlRJVFlfUkVRX01TRyAgICAgID0gMHgxOCwgICAgICAvKiAyNCAqLworICAgIE1NX1BFRVJfSURFTlRJVFlfUlNQX01TRyAgICAgID0gMHgxOSwgICAgICAvKiAyNSAqLworICAgIE1NX1BFRVJfVE1TSV9SRUFMTE9DX0NNRF9NU0cgID0gMHgxYSwgICAgICAvKiAyNiAqLworICAgIE1NX1BFRVJfVE1TSV9SRUFMTE9DX0NNUExfTVNHID0gMHgxYiwgICAgICAvKiAyNyAqLworICAgIE1NX1BFRVJfQ01fU0VSVklDRV9BQ0NfTVNHICAgID0gMHgyMSwgICAgICAvKiAzMyAqLworICAgIE1NX1BFRVJfQ01fU0VSVklDRV9SRUpfTVNHICAgID0gMHgyMiwgICAgICAvKiAzNCAqLworICAgIE1NX1BFRVJfQ01fU0VSVklDRV9BQlJUX01TRyAgID0gMHgyMywgICAgICAvKiAzNSAqLworICAgIE1NX1BFRVJfQ01fU0VSVklDRV9SRVFfTVNHICAgID0gMHgyNCwgICAgICAvKiAzNiAqLworICAgIE1NX1BFRVJfQ01fU0VSVklDRV9QUk1QVF9NU0cgID0gMHgyNSwgICAgICAvKiAzNyAqLworICAgIE1NX1BFRVJfUEFHSU5HX1JTUF9NU0cgICAgICAgID0gMHgyNywgICAgICAvKiAzOSAqLworICAgIE1NX1BFRVJfQ01fUkVFU1RfUkVRX01TRyAgICAgID0gMHgyOCwgICAgICAvKiA0MCAqLworICAgIE1NX1BFRVJfQUJPUlRfTVNHICAgICAgICAgICAgID0gMHgyOSwgICAgICAvKiA0MSAqLworICAgIE1NX1BFRVJfTU1fTlVMTF9NU0cgICAgICAgICAgID0gMHgzMCwgICAgICAvKiA0OCAqLworICAgIE1NX1BFRVJfTU1fU1RBVFVTX01TRyAgICAgICAgID0gMHgzMSwgICAgICAvKiA0OSAqLworICAgIE1NX1BFRVJfTU1fSU5GT1JNQVRJT05fTVNHICAgID0gMHgzMiwgICAgICAvKiA1MCAqLworICAgIE1NX1RPVF9QRUVSX01TRworfSBtbV9wZWVyX21zZ190eXBlX2VudW07CisKKyNkZWZpbmUgTUFYX1ZBTChWQUxfQSwgVkFMX0IpICAgKCgoVkFMX0EpID4gKFZBTF9CKSkgPyAoVkFMX0EpOihWQUxfQikpCisKKy8qIExhbnNsbyAyMDA2MDYyMTogbW9kaWZ5IHR5cGUgc2l6ZSBmb3IgVkMgc2ltdWxhdG9yIGVudmlyb25tZW50ICovCisgICAgI2lmZGVmIF9fTVRLX1RBUkdFVF9fCisgICAgICAgICNkZWZpbmUgUkxDX1VMX0NUUkxfSEVBREVSX0xFTkdUSCAxNCAvL3NpemVvZiBybGNfcGVlcl9kYXRhX2luZm9fc3RydWN0CisgICAgI2Vsc2UKKyAgICAgICAgI2RlZmluZSBSTENfVUxfQ1RSTF9IRUFERVJfTEVOR1RIIDMyIC8vc2l6ZW9mIHJsY19wZWVyX2RhdGFfaW5mb19zdHJ1Y3QKKyAgICAjZW5kaWYKKy8qIGVvIExhbnNsbyAyMDA2MDYyMSAqLworCisjZGVmaW5lIFJMQ19ETF9DVFJMX0hFQURFUl9MRU5HVEggMyAvL3NpemVvZiBybGNfZGxfYmxrX3N0cnVjdAorLyogQ2xhaXJlIDA0MTExNiBjaGFuZ2UgOiBBZGFwdCBFR1BSUyBETCBpbnRlcmZhY2UgKi8KKyNpZmRlZiBfX0VHUFJTX01PREVfXworI2RlZmluZSBSTENfRExfRUdQUlNfQ1RSTF9IRUFERVJfTEVOR1RIIDMgLy9zaXplb2YgcmxjX2RsX2VncHJzX2Jsa19zdHJ1Y3QKKyNlbmRpZgorCisjZGVmaW5lIFNORF9ETF9DVFJMX0hFQURFUl9MRU5HVEggMTIgIC8vVGhlIHNpemUgb2Ygc25kX25zYXBpX2RsX3NucGR1X2J1ZmZfc3RydWN0CisjZGVmaW5lIExMQ19IRUFERVJfTEVOR1RIICAgNQorI2RlZmluZSBMTENfVEFJTF9MRU5HVEggICAgIDMKKworLy9UaGUgc2l6ZSBvZiAoMjQsIGxsc25kX3VuaXRkYXRhX3JlcV9zdHJ1Y3QsIGxsc25kX2RhdGFfcmVxX3N0cnVjdCwgTExDX0hFQURFUl9MRU5HVEgrUkxDX1VMX0NUUkxfSEVBREVSX0xFTkdUSCkKKy8qICNkZWZpbmUgU05EX1VMX0ZSRUVfSEVBREVSX0xFTkdUSCAyNCAgKi8KKyNkZWZpbmUgU05EX1VMX0ZSRUVfSEVBREVSX0xFTkdUSCBNQVhfVkFMKDI0LCAoTExDX0hFQURFUl9MRU5HVEgrUkxDX1VMX0NUUkxfSEVBREVSX0xFTkdUSCkpCisKKwordHlwZWRlZiBlbnVtCit7CisgICAgTExDX1NBUElfTk9UX0FTU0lHTkVEID0gMCwKKyAgICBMTENfU0FQSTEgID0gIDEsCisgICAgTExDX1NBUEkyICA9ICAyLAorICAgIExMQ19TQVBJMyAgPSAgMywKKyAgICBMTENfU0FQSTUgID0gIDUsCisgICAgTExDX1NBUEk3ICA9ICA3LAorICAgIExMQ19TQVBJOCAgPSAgOCwKKyAgICBMTENfU0FQSTkgID0gIDksCisgICAgTExDX1NBUEkxMSA9ICAxMQorfWxsY19zYXBpX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgU1VCU0NSSUJFRF9UUkFOU0ZFUl9ERUxBWSA9IDAsCisgICAgUkVTRVJWRURfTldfVE9fTVNfVFJBTlNGRVJfREVMQVkgICA9IDAsCisgICAgVFJBTlNGRVJfREVMQVkxID0gMSwKKyAgICBUUkFOU0ZFUl9ERUxBWTIgPSAxNSwKKyAgICBUUkFOU0ZFUl9ERUxBWTMgPSAxNiwKKyAgICBUUkFOU0ZFUl9ERUxBWTQgPSAzMSwKKyAgICBUUkFOU0ZFUl9ERUxBWTUgPSAzMiwKKyAgICBUUkFOU0ZFUl9ERUxBWTYgPSA2MiwKKyAgICBSRVNFUlZFRF9CSURJUkVDVF9UUkFOU0ZFUl9ERUxBWSA9IDYzCit9IHRyYW5zZmVyX2RlbGF5X2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgUkVTRVJWRURfTldfVE9fTVNfTUFYX1NEVV9TSVpFICAgPSAwLAorICAgIFNVQlNDUklCRURfTVNfVE9fTldfTUFYX1NEVV9TSVpFID0gMCwKKyAgICBTRFVfU0laRV8xNTAyX09DVEVUUyAgICAgICAgICAgICA9IDE1MSwKKyAgICBTRFVfU0laRV8xNTEwX09DVEVUUyAgICAgICAgICAgICA9IDE1MiwKKyAgICBTRFVfU0laRV8xNTIwX09DVEVUUyAgICAgICAgICAgICA9IDE1MywKKyAgICBSRVNFUlZFRF9CSURJUkVDVF9NSU5fU0RVX1NJWkUgICA9IDE1NCwKKyAgICBSRVNFUlZFRF9CSURJUkVDVF9NQVhfU0RVX1NJWkUgPSAyNTUKK30gbWF4X3NkdV9zaXplX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgU1VCU0NSSUJFRF9NQVhfQklUX1JBVEVfVVBMSU5LID0gMCwKKyAgICBSRVNFUlZFRF9OV19UT19NU19NQVhfQklUX1JBVEVfVVBMSU5LID0gMCwKKyAgICBNQVhfQklUX1JBVEVfVVBMSU5LMSA9IDEsCisgICAgTUFYX0JJVF9SQVRFX1VQTElOSzIgPSA2MywKKyAgICBNQVhfQklUX1JBVEVfVVBMSU5LMyA9IDY0LAorICAgIE1BWF9CSVRfUkFURV9VUExJTks0ID0gMTI3LAorICAgIE1BWF9CSVRfUkFURV9VUExJTks1ID0gMTI4LAorICAgIE1BWF9CSVRfUkFURV9VUExJTks2ID0gMjU0LAorICAgIE1BWF9CSVRfUkFURV9VUExJTktfWkVSTyA9IDI1NSAgICAgICAgLy8gZXJpY2EgX19TTV8zR19fCisgICAgLy9SRVNFUlZFRF9CSURJUkVDVF9NQVhfQklUX1JBVEVfVVBMSU5LID0gMjU1IC8vIG1lYW5pbmcgaXMgY2hhbmdlZCBpbiBSOTkgYWNjb3JkaW5nIHRvIDI0LjAwOAorfSBtYXhfYml0X3JhdGVfdXBsaW5rX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgU1VCU0NSSUJFRF9NQVhfQklUX1JBVEVfRE9XTkxJTks9IDAsCisgICAgUkVTRVJWRURfTldfVE9fTVNfTUFYX0JJVF9SQVRFX0RPV05MSU5LID0gMCwKKyAgICBNQVhfQklUX1JBVEVfRE9XTkxJTksxID0gMSwKKyAgICBNQVhfQklUX1JBVEVfRE9XTkxJTksyID0gNjMsCisgICAgTUFYX0JJVF9SQVRFX0RPV05MSU5LMyA9IDY0LAorICAgIE1BWF9CSVRfUkFURV9ET1dOTElOSzQgPSAxMjcsCisgICAgTUFYX0JJVF9SQVRFX0RPV05MSU5LNSA9IDEyOCwKKyAgICBNQVhfQklUX1JBVEVfRE9XTkxJTks2ID0gMjU0LAorICAgIE1BWF9CSVRfUkFURV9ET1dOTElOS19aRVJPID0gMjU1ICAgICAgICAgICAgICAgLy8gZXJpY2EgX19TTV8zR19fCisgICAgLy9SRVNFUlZFRF9CSURJUkVDVF9NQVhfQklUX1JBVEVfRE9XTkxJTks9IDI1NSAvLyBtZWFuaW5nIGlzIGNoYW5nZWQgaW4gUjk5IGFjY29yZGluZyB0byAyNC4wMDgKK30gbWF4X2JpdF9yYXRlX2Rvd25saW5rX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgU1VCU0NSSUJFRF9HVUFSQU5URF9CSVRfUkFURV9VUExJTksgPSAwLAorICAgIFJFU0VSVkVEX05XX1RPX01TX0dVQVJBTlREX0JJVF9SQVRFX1VQTElOSyA9IDAsCisgICAgR1VBUkFOVERfQklUX1JBVEVfVVBMSU5LMSA9IDEsCisgICAgR1VBUkFOVERfQklUX1JBVEVfVVBMSU5LMiA9IDYzLAorICAgIEdVQVJBTlREX0JJVF9SQVRFX1VQTElOSzMgPSA2NCwKKyAgICBHVUFSQU5URF9CSVRfUkFURV9VUExJTks0ID0gMTI3LAorICAgIEdVQVJBTlREX0JJVF9SQVRFX1VQTElOSzUgPSAxMjgsCisgICAgR1VBUkFOVERfQklUX1JBVEVfVVBMSU5LNiA9IDI1NCwKKyAgICBSRVNFUlZFRF9CSURJUkVDVF9HVUFSQU5URF9CSVRfUkFURV9VUExJTksgPSAyNTUKK30gZ3VhcmFudGRfYml0X3JhdGVfdXBsaW5rX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgU1VCU0NSSUJFRF9HVUFSQU5URF9CSVRfUkFURV9ET1dOTElOSz0gMCwKKyAgICBSRVNFUlZFRF9OV19UT19NU19HVUFSQU5URF9CSVRfUkFURV9ET1dOTElOSyA9IDAsCisgICAgR1VBUkFOVERfQklUX1JBVEVfRE9XTkxJTksxID0gMSwKKyAgICBHVUFSQU5URF9CSVRfUkFURV9ET1dOTElOSzIgPSA2MywKKyAgICBHVUFSQU5URF9CSVRfUkFURV9ET1dOTElOSzMgPSA2NCwKKyAgICBHVUFSQU5URF9CSVRfUkFURV9ET1dOTElOSzQgPSAxMjcsCisgICAgR1VBUkFOVERfQklUX1JBVEVfRE9XTkxJTks1ID0gMTI4LAorICAgIEdVQVJBTlREX0JJVF9SQVRFX0RPV05MSU5LNiA9IDI1NCwKKyAgICBSRVNFUlZFRF9CSURJUkVDVF9HVUFSQU5URF9CSVRfUkFURV9ET1dOTElOSz0gMjU1Cit9IGd1YXJhbnRkX2JpdF9yYXRlX2Rvd25saW5rX2VudW07CisKKwordHlwZWRlZiBrYWxfdWludDggYmFuZF9zZWxlY3Rpb25fZW51bTsKKyNkZWZpbmUgQkFORF9QOTAwICAgMHgwMQorI2RlZmluZSBCQU5EX0U5MDAgICAweDAyCisjZGVmaW5lIEJBTkRfUjkwMCAgIDB4MDQKKyNkZWZpbmUgQkFORF8xODAwIDB4MDgKKyNkZWZpbmUgQkFORF8xOTAwIDB4MTAKKyNkZWZpbmUgQkFORF9EVUFMIChCQU5EX1A5MDB8QkFORF9FOTAwfEJBTkRfMTgwMCkKKyNkZWZpbmUgQkFORF84NTAgIDB4ODAKKwordHlwZWRlZiBlbnVtCit7CisgICBDRUxMX0NIQU5HRUQgLAorICAgTEFfQ0hBTkdFRCwKKyAgIFBMTU5fQ0hBTkdFRCwKKyAgIE5VTV9PRl9HU19DSEFOR0VECit9IGNiX2dlb2dyYXBoeV9lbnVtOworCisvKiBVQVMvR0FTIDwtPiBSQVRDTSBiZWdpbiAqLworCit0eXBlZGVmIGVudW0geworICAgIE5NXzEgPSAwLAorICAgIE5NXzIgPSAxLAorICAgIE5NXzMgPSAyLAorICAgIE5NX05PTkUgPSAzCit9bmV0d29ya19tb2RlX2VudW07CisKKwordHlwZWRlZiBlbnVtIHsKKyAgICBQTE1OX05PVF9GT1VORCA9IDAsCisgICAgUExNTl9GT1VORCAgICAgPSAxLAorICAgIENBTk5PVF9QUk9DRVNTID0gMiwKKyAgICBHRU1JTklfU1VTUEVOREVEX0ZBSUxVUkUgPSAzCit9IHBsbW5fc2VhcmNoX3Jlc3VsdF9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIENBTlRfUFJPQ19SRUFTT05fTk9ORSA9IDAsCisgICAgQ0FOVF9QUk9DX1JFQVNPTl9TSU1fTk9UX1ZBTElECit9IHBsbW5fc2VhcmNoX2NhbnRfcHJvY19yZWFzb25fZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBQTE1OX1NFQVJDSF9VTlJFTEFURUQgPSAwLAorICAgIFBMTU5fU0VBUkNIX0ZJTklTSEVEICA9IDEsCisgICAgUExNTl9TRUFSQ0hfU1RBUlRFRCAgID0gMiwKK30gcGxtbl9zZWFyY2hfc3RhdHVzX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgRElTQUJMRV9JTlRFUk5BVElPTkFMX1JPQU1JTkdfU0VUVElORyA9IDAsCisgICAgRElTQUJMRV9OQVRJT05BTF9ST0FNSU5HX1NFVFRJTkcgPSAxLAorICAgIERJU0FCTEVfSFBQTE1OX1NFQVJDSF9TRVRUSU5HID0gMgorfSByb2FtaW5nX3NldHRpbmdfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBOV1NFTF9QQU1fTk9fQVZBSUxBQkxFX1BETiA9IDAsCisgICAgTldTRUxfUEFNX0hBU19BVkFJTEFCTEVfUEROID0gMQorfSBwZG5fdXBkYXRlX2V2ZW50X2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgQ0VMTF9UWVBFX1NVSVRBQkxFICAgICAgID0gMCwKKyAgICBDRUxMX1RZUEVfQUNDRVBUQUJMRSAgICAgPSAxLAorICAgIENFTExfVFlQRV9DQU1QRURfTk9UX0FMTE9XRUQgPSAyLAorICAgIENFTExfVFlQRV9OT1RfQVBQTElDQUJMRSA9IDMKK30gYXNfY2VsbF90eXBlX2VudW07CisKKwordHlwZWRlZiBlbnVtIHsKKyAgICBDRUxMX0JBTkRfSU5GT19UWVBFX05PTkUgICAgICAgPSAwLAorICAgIENFTExfQkFORF9JTkZPX1RZUEVfTVJVICAgICAgICA9IDEsCisgICAgQ0VMTF9CQU5EX0lORk9fVFlQRV9SQUwgICAgICAgID0gMiwKK30gY2VsbF9iYW5kX2luZm9fdHlwZV9lbnVtOworCisjaWYgMCAvKiBtb3ZlIHRvIGNyb3NzIGNvcmUgKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorCisKK3R5cGVkZWYgZW51bSB7CisgICAgTldTRUxfTVNHX1BMTU5fTE9TUyA9IDAsCisgICAgTldTRUxfTVNHX1BMTU5fU0VBUkNIX0NORiA9IDEsCisgICAgTldTRUxfTVNHX0VVVFJBTl9ESVNBQkxFX0lORk8gPSAyCit9bndzZWxfaW50ZXJsYXllcl9tc2dfZW51bTsgICAvL2FkZCBmb3IgYXV0byB0ZXN0IHRvb2wKKwordHlwZWRlZiBlbnVtIHsKKyAgICBBRERfQ1NHID0gMCwKKyAgICBERUxfQ1NHID0gMQorfSBjc2dfdXBkYXRlX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVteworICAgIEZPUkJJRF9MQV9GT1JfUkVHX1BST1ZfU0VSVklDRSA9IDAsCisgICAgRk9SQklEX0xBX0ZPUl9ST0FNSU5HICAgICAgICAgID0gMQorfSBmb3JiaWRkZW5fbGFfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICAvKiBVVFJBTiBoYXMgbm90IHVzZWQgSUUgIkNpcGhlcmluZyBJbmZvIiBpbiBTRUNVUklUWSBNT0RFIENPTU1BTkQgdG8gc3RhcnQgY29udHJvbGxpbmcgdGhlIGNpcGhlcmluZy4gKi8KKyAgICBDaXBoZXJpbmdOb3RTdGFydGVkID0gMCwKKyAgICBDaXBoZXJpbmdVRUEwLCAgIC8qIFVzZSBhbGdvcml0aG0gVUVBMCBmb3IgY2lwaGVyaW5nKi8KKyAgICBDaXBoZXJpbmdVRUExICAgLyogVXNlIGFsZ29yaXRobSBVRUExIGZvciBjaXBoZXJpbmcqLworI2lmZGVmIF9fVU1UU19SN19fCisgICAgLAorICAgIENpcGhlcmluZ1VFQTIgICAgLyogVXNlIGFsZ29yaXRobSBVRUEyIGZvciBjaXBoZXJpbmcqLworI2VuZGlmCit9IENpcGhlcmluZ19TdGF0dXM7CisKK3R5cGVkZWYgZW51bXsKKyAgICBQUk9DX1NUQVRVU19OT05FICAgICAgICAgID0gMCwKKyAgICBBVFRBQ0hfUFJPQ0VEVVJFX1NUQVJUICAgID0gMSwKKyAgICBBVFRBQ0hfUFJPQ0VEVVJFX1NVQ0NFU1MgID0gMiwKKyAgICBSQVVfUFJPQ0VEVVJFX1NUQVJUICAgICAgID0gMywKKyAgICBSQVVfUFJPQ0VEVVJFX1NVQ0NFU1MgICAgID0gNCwKKyAgICBTRVJWSUNFX1BST0NFRFVSRV9TVEFSVCAgID0gNSwKKyAgICBTRVJWSUNFX1BST0NFRFVSRV9TVUNDRVNTID0gNiwKKyAgICBBVFRBQ0hfUFJPQ0VEVVJFX0ZBSUxVUkUgID0gNywKKyAgICBSQVVfUFJPQ0VEVVJFX0ZBSUxVUkUgICAgID0gOCwKKyAgICBTRVJWSUNFX1BST0NFRFVSRV9GQUlMVVJFID0gOSwKKyAgICBOV19JTklUX0RFVEFDSF9QUk9DRURVUkUgID0gMTAsCisgICAgQ1NfREVUQUNIX1NUQVJUICAgICAgICAgICA9IDExLAorICAgIFBTX0RFVEFDSF9TVEFSVCAgICAgICAgICAgPSAxMiwKKyAgICBDU19QU19ERVRBQ0hfU1RBUlQgICAgICAgID0gMTMsCisgICAgTFVfUFJPQ0VEVVJFX1NVQ0NFU1MgICAgICA9IDE0LAorICAgIExVX1BST0NFRFVSRV9GQUlMVVJFICAgICAgPSAxNSwKKyAgICBDTV9TRVJWSUNFX0ZBSUxVUkUgICAgICAgID0gMTYsCisgICAgQ1NfQVVUSF9SRUogICAgICAgICAgICAgICA9IDE3LAorICAgIENTX0FVVEhfRkFJTCAgICAgICAgICAgICAgPSAxOCwKKyAgICBQU19BVVRIX1JFSiAgICAgICAgICAgICAgID0gMTksCisgICAgUFNfQVVUSF9GQUlMICAgICAgICAgICAgICA9IDIwLAorICAgIENTX1BTX1BPV0VSX09GRiAgICAgICAgICAgPSAyMSwKKyAgICBERVRBQ0hfUFJPQ0VEVVJFX0VORCAgICAgID0gMjIsCisgICAgTVNfSU5fTElNSVRFRF9TRVJWSUNFICAgICA9IDIzLCAvKiBmb3IgRkFTVF9SRUNPVkVSWSAqLworICAgIE1TX0lOX05PX1NFUlZJQ0UgICAgICAgICAgPSAyNCwgLyogZm9yIEZBU1RfUkVDT1ZFUlkgKi8KKyAgICBNU19TVEFURV9DSEFOR0UgICAgICAgICAgID0gMjUsCisgICAgTFRFX1JFR19QUk9DRURVUkVfU1VDQ0VTUyA9IDI2LAorICAgIEFUVEFDSF9QUk9DRURVUkVfRk9SX1BTX1NXSVRDSF9TVUNDRVNTID0gMjcsIC8vIGZvciBfX1NHTFRFX18gdXNhZ2UKKyAgICBNU19JTl9HRU1JTklfU1VTUEVORCAgICAgID0gMjgsIC8vIGZvciBHZW1pbmkgc3VzcGVuZCBzdGF0ZSBub3RpZnkgdG8gNEcKKyAgICBNU19TVE9QX1NOSUZGICAgICAgICAgICAgID0gMjksCisgICAgTVNfUExNTl9MT1NTICAgICAgICAgICAgICA9IDMwLCAvKiBmb3IgcmVwb3J0IFBMTU5fTE9TUyB3aGVuIGNvbnRyb2wgYnkgR01TUyovCit9cmVnbl9wcm9jX3N0YXR1c19lbnVtOworCisvKiBSaXBwbGUgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgTU1BU19OT19DSEdfSU5fUkVHTl9TVEFUVVMgPSAwLAorICAgIE1NQVNfQ1NfQVRUQUNIRUQgICAgICAgICAgID0gMSwKKyAgICBNTUFTX1BTX0FUVEFDSEVEICAgICAgICAgICA9IDIsCisgICAgTU1BU19DU19QU19BVFRBQ0hFRCAgICAgICAgPSAzLAorICAgIE1NQVNfQ1NfREVUQUNIRUQgICAgICAgICAgID0gNCwKKyAgICBNTUFTX1BTX0RFVEFDSEVEICAgICAgICAgICA9IDUsCisgICAgTU1BU19DU19QU19ERVRBQ0hFRCAgICAgICAgPSA2Cit9bW1hc19yZWduX3N0YXR1c19lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIEFTX1JFTF9TQ09QRV9TSUdOQUxJTkcsCisgICAgQVNfUkVMX1NDT1BFX0NPTk5FQ1RJT04sCit9YXNfcmVsX3Njb3BlX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgQVNfU05JRkZfU0VSVklDRV9JTlZBTElELAorICAgIEFTX1NOSUZGX0ZPUl9QV1NfQU5EX0JFVFRFUl9TRVJWSUNFLAorICAgIEFTX1NOSUZGX0ZPUl9MSU1JVEVEX0FORF9CRVRURVJfU0VSVklDRSwKKyAgICBBU19TTklGRl9GT1JfTk9STUFMX1NFUlZJQ0UsCit9YXNfc25pZmZlcl9yZXFfc2VydmljZV9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIEFTX1NOSUZGRVJfVEFSR0VUX0xJU1QsCisgICAgQVNfU05JRkZFUl9UQVJHRVRfQU5ZX0xJU1QsCit9YXNfc25pZmZlcl9wbG1uX2xpc3Rfb3BlcmF0ZV90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgQ0FVU0VfQVVUSF9GQUlMLAorI2lmZGVmIF9fR0VNSU5JX18KKyAgICBDQVVTRV9SU0lNX0FCT1JULAorICAgIENBVVNFX0xFQVZFX1ZJUlRVQUxfQ09OTkVDVEVELAorI2VuZGlmCisgICAgQ0FVU0VfT1RIRVJTCit9Y29ubl9yZWxfY2F1c2VfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgSU1TSV9UWVBFICAgICAgICAgID0gMHgwMSwKKyAgICBUTVNJX1RZUEUgICAgICAgICAgPSAweDA0LAorICAgIFBUTVNJX1RZUEUgICAgICAgICA9IDB4MDQsCisgICAgSU5WQUxJRF9VRV9JRF9UWVBFID0gMHhmZgorfSB1ZV9pZF90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEFTX0NPTk5fRVNUX1NVQ0MgICAgICAgICAgID0gMCwKKyAgICBBQ0NFU1NfQkFSUkVEICAgICAgICAgICAgICA9IDEsCisgICAgSU1NX0FTU0dOX1JFSkVDVF9SQ1ZEICAgICAgPSAyLAorICAgIFJBTkRfQUNDX0ZBSUxVUkUgICAgICAgICAgID0gMywKKyAgICBSUl9OT19TRVJWSUNFICAgICAgICAgICAgICA9IDQsCisgICAgR0lCSV9UQUdfTUlTTUFUQ0ggICAgICAgICAgPSA1LAorICAgIFVBU19DT05OX0VTVF9GQUlMVVJFICAgICAgID0gNiwKKyAgICBSUl9QTE1OX1NSQ0hfUkVKX0VNRVJHRU5DWSA9IDcsCisgICAgUkVESVJFQ1RfU1VDQyAgICAgICAgICAgICAgPSA4LAorICAgIC8qQnlyb246IDIwMDcvMDUvMDg6IEFkZCByZWplY3QgY2F1c2UgZm9yIENDTyBhY3RpdmF0aW9uIHRpbWVyIGlzIHJ1bm5pbmcqLworICAgIENDT19BQ1RJVkFUSU9OX1RJTUVfT05HT0lORz0gOSwKKyAgICBDT05OX0VTVF9BQk9SVEVEID0gMTAKKyNpZmRlZiBfX0dFTUlOSV9fIC8vMjAwODA5MjIKKyAgICAgLAorICAgICBBU19JTl9TVVNQRU5EX01PREUgPSAxMSAvKiBmb3IgQVMgc3VzcGVuZCBtb2RlIGluIGR1YWwgUlIgdGFzayAqLworI2VuZGlmIC8qIF9fR0VNSU5JX18gKi8KKyAgICAsIENTRkJfU0VBUkNIX09USEVSX1JBVCA9IDEyLAorICAgIENFTExfQ0hBTkdFX1NUQVJUPTEzCisjaWZkZWYgX19HRU1JTklfXworICAgICAsCisgICAgIEFTX0lOX1ZJUlRVQUxfQ09OTkVDVEVEX01PREUgPSAxNCwgLyogZm9yIEFTIHZpcnR1YWwgY29ubmVjdGVkIG1vZGUgaW4gZHVhbCBSUiB0YXNrICovCisgICAgIEFTX01TUE1fU0VTU0lPTl9OT1RfQUxMT1dFRCA9IDE1LCAgLyogQVMgaXMgbm90IGFibGUgdG8gYWNxdWlyZWQgTVNQTSBBUyBzZXNzaW9uICovCisJIEFTX0NPTk5fRVNUX0FCT1JURURfRFVFX1RPX0dFTUlOSSA9IDE2IC8qIEFTIGNvbm5lY3Rpb24gYWJvcnRlZCBkdWUgdG8gR0VNSU5JIHNjZW5hcmlvICovCisjZW5kaWYgLyogX19HRU1JTklfXyAqLworfSBhc19lc3RfY25mX2NhdXNlX2VudW07IC8qIHBzX2NhdXNlX2VudW0gbmVlZCBtb2RpZnksIHRvby4gKi8KKworLyogfiBSaXBwbGUgKi8KKworLyogRU5VTUVSQVRFRCBQYWdpbmdDYXVzZSAqLwordHlwZWRlZiBlbnVtCit7CisgICAgUGFnaW5nQ2F1c2VfdGVybWluYXRpbmdDb252ZXJzYXRpb25hbENhbGwgICA9IDAsCisgICAgUGFnaW5nQ2F1c2VfdGVybWluYXRpbmdTdHJlYW1pbmdDYWxsICAgID0gMSwKKyAgICBQYWdpbmdDYXVzZV90ZXJtaW5hdGluZ0ludGVyYWN0aXZlQ2FsbCAgPSAyLAorICAgIFBhZ2luZ0NhdXNlX3Rlcm1pbmF0aW5nQmFja2dyb3VuZENhbGwgICA9IDMsCisgICAgUGFnaW5nQ2F1c2VfdGVybWluYXRpbmdIaWdoUHJpb3JpdHlTaWduYWxsaW5nICA9IDQsCisgICAgUGFnaW5nQ2F1c2VfdGVybWluYXRpbmdMb3dQcmlvcml0eVNpZ25hbGxpbmcgPSA1LAorICAgIFBhZ2luZ0NhdXNlX3Rlcm1pbmF0aW5nQ2F1c2VVbmtub3duICA9IDYKK30KK1JBVENNX1JSQ19QYWdpbmdDYXVzZTsKKworLyoyMDEzLzAzLzI2LCBsb2NhbCByZWxlYXNlIGVuaGFuY2VtZW50Ki8KKy8qIEVOVU1FUkFURUQgTG9jYWxSZWxlYXNlVHlwZSAqLwordHlwZWRlZiBlbnVtCit7CisgICAgTG9jYWxSZWxlYXNlVHlwZV9kZXRlY3RfbWFjdGhlZF91dHJhbl9wYWdpbmcgPSAwLAorICAgIExvY2FsUmVsZWFzZVR5cGVfZ2VtaW5pX2Fib3J0X3BzX3JhYiA9IDEsCisgICAgTG9jYWxSZWxlYXNlVHlwZV9rZXlfY2hhbmdlX29uX3RoZV9mbHkgPSAyCit9CitSQVRDTV9SUkNfTG9jYWxSZWxlYXNlVHlwZTsKKworLyogRU5VTUVSQVRFRCBSZWxlYXNlQ2F1c2UgKi8KK3R5cGVkZWYgZW51bQoreworICAgIG5vcm1hbEV2ZW50ID0gMCwKKyAgICBSZWxlYXNlQ2F1c2VfdW5zcGVjaWZpZWQgPSAxLAorICAgIHByZV9lbXB0aXZlUmVsZWFzZSA9IDIsCisgICAgUmVsZWFzZUNhdXNlX2Nvbmdlc3Rpb24gPSAzLAorICAgIHJlX2VzdGFibGlzaG1lbnRSZWplY3QgPSA0LAorICAgIGRpcmVjdGVkc2lnbmFsbGluZ2Nvbm5lY3Rpb25yZV9lc3RhYmxpc2htZW50ID0gNSwKKyAgICB1c2VySW5hY3Rpdml0eSA9IDYsCisgICAgSURUX25vdFNlbnQgPSA3Cit9CitSQVRDTV9SUkNfUmVsZWFzZUNhdXNlOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBTQVBJXzBfSGlnaCA9IDAsCisgICAgU0FQSV8zX0xvdyA9IDEKK30gRENfUHJpb3JpdHk7CisKK3R5cGVkZWYgZW51bQoreworICAgIERDX1N0YXR1c19TVUNDRVNTID0gMCwKKyAgICAvKiBOQVMgbWVzc2FnZSBpcyBkaXNjYXJkZWQgYmVjYXVzZSBvZiBHQVMgY2VsbCByZXNlbGVjdGlvbiAqLworICAgIERDX1N0YXR1c19HQVNfQ2VsbFJlc2VsX0Rpc2NhcmQgPSAxLAorICAgIC8qIFJSQ0UgY291bGRuJ3QgZGVsaXZlciB0aGlzIE5BUyBtZXNzYWdlIHN1Y2Nlc3NmdWxseSB0byBwZWVyIGVudGl0eSwgZS5nLiwgSW50ZXJSQVQgb3IgT09TICovCisgICAgRENfU3RhdHVzX05vcm1hbF9GQUlMVVJFID0gMiwKKyAgICAvKiBSTEMgcmVzZXQsIE5BUyBtZXNzYWdlIGlzIGRpc2NhcmRlZCAgKi8KKyAgICBEQ19TdGF0dXNfUkxDX0Rpc2NhcmRfRkFJTFVSRSA9IDMsCisgICAgLyogTkFTIG1lc3NhZ2UgaXMgZGlzY2FyZGVkIGJlY2F1c2Ugb2YgZ2liaSBtaXNtYXRjaCAqLworICAgIERDX1N0YXR1c19HSUJJX1RhZ01pc21hdGNoID0gNCwKKyAgICAvKiBSTEMgcmVsZWFzZSwgTkFTIG1lc3NhZ2UgaXMgc2VudCBjb21wbGV0ZWx5IGJ1dCBub3QgcmVjZWl2ZSBhY2sgeWV0ICovCisgICAgRENfU3RhdHVzX1JMQ19SZWxlYXNlX1R4X05vdF9BY2tlZCA9IDUsCisgICAgLyogUkxDIHJlbGVhc2UsIE5BUyBtZXNzYWdlIGlzIGRpc2NhcmRlZCAqLworICAgIERDX1N0YXR1c19STENfUmVsZWFzZV9EaXNjYXJkID0gNiwKKyAgICAvKiBSQiBSZWVzdGFibGlzaCwgTkFTIG1lc3NhZ2UgaXMgc2VudCBjb21wbGV0ZWx5IGJ1dCBub3QgcmVjZWl2ZSBhY2sgeWV0ICovCisgICAgRENfU3RhdHVzX1JCX1JlZXN0YWJsaXNoX1R4X05vdF9BY2tlZCA9IDcsCisgICAgLyogUkIgUmVlc3RhYmxpc2gsIE5BUyBtZXNzYWdlIGlzIGRpc2NhcmRlZCAqLworICAgIERDX1N0YXR1c19SQl9SZWVzdGFibGlzaF9EaXNjYXJkID0gOCwKKyAgICAvKiBOQVMgbWVzc2FnZSBjYW5ub3QgYmUgc2VudCB3aGlsZSAzRzIgQ0NPIGFjdGl2YXRpb24gdGltZSBpcyBvbmdvaW5nICovCisgICAgRENfU3RhdHVzX1JMQ19DQ09fQWN0aXZhdGlvbl9UaW1lX09uZ29pbmcgPSA5LAorICAgIC8qIE5BUyBtZXNzYWdlIGlzIGRpc2NhcmRlZCBiZWNhdXNlIG9mIEdBUyBzdXNwZW5kICovCisgICAgRENfU3RhdHVzX0dBU19STENfR1BSU19SZXN1bWVfRGlzY2FyZCA9IDEwLAorICAgIC8qIFJMQygyRyBvbmx5PykgZHJvcCB0aGUgTkFTIG1lc3NhZ2UgZHVlIHRvIG5vIGNlbGwgY292ZXJhZ2UsIG5vdCBzdXJlIGlmIE5XIFJMQyBoYXZlIHJlY2VpdmVkIHRoaXMgbXNnIG9yIG5vdCAqLworICAgIERDX1N0YXR1c19STENfTm9fQ2VsbF9Db3ZlcmFnZV9EaXNjYXJkID0gMTEsCisgICAgLyogR01NIGRvZXMgbm90IHJlbGF5IFNNIG1zZyB0byBsb3dlciBsYXllcnMgZHVlIHRvIFBMTU4gc2VhcmNoIG9uZ29pbmcuIE5XIG11c3Qgbm90IHJlY2VpdmUgdGhpcyBtc2cgKi8KKyAgICBEQ19TdGF0dXNfUExNTl9TZWFyY2hfT25nb2luZ19EaXNjYXJkID0gMTIsCisgICAgLy8gQ2FybHNvbiAyMDEzLjA3LjIyIHBsZWFzZSBjaGVjayB0aGUgZ21tc21fY2F1c2VfZW51bSBhbmQgdGhlIERDX1N0YXR1cyB0b2dldGhlcgorICAgIC8vIDEuIEZvciBzdXNwZW5kIGR1ZSB0byBDTS9NTS9HTU0gcHJvY2VkdXJlLCBHTU0gd2lsbCBzZW5kIEdNTVNNX1NVU1BFTkRfUkVRIHRvIFNNLCB1c2luZyBvbmx5IG9uZSBvZiB0aGUgMiBjYXVzZXM6IFBTX1NVU1BFTkRfTFIgLyBQU19TVVNQRU5EX0NNCisgICAgLy8gMi4gRm9yIEdlbWluaSBzdXNwZW5kLCBHTU0gd2lsbCBub3QgcmVsYXkgVU5JVERBVEFfUkVRIGlmIG90aGVyIFNJTSBpcyBidXN5LCBhbmQgR01NIHdpbGwgc2VuZCBVTklUREFUQV9DTkYuRENfU3RhdHVzX0dlbWluaV9TdXNwZW5kX0Rpc2NhcmQgdG8gU00KKyAgICAvLyAzLiBGb3IgZ21tc21fY2F1c2VfZW51bTogR01NU01fSU5TVUZGSUNJRU5UX1JFU09VUkNFLCBpdCBpcyBvbmx5IHVzZWQgaW4gR01NU01fQVRUQUNIX1JFSiBkdWUgdG8gR2VtaW5pCisgICAgLyogR01NIGRvZXMgbm90IHJlbGF5IFNNIG1zZyB0byBsb3dlciBsYXllcnMgZHVlIHRvIEdlbWluaSBzdXNwZW5zaW9uIChleC4gU3VzcGVuZGVkIGJ5IENTIGNhbGwgb2YgYW5vdGhlciBTSU0pLiBOVyBtdXN0IG5vdCByZWNlaXZlIHRoaXMgbXNnICovCisgICAgRENfU3RhdHVzX0dlbWluaV9TdXNwZW5kX0Rpc2NhcmQgPSAxMywKKyAgICAvKiBHTU0gZG9lcyBub3QgcmVsYXkgU00gbXNnIHRvIGxvd2VyIGxheWVycyBkdWUgdG8gbm8gR1BSUyBjb3ZlcmFnZS4gTlcgbXVzdCBub3QgcmVjZWl2ZSB0aGlzIG1zZyAqLworICAgIERDX1N0YXR1c19HTU1fTm9fQ2VsbF9EaXNjYXJkID0gMTQsCisgICAgLyogR01NIHVzZWQgdG8gaW5kaWNhdGUgU00gdGhhdCB1bml0ZGF0YV9yZXEgc2VuZCBmYWlsIGJlY2F1c2Ugb2YgR01NIHN1c3BlbmQgKi8KKyAgICBEQ19TdGF0dXNfR01NX1N1c3BlbmQgPSAxNSwKKyAgICAvKiBSTGMvTExDIHdpbGwgaW5kaWNhdGUgVFggZmFpbHVyZSBpZiB1bmFibGUgdG8gYXF1aXJlIEdFTUlOSSBQUyBoaWdoIHNlbWFwaG9yZSovCisgICAgRENfU3RhdHVzX0dlbWluaV9GYWlsID0gMTYsCisvKiBHTU0gZG9lcyBub3QgcmVsYXkgU00gbWVzc2FnZSB0byBsb3dlciBsYXllciBkdWUgdG8gTm8gRk9QIGluIEFUVEFDSCBBQ0NFUFQsIGhlbmNlIHdhaXQgZm9yIGNvbm5lY3Rpb24gdG8gYmUgcmVsZWFzZWQqLworCURDX1N0YXR1c19HTU1fTm9fRk9QX0Rpc2NhcmQgPSAxNworCisgICAgI2lmZGVmIF9fR0VNSU5JX18KKwksCisJRENfU3RhdHVzX0dlbWluaV9WaXJ0dWFsX0Nvbm5lY3RlZF9GYWlsID0gMTggLyogZm9yIEFTIHZpcnR1YWwgY29ubmVjdGVkIG1vZGUgaW4gZHVhbCBSUiB0YXNrICovCisgICAgI2VuZGlmIC8qIF9fR0VNSU5JX18gKi8KKworfSBEQ19TdGF0dXM7CisKK3R5cGVkZWYgZW51bXsKKyAgICBSRUFEWV9UTVJfQUNUICAgPSAwLAorICAgIFJFQURZX1RNUl9ERUFDVCA9IDEKK31hY3Rpb25fb25fcmVhZHlfdGltZXJfZW51bTsKKwordHlwZWRlZiBlbnVteworICAgIFJFQURZX1RNUl9FWFBJUkVTID0gMCwKKyAgICBSRUFEWV9UTVJfUkVWSVZFICA9IDEsCisgICAgUkVBRFlfVE1SX0RFQUNUSVZFRCA9IDIKK31yZWFkeV90aW1lcl9zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVteworICAgIENJUEhFUl9DTUQgICAgICA9IDAsCisgICAgVENIX0FTU0lHTiAgICAgID0gMSwKKyAgICBDSE1PREVfTU9ESUZZICAgPSAyLAorICAgIENIQU5ORUxfUkVMRUFTRSA9IDMsCisgICAgVUFTX1JBQl9NT0RJRlkgID0gNCwKKyAgICBVQVNfUkFCX0VTVCAgICAgPSA1Cit9c3luY19pbmRfY2F1c2VfZW51bTsKKworLyogVUFTL0dBUyA8LT4gUkFUQ00gZW5kICovCisKK3R5cGVkZWYgZW51bXsKKyAgICBTSU1fTk9STV9PUCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwLAorICAgIFNJTV9UWVBFX0FQUFJPVl9PUCAgICAgICAgICAgICAgICAgICA9IDB4ODAsCisgICAgU0lNX05PUk1fT1BfQU5EX1NQRUNfRkFDSUxJVFkgICAgICAgID0gMHgwMSwKKyAgICBTSU1fVFlQRV9BUFBST1ZfT1BfQU5EX1NQRUNfRkFDSUxJVFkgPSAweDgxLAorICAgIFNJTV9NQUlOVEVOQU5DRSAgICAgICAgICAgICAgICAgICAgICA9IDB4MDIsCisgICAgU0lNX0NFTExfVEVTVF9PUCAgICAgICAgICAgICAgICAgICAgID0gMHgwNCwKKyAgICBTSU1fSU5WQUxJRF9PUCAgICAgICAgICAgICAgICAgICAgICAgPSAweEZGCit9IHNpbV9vcF9tb2RlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIFNHU05SXzAsCisgICAgU0dTTlJfMSwKKyAgICBTR1NOUl9OT1RfUFJFU0VOVAorfSBycl9tbV9zZ3Nucl9mbGFnX2VudW07CisKKworI2lmZGVmIF9fR0VNSU5JX18KKwordHlwZWRlZiBlbnVtCit7CisgICAgUlJfSU5fTk9STUFMX01PREUgICAgICAgICAgICAgID0gMCwgLy9mb3IgbW9uemEKKyAgICBSUl9OT1RfSU5fU1VTUEVORF9NT0RFICAgICAgICAgPSBSUl9JTl9OT1JNQUxfTU9ERSwgLy9mb3IgbWF1aQorICAgIFJSX0lOX1NVU1BFTkRfTU9ERV9GT1JfQ1NfU0lHICA9IDEsCisgICAgUlJfSU5fU1VTUEVORF9NT0RFX0ZPUl9DU19DQUxMID0gMiwKKyAgICBSUl9JTl9TVVNQRU5EX01PREVfRk9SX1BTX1NJRyAgPSAzLAorICAgIFJSX0lOX1NVU1BFTkRfTU9ERV9GT1JfUFNfREFUQSA9IDQsCisgICAgUlJfSU5fU1VTUEVORF9NT0RFX1VOU1BFQ0lGSUVEID0gNSAvL2ZvciBNTSB1c2UKK30gcnJfc3VzcGVuZF9tb2RlX3JlYXNvbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBBU19OT1JNQUxfTU9ERSA9IDAsCisgICAgQVNfSU5fU1VTUEVORF9NT0RFX0ZPUl9DU19TSUcgID0gMSwKKyAgICBBU19JTl9TVVNQRU5EX01PREVfRk9SX0NTX0NBTEwgPSAyLAorICAgIEFTX0lOX1NVU1BFTkRfTU9ERV9GT1JfUFNfU0lHICA9IDMsCisgICAgQVNfSU5fU1VTUEVORF9NT0RFX0ZPUl9QU19EQVRBID0gNCwKKyAgICBBU19JTl9TVVNQRU5EX01PREVfVU5TUEVDSUZJRUQgPSA1IC8vZm9yIE1NIHVzZQorfSBhc19zdXNwZW5kX21vZGVfcmVhc29uX2VudW07IC8vaWRlbnRpY2FsIGFzIHJyX3N1c3BlbmRfbW9kZV9yZWFzb25fZW51bQorCit0eXBlZGVmIGVudW0KK3sKKyAgICBBU19JTl9JRExFID0gMCwKKyAgICBBU19JTl9DT05ORUNURURfVFJBTlNJRU5UID0gMSwKKwlBU19JTl9WSVJUVUFMX0NPTk5FQ1RFRCA9IDIsCisJQVNfSU5fQ09OTkVDVEVEID0gMywKKwlBU19JTl9WSVJUVUFMX0lETEUgPSA0Cit9IGFzX2dlbWluaV9zdGF0dXNfZW51bTsKKworI2lmIGRlZmluZWQoX19VTVRTX1JBVF9fKSB8fCBkZWZpbmVkKF9fTFRFX1JBVF9fKQorCit0eXBlZGVmIGVudW0geworICAgIEdBU19VU0VSX1BMTU5fU0VBUkNIICAgICAgICAgID0gMCwKKyAgICBHQVNfVVNFUl9OT19TRVJWSUNFX1BMTU5fTElTVCA9IDEsCisgICAgR0FTX1VTRVJfSU5fU0VSVklDRV9QTE1OX0xJU1QgPSAyLAorICAgIEdBU19NTV9QTE1OX1NFQVJDSCAgICAgICAgICAgID0gMywKKyAgICBHQVNfQVNfQ0VMTF9TRUxFQ1RJT04gICAgICAgICA9IDQsCisgICAgR0FTX01NX1BMTU5fTElTVCAgICAgICAgICAgICAgPSA1LAorICAgIEdBU19BU19SRVBPUlRfQ0dJICAgICAgICAgICAgID0gNiwKKyAgICBHQVNfRkFTVF9SRUNPVkVSWSAgICAgICAgICAgICA9IDcsCisgICAgR0FTX01NX1BMTU5fU0VBUkNIX1BPV0VSX09OICAgPSA4LCAgIC8vZm9yIENNQ0MgY2FzZSA1LjEuMTogaXMgZmlyc3Qgc2VhcmNoIGFmdGVyIHBvd2VyIG9uCisgICAgR0FTX0ZSRVFfU0NBTl9OVUxMICAgICAgICAgICAgPSA5LAorICAgIEdBU19DU0dfRklOR0VSX1BSSU5UICAgICAgICAgID0gMTAsCisgICAgR0FTX1JTSU1fVkNfUkVTVU1FICAgICAgICAgICAgPSAxMQorCit9Z2FzX2ZyZXFfc2Nhbl90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgR0FTX0ZSRVFfU0NBTl9BQ0NFUFQgICAgICAgICAgICAgICAgICA9IDAsCisgICAgR0FTX0ZSRVFfU0NBTl9XQUlUICAgICAgICAgICAgICAgICAgICA9IDEKK31nYXNfZnJlcV9zY2FuX3Jlc3VsdF9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIEdBU19GUkVRX1NDQU5fRklOSVNIRUQgICAgICA9IDAsCisgICAgR0FTX0ZSRVFfU0NBTl9QUkVFTVBURUQgICAgID0gMQorfWdhc19mcmVxX3NjYW5fc3RvcF9jYXVzZV9lbnVtOworCisjZW5kaWYgLyogZGVmaW5lZChfX1VNVFNfUkFUX18pIHx8IGRlZmluZWQoX19MVEVfUkFUX18pICovCisKKyNpZmRlZiBfX0xURV9SQVRfXwordHlwZWRlZiBlbnVtIHsKKyAgICBFQVNfVVNFUl9OT19TRVJWSUNFX1BMTU5fTElTVCA9IDB4MDAwMDAwMDEsCisgICAgRUFTX1VTRVJfUExNTl9TRUFSQ0ggICAgICAgICAgPSAweDAwMDAwMDAyLAorICAgIEVBU19VU0VSX0lOX1NFUlZJQ0VfUExNTl9MSVNUID0gMHgwMDAwMDAwNCwKKyAgICBFQVNfTU1fUExNTl9TRUFSQ0ggICAgICAgICAgICA9IDB4MDAwMDAwMDgsCisgICAgRUFTX0FTX0FGUiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDAwMDEwLAorICAgIEVBU19BU19DRUxMX1NFTEVDVElPTiAgICAgICAgID0gMHgwMDAwMDAyMCwKKyAgICBFQVNfQVNfQ1NHX0NFTExfRVZBTFVBVElPTiAgICA9IDB4MDAwMDAwNDAsCisgICAgRUFTX0FTX0JBQ0tHUk9VTkRfU0VBUkNIICAgICAgPSAweDAwMDAwMDgwLAorICAgIEVBU19NTV9QTE1OX0xJU1QgICAgICAgICAgICAgID0gMHgwMDAwMDEwMCwKKyAgICBFQVNfQVNfQ1NHX0FVVE9OT01PVVNfU0VBUkNIICA9IDB4MDAwMDAyMDAsCisgICAgRUFTX0FTX0ZJTkdFUlBSSU5UICAgICAgICAgICAgPSAweDAwMDAwNDAwLAorICAgIEVBU19BU19NQ0NfTEVBUk5JTkcgICAgICAgICAgID0gMHgwMDAwMDgwMCwKKyAgICBFQVNfU0lNX1BST1RFQ1RJT04gICAgICAgICAgICA9IDB4MDAwMDEwMDAsCisgICAgRUFTX01NX1BMTU5fU0VBUkNIX1BPV0VSX09OICAgPSAweDAwMDAyMDAwLAorICAgIEVBU19FTUNfU0VTU0lPTiAgICAgICAgICAgICAgID0gMHgwMDAwNDAwMCwKKyAgICBFQVNfR0VNSU5JX1JFU1VNRSAgICAgICAgICAgICA9IDB4MDAwMDgwMDAsCisgICAgRUFTX0FTX0NFTExfU0VMRUNUSU9OX0NBTEwgICAgPSAweDAwMDEwMDAwLAorICAgIEVBU19GUkVRX1NDQU5fTlVMTCAgICAgICAgICAgID0gMHgwMDAyMDAwMAorfWVhc19mcmVxX3NjYW5fdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIEVBU19GUkVRX1NDQU5fRklOSVNIRUQsCisgICAgRUFTX0ZSRVFfU0NBTl9QUkVFTVBURUQKK31lYXNfZnJlcV9zY2FuX3N0b3BfY2F1c2VfZW51bTsKKworI2VuZGlmIC8qIF9fTFRFX1JBVF9fICovCisKKyNlbmRpZiAvKiBfX0dFTUlOSV9fICovCisKKyNpZmRlZiBfX05SX1JBVF9fCit0eXBlZGVmIGVudW0geworICAgIE5SUkNfQVNfQUZSLAorICAgIE5SUkNfRU1DX1NFU1NJT04sCisgICAgTlJSQ19VU0VSX05PX1NFUlZJQ0VfUExNTl9MSVNULAorICAgIE5SUkNfVVNFUl9QTE1OX1NFQVJDSCwKKyAgICBOUlJDX1VTRVJfSU5fU0VSVklDRV9QTE1OX0xJU1QsCisgICAgTlJSQ19NTV9QTE1OX1NFQVJDSF9QT1dFUl9PTiwKKyAgICBOUlJDX01NX1BMTU5fU0VBUkNILAorICAgIE5SUkNfQVNfQ0VMTF9TRUxFQ1RJT04sCisgICAgTlJSQ19BU19DRUxMX1NFTEVDVElPTl9DQUxMLCAKKyAgICBOUlJDX0FTX0JBQ0tHUk9VTkRfU0VBUkNILAorICAgIE5SUkNfTU1fUExNTl9MSVNULAorICAgIE5SUkNfR0VNSU5JX1JFU1VNRSwKKyAgICBOUlJDX0FVVE9fR0FQLAorICAgIE5SUkNfR0VNSU5JX0FCT1JULAorICAgIE5SUkNfRlJFUV9TQ0FOX05VTEwKK31ucnJjX2ZyZXFfc2Nhbl90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgTlJSQ19GUkVRX1NDQU5fRklOSVNIRUQsCisgICAgTlJSQ19GUkVRX1NDQU5fUFJFRU1QVEVELAorICAgIE5SUkNfRlJFUV9TQ0FOX0lOVkFMSUQKK31ucnJjX2ZyZXFfc2Nhbl9zdG9wX2NhdXNlX2VudW07CisKKyNlbmRpZiAvKiBfX05SX1JBVF9fICovCisKK3R5cGVkZWYgZW51bSB7CisgICAgTlJSQ19BQzFfU0VMRUNUSU9OX0FTU0lTVEFOQ0VfSU5GT19BLAorICAgIE5SUkNfQUMxX1NFTEVDVElPTl9BU1NJU1RBTkNFX0lORk9fQiwKKyAgICBOUlJDX0FDMV9TRUxFQ1RJT05fQVNTSVNUQU5DRV9JTkZPX0MsCisgICAgTlJSQ19BQzFfU0VMRUNUSU9OX0FTU0lTVEFOQ0VfSU5GT19JTlZBTElECit9IG5ycmNfYWMxX3NlbGVjdGlvbl9hc3Npc3RhbmNlX2luZm9fZW51bTsKKworI2lmIChkZWZpbmVkKCBfX0FHUFNfQ09OVFJPTF9QTEFORV9fKSB8fCBkZWZpbmVkKCBfX0VUV1NfU1VQUE9SVF9fKSkKK3R5cGVkZWYgZW51bXsKKyAgICBBUFBfQ01EX09SX0ZJTkFMX1JFU1AgICAgICAgICAgID0gMCwKKyAgICBBUFBfTk9UX0NNRF9PUl9GSU5BTF9SRVNQICAgICAgID0gMQorfWFwcF9kYXRhX2NyX2VudW07CisKKyNpZmRlZiBfX0FHUFNfQ09OVFJPTF9QTEFORV9fCit0eXBlZGVmIGVudW17CisgICBBQk9SVF9DQVVTRV9DT05OX1JFTEVBU0UgICAgICAgPTAsCisgICBBQk9SVF9DQVVTRV9SUl9NQU5BR0VfTUVTRyAgICAgPTEKKworfWFib3J0X3JybHBfY2F1c2VfZW51bTsKKyNlbmRpZiAvKiBfX0FHUFNfQ09OVFJPTF9QTEFORV9fICovCisjZW5kaWYgLyogKCBfX0FHUFNfQ09OVFJPTF9QTEFORV9fKSB8fCBkZWZpbmVkKCBfX0VUV1NfU1VQUE9SVF9fKSAqLworCisvKiBUQ00sIFJBQyBTaGFyZSB3aXRoIEw0QyAqLwordHlwZWRlZiBlbnVtCit7CisgIE5XX0NPTlRFWFRfUkVKX0VWRU5UID0gMSwKKyAgTldfQ09OVEVYVF9SRUFDVF9FVkVOVCwKKyAgTldfQ09OVEVYVF9ERUFDVF9FVkVOVCwgICAvLyBSZXBsYWNkIHRvIE5XX0RFQUNUX0VWRU5UICgyNy4wMDcgUjkgQ1IwMjIxKQorICBNRV9DT05URVhUX0RFQUNUX0VWRU5ULCAgIC8vIFJlcGxhY2QgdG8gTUVfREVBQ1RfRVZFTlQgKDI3LjAwNyBSOSBDUjAyMjEpCisgIE5XX0RFVEFDSF9FVkVOVCwKKyAgTUVfREVUQUNIX0VWRU5ULAorICBNRV9QRE5fQUNUX0VWRU5ULCAgLy9JUFY2X1RPRE86IGFkZCBhIG5ldyBldmVudCB0eXBlIGZvciAiK0NHRVY6IE1FIFBETiBBQ1QgPGNpZD4iCisKKyAgLy9QcmltYXJ5IFBEUCBDb250ZXh0LCBNZXJnZSB0byAiK0NHRVY6IE5XL01FIEFDVC9ERUFDVCIgZW51bSBzCisgIC8vTldfUEROX0FDVF9FVkVOVCwgICAvL0xURTogYWRkIGEgbmV3IGV2ZW50IHR5cGUgZm9yICIrQ0dFVjogTlcgUEROIEFDVCA8Y2lkPiIgICA8PSBFUFMgbm90IGFwcGxpY2FibGUKKyAgLy9NRV9QRE5fQUNUX0VWRU5ULCAgIC8vTFRFOiBhZGQgYSBuZXcgZXZlbnQgdHlwZSBmb3IgIitDR0VWOiBNRSBQRE4gQUNUIDxjaWQ+IgorICAvL05XX1BETl9ERUFDVF9FVkVOVCwgLy9MVEU6IGFkZCBhIG5ldyBldmVudCB0eXBlIGZvciAiK0NHRVY6IE5XIFBETiBERUFDVCA8Y2lkPiIKKyAgLy9NRV9QRE5fREVBQ1RfRVZFTlQsIC8vTFRFOiBhZGQgYSBuZXcgZXZlbnQgdHlwZSBmb3IgIitDR0VWOiBNRSBQRE4gREVBQ1QgPGNpZD4iCisKKyAgLy9TZWNvbmRhcnkgUERQIENvbnRleHQKKyAgTldfQUNUX0VWRU5ULCAgICAgICAvL0xURTogYWRkIGEgbmV3IGV2ZW50IHR5cGUgZm9yICIrQ0dFVjogTlcgQUNUIDxwX2NpZD4sIDxjaWQ+LCA8ZXZlbnRfdHlwZT4KKyAgTUVfQUNUX0VWRU5ULCAgICAgICAvL0xURTogYWRkIGEgbmV3IGV2ZW50IHR5cGUgZm9yICIrQ0dFVjogTUUgQUNUIDxwX2NpZD4sIDxjaWQ+LCA8ZXZlbnRfdHlwZT4KKyAgTldfREVBQ1RfRVZFTlQsICAgICAvL0xURTogYWRkIGEgbmV3IGV2ZW50IHR5cGUgZm9yICIrQ0dFVjogTlcgREVBQ1QgPHBfY2lkPiwgPGNpZD4sIDxldmVudF90eXBlPgorICBNRV9ERUFDVF9FVkVOVCwgICAgIC8vTFRFOiBhZGQgYSBuZXcgZXZlbnQgdHlwZSBmb3IgIitDR0VWOiBNRSBERUFDVCA8cF9jaWQ+LCA8Y2lkPiwgPGV2ZW50X3R5cGU+CisKKyAgTldfTU9ESUZZX0VWRU5ULCAgICAvL0xURTogYWRkIGEgbmV3IGV2ZW50IHR5cGUgZm9yICIrQ0dFVjogTlcgTU9ESUZZIDxjaWQ+LCA8Y2hhbmdlX3JlYXNvbj4sIDxldmVudF90eXBlPgorICBNRV9NT0RJRllfRVZFTlQsICAgICAvL0xURTogYWRkIGEgbmV3IGV2ZW50IHR5cGUgZm9yICIrQ0dFVjogTUUgTU9ESUZZIDxjaWQ+LCA8Y2hhbmdlX3JlYXNvbj4sIDxldmVudF90eXBlPgorICBNRV9SRUFUVEFDSF9FVkVOVCAgICAvL1NHTFRFOiBBZnRlciBSQVVfUmVqZWN0IHdpdGggIzEwIGFuZCByZWF0dGFjaCBzdWNjLCBub3RpZnkgQVAgdG8gYWN0aXZlIFBEUCBBU0FQLgorfW1taV9ldmVudF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBQQU1fRVZFTlRfTk9USUZZX0NMRUFSX1ZaV19BUE5fVEFCTEUsCisgICAgUEFNX0VWRU5UX05PVElGWV9WWldfQVBfRlVMTFlfQ09OVFJPTF9JQSwKKyAgICBQQU1fRVZFTlRfTk9USUZZX1ZaV19BUF9OT1RfRlVMTFlfQ09OVFJPTF9JQQorfSBwYW1fZXZlbnRfbm90aWZ5X2VudW07CisKKy8vI2lmZGVmIF9fUExNTl9MSVNUX1BSRUZfU1VQUE9SVF9fCit0eXBlZGVmIGVudW0KK3sKKyAgICBBQ0NVUkFDWV9QUkVGRVJFRCwKKyAgICBTUEVFRF9QUkVGRkVSRUQKK30gcGxtbl9saXN0X3ByZWZlcmVuY2VfZW51bTsKKy8vI2VuZGlmIC8qIF9fUExNTl9MSVNUX1BSRUZfU1VQUE9SVF9fICovCisKK3R5cGVkZWYgZW51bQoreworICAgIEhTUEFfT0ZGID0gMCwKKyAgICBIU0RQQV9PTiA9IDEsCisgICAgSFNEUEFfSFNVUEFfT04gPSAyLAorICAgIEhTUEFQTFVTX09OID0gMworfSBoc3BhX3ByZWZlcmVuY2VfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBQUEFDX05PVF9SRVNUUklDVEVELAorICAgUFBBQ19QQUdJTkdfQUxMT1dFRCwKKyAgIFBQQUNfTFJfQUxMT1dFRAorfQorcHBhY19jaGVja2VkX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgUFNfQ0JTMF9HRVJNQU4gPSAwLAorICAgIFBTX0NCUzBfRU5HTElTSCwKKyAgICBQU19DQlMwX0lUQUxJQU4sCisgICAgUFNfQ0JTMF9GUkVOQ0gsCisgICAgUFNfQ0JTMF9TUEFOSVNILAorICAgIFBTX0NCUzBfRFVUQ0gsCisgICAgUFNfQ0JTMF9TV0VESVNILAorICAgIFBTX0NCUzBfREFOSVNILAorICAgIFBTX0NCUzBfUE9SVFVHVUVTRSwKKyAgICBQU19DQlMwX0ZJTk5JU0gsCisgICAgUFNfQ0JTMF9OT1JXRUdJQU4sCisgICAgUFNfQ0JTMF9HUkVFSywKKyAgICBQU19DQlMwX1RVUktJU0gsCisgICAgUFNfQ0JTMF9IVU5HQVJJQU4sCisgICAgUFNfQ0JTMF9QT0xJU0gsCisgICAgUFNfQ0JTMF9MQU5HX1VOU1BFQ0lGSUVELAorCisgICAgUFNfQ0JTMV9DWkVDSCA9IDE2LAorICAgIFBTX0NCUzFfSEVCUkVXLAorICAgIFBTX0NCUzFfQVJBQklDLAorICAgIFBTX0NCUzFfUlVTU0lBTiwKKyAgICBQU19DQlMxX0lDRUxBTkRJQywKKworICAgIFBTX0NCUzJfQUEsICAgIC8vIEFGQVIsIDIwCisgICAgUFNfQ0JTMl9BQiwgICAgLy8gQUJLSEFaSUFOCisgICAgUFNfQ0JTMl9BRiwgICAgLy8gQUZSSUtBQU5TCisgICAgUFNfQ0JTMl9BTSwgICAgLy8gQU1IQVJJQworICAgIC8vQ0JTMl9BUiwgLy8gQVJBQklDCisgICAgUFNfQ0JTMl9BUywgICAgLy8gQVNTQU1FU0UKKyAgICBQU19DQlMyX0FZLCAgICAvLyBBWU1BUkEKKyAgICBQU19DQlMyX0FaLCAgICAvLyBBWkVSQkFJSkFOSQorCisgICAgUFNfQ0JTMl9CQSwgICAgLy8gQkFTSEtJUgorICAgIFBTX0NCUzJfQkUsICAgIC8vIEJZRUxPUlVTU0lBTgorICAgIFBTX0NCUzJfQkcsICAgIC8vIEJVTEdBUklBTiwgMzAKKyAgICBQU19DQlMyX0JILCAgICAvLyBCSUhBUkkKKyAgICBQU19DQlMyX0JJLCAgICAvLyBCSVNMQU1BCisgICAgUFNfQ0JTMl9CTiwgICAgLy8gQkVOR0FMSTsgQkFOR0xBCisgICAgUFNfQ0JTMl9CTywgICAgLy8gVElCRVRBTgorICAgIFBTX0NCUzJfQlIsICAgIC8vIEJSRVRPTgorCisgICAgUFNfQ0JTMl9DQSwgICAgLy8gQ0FUQUxBTgorICAgIFBTX0NCUzJfQ08sICAgIC8vIENPUlNJQ0FOCisgICAgLy9DQlMyX0NTLCAvLyBDWkVDSAorICAgIFBTX0NCUzJfQ1ksICAgIC8vIFdFTFNICisKKyAgICAvL0NCUzJfREEsIC8vIERBTklTSCwgNDAKKyAgICAvL0NCUzJfREUsIC8vIEdFUk1BTgorICAgIFBTX0NCUzJfRFosICAgIC8vIEJIVVRBTkkKKworICAgIC8vQ0JTMl9FTCwgLy8gR1JFRUsKKyAgICAvL0NCUzJfRU4sIC8vIEVOR0xJU0gKKyAgICBQU19DQlMyX0VPLCAgICAvLyBFU1BFUkFOVE8KKyAgICAvL0NCUzJfRVMsIC8vIFNQQU5JU0gKKyAgICBQU19DQlMyX0VULCAgICAvLyBFU1RPTklBTgorICAgIFBTX0NCUzJfRVUsICAgIC8vIEJBU1FVRQorCisgICAgUFNfQ0JTMl9GQSwgICAgLy8gUEVSU0lBTgorICAgIC8vQ0JTMl9GSSwgLy8gRklOTklTSCwgNTAKKyAgICBQU19DQlMyX0ZKLCAgICAvLyBGSUpJCisgICAgUFNfQ0JTMl9GTywgICAgLy8gRkFST0VTRQorICAgIC8vQ0JTMl9GUiwgLy8gRlJFTkNICisgICAgUFNfQ0JTMl9GWSwgICAgLy8gRlJJU0lBTgorCisgICAgUFNfQ0JTMl9HQSwgICAgLy8gSVJJU0gKKyAgICBQU19DQlMyX0dELCAgICAvLyBTQ09UUyBHQUVMSUMKKyAgICBQU19DQlMyX0dMLCAgICAvLyBHQUxJQ0lBTgorICAgIFBTX0NCUzJfR04sICAgIC8vIEdVQVJBTkkKKyAgICBQU19DQlMyX0dVLCAgICAvLyBHVUpBUkFUSQorCisgICAgUFNfQ0JTMl9IQSwgICAgLy8gSEFVU0EsIDYwCisgICAgLy9DQlMyX0hFLCAvLyBIRUJSRVcgKEZPUk1FUkxZIElXKQorICAgIFBTX0NCUzJfSEksICAgIC8vIEhJTkRJCisgICAgUFNfQ0JTMl9IUiwgICAgLy8gQ1JPQVRJQU4KKyAgICAvL0NCUzJfSFUsIC8vIEhVTkdBUklBTgorICAgIFBTX0NCUzJfSFksICAgIC8vIEFSTUVOSUFOCisKKyAgICBQU19DQlMyX0lBLCAgICAvLyBJTlRFUkxJTkdVQQorICAgIFBTX0NCUzJfSUQsICAgIC8vIElORE9ORVNJQU4gKEZPUk1FUkxZIElOKQorICAgIFBTX0NCUzJfSUUsICAgIC8vIElOVEVSTElOR1VFCisgICAgUFNfQ0JTMl9JSywgICAgLy8gSU5VUElBSworICAgIFBTX0NCUzJfSVMsICAgIC8vIElDRUxBTkRJQywgNzAKKyAgICAvL0NCUzJfSVQsIC8vIElUQUxJQU4KKyAgICBQU19DQlMyX0lVLCAgICAvLyBJTlVLVElUVVQKKworICAgIFBTX0NCUzJfSkEsICAgIC8vIEpBUEFORVNFCisgICAgUFNfQ0JTMl9KVywgICAgLy8gSkFWQU5FU0UKKworICAgIFBTX0NCUzJfS0EsICAgIC8vIEdFT1JHSUFOCisgICAgUFNfQ0JTMl9LSywgICAgLy8gS0FaQUtICisgICAgUFNfQ0JTMl9LTCwgICAgLy8gR1JFRU5MQU5ESUMKKyAgICBQU19DQlMyX0tNLCAgICAvLyBDQU1CT0RJQU4KKyAgICBQU19DQlMyX0tOLCAgICAvLyBLQU5OQURBCisgICAgUFNfQ0JTMl9LTywgICAgLy8gS09SRUFOLCA4MAorICAgIFBTX0NCUzJfS1MsICAgIC8vIEtBU0hNSVJJCisgICAgUFNfQ0JTMl9LVSwgICAgLy8gS1VSRElTSAorICAgIFBTX0NCUzJfS1ksICAgIC8vIEtJUkdISVoKKworICAgIFBTX0NCUzJfTEEsICAgIC8vIExBVElOCisgICAgUFNfQ0JTMl9MTiwgICAgLy8gTElOR0FMQQorICAgIFBTX0NCUzJfTE8sICAgIC8vIExBT1RISUFOCisgICAgUFNfQ0JTMl9MVCwgICAgLy8gTElUSFVBTklBTgorICAgIFBTX0NCUzJfTFYsICAgIC8vIExBVFZJQU4sIExFVFRJU0gKKworICAgIFBTX0NCUzJfTUcsICAgIC8vIE1BTEFHQVNZCisgICAgUFNfQ0JTMl9NSSwgICAgLy8gTUFPUkksIDkwCisgICAgUFNfQ0JTMl9NSywgICAgLy8gTUFDRURPTklBTgorICAgIFBTX0NCUzJfTUwsICAgIC8vIE1BTEFZQUxBTQorICAgIFBTX0NCUzJfTU4sICAgIC8vIE1PTkdPTElBTgorICAgIFBTX0NCUzJfTU8sICAgIC8vIE1PTERBVklBTgorICAgIFBTX0NCUzJfTVIsICAgIC8vIE1BUkFUSEkKKyAgICBQU19DQlMyX01TLCAgICAvLyBNQUxBWQorICAgIFBTX0NCUzJfTVQsICAgIC8vIE1BTFRFU0UKKyAgICBQU19DQlMyX01ZLCAgICAvLyBCVVJNRVNFCisKKyAgICBQU19DQlMyX05BLCAgICAvLyBOQVVSVQorICAgIFBTX0NCUzJfTkUsICAgIC8vIE5FUEFMSSwgMTAwCisgICAgLy9DQlMyX05MLCAvLyBEVVRDSAorICAgIC8vQ0JTMl9OTywgLy8gTk9SV0VHSUFOCisKKyAgICBQU19DQlMyX09DLCAgICAvLyBPQ0NJVEFOCisgICAgUFNfQ0JTMl9PTSwgICAgLy8gKEFGQU4pIE9ST01PCisgICAgUFNfQ0JTMl9PUiwgICAgLy8gT1JJWUEKKworICAgIFBTX0NCUzJfUEEsICAgIC8vIFBVTkpBQkkKKyAgICAvL0NCUzJfUEwsIC8vIFBPTElTSAorICAgIFBTX0NCUzJfUFMsICAgIC8vIFBBU0hUTywgUFVTSFRPCisgICAgLy9DQlMyX1BULCAvLyBQT1JUVUdVRVNFCisKKyAgICBQU19DQlMyX1FVLCAgICAvLyBRVUVDSFVBLCAxMTAKKworICAgIFBTX0NCUzJfUk0sICAgIC8vIFJIQUVUTy1ST01BTkNFCisgICAgUFNfQ0JTMl9STiwgICAgLy8gS0lSVU5ESQorICAgIFBTX0NCUzJfUk8sICAgIC8vIFJPTUFOSUFOCisgICAgLy9DQlMyX1JVLCAvLyBSVVNTSUFOCisgICAgUFNfQ0JTMl9SVywgICAgLy8gS0lOWUFSV0FOREEKKworICAgIFBTX0NCUzJfU0EsICAgIC8vIFNBTlNLUklUCisgICAgUFNfQ0JTMl9TRCwgICAgLy8gU0lOREhJCisgICAgUFNfQ0JTMl9TRywgICAgLy8gU0FOR0hPCisgICAgUFNfQ0JTMl9TSCwgICAgLy8gU0VSQk8tQ1JPQVRJQU4KKyAgICBQU19DQlMyX1NJLCAgICAvLyBTSU5IQUxFU0UsIDEyMAorICAgIFBTX0NCUzJfU0ssICAgIC8vIFNMT1ZBSworICAgIFBTX0NCUzJfU0wsICAgIC8vIFNMT1ZFTklBTgorICAgIFBTX0NCUzJfU00sICAgIC8vIFNBTU9BTgorICAgIFBTX0NCUzJfU04sICAgIC8vIFNIT05BCisgICAgUFNfQ0JTMl9TTywgICAgLy8gU09NQUxJCisgICAgUFNfQ0JTMl9TUSwgICAgLy8gQUxCQU5JQU4KKyAgICBQU19DQlMyX1NSLCAgICAvLyBTRVJCSUFOCisgICAgUFNfQ0JTMl9TUywgICAgLy8gU0lTV0FUSQorICAgIFBTX0NCUzJfU1QsICAgIC8vIFNFU09USE8KKyAgICBQU19DQlMyX1NVLCAgICAvLyBTVU5EQU5FU0UsIDEzMAorICAgIC8vQ0JTMl9TViwgLy8gU1dFRElTSAorICAgIFBTX0NCUzJfU1csICAgIC8vIFNXQUhJTEkKKworICAgIFBTX0NCUzJfVEEsICAgIC8vIFRBTUlMCisgICAgUFNfQ0JTMl9URSwgICAgLy8gVEVMVUdVCisgICAgUFNfQ0JTMl9URywgICAgLy8gVEFKSUsKKyAgICBQU19DQlMyX1RILCAgICAvLyBUSEFJCisgICAgUFNfQ0JTMl9USSwgICAgLy8gVElHUklOWUEKKyAgICBQU19DQlMyX1RLLCAgICAvLyBUVVJLTUVOCisgICAgUFNfQ0JTMl9UTCwgICAgLy8gVEFHQUxPRworICAgIFBTX0NCUzJfVE4sICAgIC8vIFNFVFNXQU5BLCAxNDAKKyAgICBQU19DQlMyX1RPLCAgICAvLyBUT05HQQorICAgIC8vQ0JTMl9UUiwgLy8gVFVSS0lTSAorICAgIFBTX0NCUzJfVFMsICAgIC8vIFRTT05HQQorICAgIFBTX0NCUzJfVFQsICAgIC8vIFRBVEFSCisgICAgUFNfQ0JTMl9UVywgICAgLy8gVFdJCisKKyAgICBQU19DQlMyX1VHLCAgICAvLyBVSUdIVVIKKyAgICBQU19DQlMyX1VLLCAgICAvLyBVS1JBSU5JQU4KKyAgICBQU19DQlMyX1VSLCAgICAvLyBVUkRVCisgICAgUFNfQ0JTMl9VWiwgICAgLy8gVVpCRUsKKworICAgIFBTX0NCUzJfVkksICAgIC8vIFZJRVROQU1FU0UsIDE1MAorICAgIFBTX0NCUzJfVk8sICAgIC8vIFZPTEFQVUsKKworICAgIFBTX0NCUzJfV08sICAgIC8vIFdPTE9GCisKKyAgICBQU19DQlMyX1hILCAgICAvLyBYSE9TQQorCisgICAgUFNfQ0JTMl9ZSSwgICAgLy8gWUlERElTSCAoRk9STUVSTFkgSkkpCisgICAgUFNfQ0JTMl9ZTywgICAgLy8gWU9SVUJBCisKKyAgICBQU19DQlMyX1pBLCAgICAvLyBaSFVBTkcKKyAgICBQU19DQlMyX1pILCAgICAvLyBDSElORVNFCisgICAgUFNfQ0JTMl9aVSwgICAgLy8gWlVMVSwgMTU4CisgICAgUFNfQ0JTX0lOVkFMSUQgPSAyNTUKK30gY2JzX2xhbmd1YWdlX2VudW07CisKKwordHlwZWRlZiBlbnVtCit7CisgICAgQ0JTX0dTTTdfQklUID0gMHgwMCwgICAgICAgICAgICAvKiBHU00gNy1iaXQgKi8KKyAgICBDQlNfRUlHSFRfQklUID0gMHgwNCwgICAgICAgICAgIC8qIDgtYml0ICovCisgICAgQ0JTX1VDUzIgPSAweDA4LCAgICAgICAgICAgICAgICAvKiBVQ1MyICovCisgICAgQ0JTX0FMUEhBQkVUX1JFU0VSVkVEID0gMHgwQyAgICAvKiBSRVNFUlZFRCAqLworfSBjYnNfYWxwaGFiZXRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgQ0JTX0NMQVNTMCA9IDAsCisgICAgQ0JTX0NMQVNTMSwKKyAgICBDQlNfQ0xBU1MyLAorICAgIENCU19DTEFTUzMsCisgICAgQ0JTX0NMQVNTX1VOU1BFQ0lGSUVECit9IGNic19tc2djbGFzc19lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBQQkNDSCA9IDAsCisgICAgUFJBQ0ggPSAxLAorICAgIFBDQ0NIID0gMiwKKyAgICBQRFRDSCA9IDMsCisgICAgUEFDQ0ggPSA0LAorICAgIEJDQ0ggPSA1LAorICAgIE5fQkNDSCA9IDYsCisgICAgRV9CQ0NIID0gNywKKyAgICBDQ0NIID0gOCwKKyAgICBQQUdfQ0ggPSA5LAorICAgIFJBQ0ggPSAxMCwKKyAgICBTRENDSDRfMCA9IDExLAorICAgIFNEQ0NINF8xID0gMTIsCisgICAgU0RDQ0g0XzIgPSAxMywKKyAgICBTRENDSDRfMyA9IDE0LAorICAgIFNEQ0NIOF8wID0gMTUsCisgICAgU0RDQ0g4XzEgPSAxNiwKKyAgICBTRENDSDhfMiA9IDE3LAorICAgIFNEQ0NIOF8zID0gMTgsCisgICAgU0RDQ0g4XzQgPSAxOSwKKyAgICBTRENDSDhfNSA9IDIwLAorICAgIFNEQ0NIOF82ID0gMjEsCisgICAgU0RDQ0g4XzcgPSAyMiwKKyAgICBTRENDSCA9IDIzLAorICAgIFNBQ0NIID0gMjQsCisgICAgRkFDQ0ggPSAyNSwKKyAgICBUQ0hfRUYgPSAyNiwKKyAgICBUQ0hfRiA9IDI3LAorICAgIFRDSF9IXzAgPSAyOCwKKyAgICBUQ0hfSF8xID0gMjksCisgICAgVENIX0ggPSAzMCwKKyAgICBDQkNIID0gMzEsCisgICAgUFBDSCA9IDMyCit9IGNoYW5uZWxfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICB1bF9hbXJfcmF0ZV90MCwKKyAgICB1bF9hbXJfcmF0ZV90MSwKKyAgICB1bF9hbXJfcmF0ZV90MiwKKyAgICB1bF9hbXJfcmF0ZV90MywKKyAgICB1bF9hbXJfcmF0ZV90NCwKKyAgICB1bF9hbXJfcmF0ZV90NSwKKyAgICB1bF9hbXJfcmF0ZV90NiwKKyAgICB1bF9hbXJfcmF0ZV90NywKKyAgICB1bF9hbXJfcmF0ZV90OCwKKyAgICB1bF9hbXJfcmF0ZV9kZWZhdWx0Cit9IHVsX2Ftcl9yYXRlX2VudW07CisKKy8qIFRlbXAgc29sdXRpb24gZnJvIE1NIFByZS1pbnRlZ3JhdGlvbiAqLworI2lmIDAKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorCit0eXBlZGVmIGVudW0KK3sKKyAgICBPTl9PVEhFUl9DT1VOVFJZID0gMCwKKyAgICBPTl9IUExNTiA9IDEsCisgICAgT05fSE9NRV9DT1VOVFJZID0gMiwKKyAgICBPTl9IUExNTl9IT01FX0NPVU5UUlkgPSBPTl9IUExNTiB8IE9OX0hPTUVfQ09VTlRSWSAvLzMgICAgICAvLzMKK30gaHBsbW5fc3RhdHVzX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEZQTE1OX05PTkUgICAgICAgICAgICAgID0gMCwKKyAgICBGUExNTiAgICAgICAgICAgICAgICAgICA9IDEsICAgICAgICAgICAgICAgICAgICAgIC8qICMxMSAqLworICAgIEZQTE1OR1BSUyAgICAgICAgICAgICAgID0gMiwgICAgICAgICAgICAgICAgICAgICAgLyogIzE0ICovCisgICAgRlBMTU5fRlBMTU5HUFJTICAgICAgICAgPSBGUExNTiB8IEZQTE1OR1BSUywKKyAgICBGUExNTkNTICAgICAgICAgICAgICAgICA9IDQsICAgICAgICAgICAgICAgICAgICAgIC8qIEVNTSBjYXVzZSAjMTggKi8KKyAgICBGUExNTl9GUExNTkNTICAgICAgICAgICA9IEZQTE1OIHwgRlBMTU5DUywKKyAgICBGUExNTkdQUlNfRlBMTU5DUyAgICAgICA9IEZQTE1OR1BSUyB8IEZQTE1OQ1MsCisgICAgRlBMTU5fRlBMTU5HUFJTX0ZQTE1OQ1MgPSBGUExNTiB8IEZQTE1OR1BSUyB8IEZQTE1OQ1MKK30gZnBsbW5fc3RhdHVzX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE5PVF9PTl9BQk5PUk1BTF9SRUdOX0FSRUEgPSAwLAorICAgIE9OX0FCTk9STUFMX0xBICAgICAgICAgICAgPSAxLAorICAgIE9OX0FCTk9STUFMX1JBICAgICAgICAgICAgPSAyLAorICAgIE9OX0FCTk9STUFMX0xBX1JBICAgICAgICAgPSBPTl9BQk5PUk1BTF9MQSB8IE9OX0FCTk9STUFMX1JBLAorICAgIE9OX0FCTk9STUFMX1RBCit9IGFibm9ybWFsX3JlZ25fYXJlYV9lbnVtOworCisvKiBUZW1wIHNvbHV0aW9uIGZybyBNTSBQcmUtaW50ZWdyYXRpb24gKi8KKyNpZiAwCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisjZW5kaWYKKwordHlwZWRlZiBlbnVtCit7CisgICAgTFJfTk9UX1JFTEFURUQgPSAwLAorICAgIExSX0FDQ0VQVCwKKyAgICBMUl9SRUpFQ1QsCisgICAgTFJfQUJOT1JNQUwsCisgICAgTFJfQUNDRVBUX1BTX09OTFksCisgICAgTFJfTk9fTkVFREVELCAvKiBTR0xURSBEU0RTOiBQUyBAU0lNMiwganVzdCBwZXJmb3JtIHNlYXJjaCBidXQgZG8gbm90IGF0dGFjaCAqLworfSBscl9yZXN1bHRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTU1fRVZFTlRfTk9ORSA9IDAsCisgICAgTU1fRVZFTlRfTFUgPSAxLCAgICAgICAgICAgICAgICAvLyBMVSBpcyBpbml0aWF0ZWQKKyAgICBNTV9FVkVOVF9DTV9JTkQgPSAyLCAgICAgICAgICAgIC8vIE1UIENNIGlzIGVzdGFibGlzaGVkCisgICAgTU1fRVZFTlRfQ01fTk9STUFMX1JFUSA9IDMsICAgICAvLyBNTyBDTSBleGNlcHQgRUNDIGlzIHJlcXVlc3RlZCBieSB1c2VyCisgICAgTU1fRVZFTlRfQ01fRUNDX1JFUSA9IDQsICAgICAgICAvLyBNTyBFQ0MgaXMgcmVxdWVzdGVkIGJ5IHVzZXIKKyAgICBNTV9FVkVOVF9DTV9BQ0MgPSA1LCAgICAgICAgICAgIC8vIE1PIENNIGlzIGFjY2VwdGVkIGJ5IE5XCisgICAgTU1fRVZFTlRfQ01fQUJPUlQgPSA2LCAgICAgICAgICAvLyBNTyBDTSBpcyBhYm9ydGVkIGJ5IHVzZXIKKyAgICBNTV9FVkVOVF9BQ0NFU1NfQkFSUkVEID0gNywgICAgIC8vIExSIHdoaWxlIGFjY2VzcyBjbGFzcyBiYXJyZWQKKyAgICBNTV9FVkVOVF9FQ0FMTF9URVNUX0NBTEwgPSA4LAorICAgIE1NX0VWRU5UX0dNTV9SRUFEWV9TVEFURV9JTkQgPSA5LCAvL2ZvciBOV1NFTCBSNyAiMkcgcmVhZHkgc3RhdGUgZG9uJ3QgYWxsb3dlIEhQUExNTiBzZWFyY2ggZmVhdHVyZSIsIHN3aXRjaCByZWFkeV9zdGF0ZSBzdGF0dXMKKyAgICBNTV9FVkVOVF9UMzI0Nl9SVU5OSU5HID0gMTEsICAgIC8vIExSIHdoaWxlIFQzMjQ2IHJ1bm5pbmcKKyAgICBNTV9FVkVOVF9UMzM0Nl9SVU5OSU5HID0gMTIsICAgIC8vIExSIHdoaWxlIFQzMzQ2IHJ1bm5pbmcKKyAgICBNTV9FVkVOVF9TRUFSQ0hfT1RIRVJfUkFUX0lORCA9IDEzLCAvL0NTRkIgUkVESVIgUkVKLCBTRUFSQ0ggT1RIRVIgUkFUIFRPIEZJTklTSCBDQUxMCisgICAgTU1fRVZFTlRfUkVDRUlWRV9QRFBfQUNUX1JFSl9JTkQgPSAxNCwKKyAgICBNTV9FVkVOVF9DTV9SRUpfVE9fQ0NfRk9SX1JFVFJZID0xNSwgLypNTV9FVkVOVF9DTV9SRUpfVE9fQ0NfRk9SX1JFVFJZIG11c3QgYmUgYWRkZWQgYnkgTldTRUwgb3IgTU0qLworICAgIE1NX0VWRU5UX01UX0NTRkJfU0VBUkNIX0FCT1JUID0gMTYgICAvKk1NIHNlbmRzIHRvIE5XU0VMIHRvIGFib3J0IHRoZSBwbG1uIHNlYXJjaCBmb3IgTVQgQ1NGQiBzZXNzaW9uKi8KK30gbW1fZXZlbnRfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIE1NX0VDQUxMX09OTFksCisgICBNTV9FQ0FMTF9PTkxZX0xVX0FMTE9XRUQsCisgICBNTV9FQ0FMTF9PTkxZX1JFU1RSSUNUSU9OX1JFTU9WRUQsCisgICBNTV9OT1RfRUNBTExfT05MWQorfSBtbV9jaGVja19lY2FsbF9zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBMVEVfRFVQTEVYX1RZUEVfRkREID0gMHgwMCwKKyAgICBMVEVfRFVQTEVYX1RZUEVfVEREID0gMHgwMSwKKyAgICBMVEVfRFVQTEVYX1RZUEVfVU5LTk9XTiA9IDB4RkUsIC8qIGlmIG5vIGNlbGwsIEVSUkMgcmVwb3J0cyB0aGlzIHZhbHVlICovCisgICAgTFRFX0RVUExFWF9UWVBFX05PX1JFU1RSSUNUSU9OID0gMHhGRiAvKiBpZiBubyBuZWVkIHRvIHNlcGFyYXRlIFREL0ZERCwgTldTRUwgdXNlIHRoaXMgdmFsdWUgaW4gUkVRIG1zZyAqLworfSBsdGVfZHVwbGV4X3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBNTV9HTU1fRUNBTExfT05MWSA9IDAsICAvLyBGb3Igd2hlbl9fTkdfRUNBTExfU1VQUE9SVF9fIGlzIG9ubHkgZW5hYmxlZAorICAgTU1fR01NX05PVF9FQ0FMTF9PTkxZCit9IG1tX2dtbV9jaGVja19lY2FsbF9zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBEVVBMRVhfVFlQRV9GREQgPSAweDAwLAorICAgIERVUExFWF9UWVBFX1RERCA9IDB4MDEsCisgICAgRFVQTEVYX1RZUEVfVU5LTk9XTiA9IDB4RkUsIC8qIGlmIG5vIGNlbGwsIEFTIHJlcG9ydHMgdGhpcyB2YWx1ZSAqLworICAgIERVUExFWF9UWVBFX05PX1JFU1RSSUNUSU9OID0gMHhGRiAvKiBpZiBubyBuZWVkIHRvIHNlcGFyYXRlIFRERC9GREQsIE5XU0VMIHVzZSB0aGlzIHZhbHVlIGluIFJFUSBtc2cgKi8KK30gZHVwbGV4X3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRVZFTlRfVFlQRV9DU0ZCID0gMHgwMSwKKyAgICBFVkVOVF9UWVBFX1VQREFURV9FUExNTiA9IDB4MDIsCisgICAgRVZFTlRfVFlQRV9SRVRVUk5fTk9STUFMID0gMHgwNCwKKyAgICBFVkVOVF9UWVBFX1BST0NfUkVTVUxUID0gMHgwOCwKKyAgICBFVkVOVF9UWVBFX1VQREFURV9TVEFURSA9IDB4MTAsCisgICAgRVZFTlRfVFlQRV9SRVRVUk5fQUJOT1JNQUwgPSAweDIwLAorICAgIEVWRU5UX1RZUEVfUFJPQ19SRVNVTFRfV0lUSF9FUExNTiA9IEVWRU5UX1RZUEVfVVBEQVRFX0VQTE1OIHwgRVZFTlRfVFlQRV9QUk9DX1JFU1VMVCwgLy8weDBBLCBmb3IgTU0gdXNlCisgICAgRVZFTlRfVFlQRV9QUk9DX1JFU1VMVF9VUERBVEVfU1RBVEUgPSBFVkVOVF9UWVBFX1BST0NfUkVTVUxUIHwgRVZFTlRfVFlQRV9VUERBVEVfU1RBVEUgLy8weDE4LCBmb3IgTU0gYW5kIEVWQUwgdXNlCisgICAsRVZFTlRfVFlQRV9DT05HRVNUSU9OX1RJTUVSX0FDVElWRSA9IDB4ODAgIC8vIF9fUkVMMTBfXzogdDMzNDYKKyAgICxFVkVOVF9UWVBFX1RIUk9UVExJTkdfVElNRVJfQUNUSVZFID0gMHgxMDAgLyogVlpfUkVRX0xURURBVEFSRVRSWV83NzM1ICovCisgICAsRVZFTlRfVFlQRV9OT19BVkFJTEFCTEVfUEROID0gMHgyMDAKKyAgICxFVkVOVF9UWVBFX0NTRkJfRU1DID0gMHg0MDAKKyAgICxFVkVOVF9UWVBFX0FDX0JBUiA9IDB4ODAwCit9IGV2ZW50X3R5cGVfZW51bTsKKworCit0eXBlZGVmIGVudW0KK3sKKyAgICBUSU5fREVMRVRFRCAgICA9IDAsCisgICAgVElOX1BUTVNJLAorICAgIFRJTl9SQVRfUkVMQVRFRF9UTVNJLAorICAgIFRJTl9HVVRJCit9IHRpbl9lbnVtOworCisvL19fTFRFX18KK3R5cGVkZWYgZW51bQoreworICAgIEdNTV9SQVRfU1RBVEVfSVJfSU5WQUxJRCA9IDAsCisgICAgR01NX1JBVF9TVEFURV9JUl9PTkdPSU5HLAorICAgIEdNTV9SQVRfU1RBVEVfSVNfSU5BQ1RJVkVfTkFTLAorICAgIEdNTV9SQVRfU1RBVEVfSVNfQUNUSVZFX05BUworfSBnbW1fcmF0X3N0YXRlX2VudW07CisKKy8qIFRTIDI0LjAwOCAqLwordHlwZWRlZiBlbnVtCit7CisgICAgQ1NfVk9JQ0VfT05MWSA9IDAsCisgICAgSU1TX1BTX1ZPSUNFX09OTFksCisgICAgQ1NfVk9JQ0VfUFJFRkVSUkVEX0lNU19QU19WT0lDRV9BU19TRUNPTkRBUlksICAgICAgIC8qIENTIHZvaWNlIHByZWZlcnJlZCwgSU1TIFBTIFZvaWNlIGFzIHNlY29uZGFyeSAqLworICAgIElNU19QU19WT0lDRV9QUkVGRVJSRURfQ1NfVk9JQ0VfQVNfU0VDT05EQVJZICAgICAgICAvKiBJTVMgUFMgdm9pY2UgcHJlZmVycmVkLCBDUyBWb2ljZSBhcyBzZWNvbmRhcnkgKi8KK30gdm9pY2VfZG9tYWluX3ByZWZlcmVuY2VfZW51bTsKKy8qIEVSQUMgPC0+IEVOQVMvRUFTIGVuZCAqLworCisvKiBFUkFDIDwtPiBOV1NFTCBiZWdpbiAqLwordHlwZWRlZiBlbnVtCit7CisgICAgSU1TX1JFR19TVEFUVVNfVU5TUEVDSUZJRUQgPSAwLAorICAgIElNU19SRUdfU1RBVFVTX1JFR0lTVEVSRUQsCisgICAgSU1TX1JFR19TVEFUVVNfVU5SRUdJU1RFUkVECit9IGltc19yZWdfc3RhdHVzX2VudW07CisvKiBFUkFDIDwtPiBOV1NFTCBlbmQgKi8KKworLyogTU0gPC0+IEVNTSBiZWdpbiAqLwordHlwZWRlZiBlbnVtCit7CisgICAgTU1fRU1NX1RNU0lfU1RBVFVTX0lOVkFMSUQgICAgPSAwLAorICAgIE1NX0VNTV9UTVNJX1NUQVRVU19WQUxJRAorfSBtbV9lbW1fdG1zaV9zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBNTV9OT19DSEFOR0UsCisgICAgTU1fQ0VMTF9DSEFOR0UsCisgICAgTU1fUkFJX0NIQU5HRSwKKyAgICBNTV9MQUlfQ0hBTkdFLAorICAgIE1NX1BFUklPRElDX1JBX0NIQU5HRSwKKyAgICBNTV9SRUdfUkVRCit9bW1fY2VsbF9jaGFuZ2VfZW51bTsKKworCisjaWZkZWYgX19DU19TRVJWSUNFX18KK3R5cGVkZWYgZW51bQoreworICAgIE1NX1UxX1VQREFURUQgPSAwLAorICAgIE1NX1UyX05PVF9VUERBVEVEID0gMSwKKyAgICBNTV9VM19ST0FNSU5HX05PVF9BTExPV0VEID0gMywKKyAgICBNTV9VNF9VUERBVElOR19ESVNBQkxFRCA9IE1NX1UyX05PVF9VUERBVEVELAorICAgIE1NX1VQREFURV9TVEFUVVNfSU5WQUxJRCA9IDQKK30gZ3NtX3VwZGF0ZV9zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgTU1fU1RBUlRfVVAgPSAxLAorICBNTV9JTVNJX0FUVEFDSF9JTklULAorICBNTV9JTVNJX0FUVEFDSEVELAorICBNTV9MVV9SRUpFQ1QsCisgIE1NX0lNU0lfREVUQUNIX0lOSVQsCisgIE1NX0lNU0lfREVUQUNIRUQKK30gZ3NtX3N0YXRlX2VudW07CisjZW5kaWYKKworI2lmZGVmIF9fUFNfU0VSVklDRV9fCit0eXBlZGVmIGVudW0KK3sKKyAgICBHVTFfVVBEQVRFRCAgICAgICAgICAgICAgPSAwLAorICAgIEdVMl9OT1RfVVBEQVRFRCAgICAgICAgICA9IDEsCisgICAgR1UzX1JPQU1JTkdfTk9UX0FMTE9XRUQgID0gMiwKKyAgICBSQV9OT1RfQUxMT1dFRCAgICAgICAgICAgPSAzICAvKiAzRyBNb2RpZnksIG5vdCB1c2VkICovCit9Z3Byc191cGRhdGVfc3RhdHVzX2VudW07CisvL3R5cGVkZWYgZ3Byc191cGRhdGVfc3RhdHVzX2VudW0gZ21tX3VwZGF0ZV9zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgIFNUQVJUVVAgPSAxLAorICAgICBBVFRBQ0hFRF9JTklULAorICAgICBHTU1fQVRUQUNIRUQsCisgICAgIERFVEFDSEVELAorICAgICBERVRBQ0hFRF9JTklUCit9Z3Byc19zdGF0ZV9lbnVtOyAvKiAzRyBNb2RpZnk6IGdwcnNfc3RhdGVfZW51bSAqLworCit0eXBlZGVmIGVudW0KK3sKKyAgICBHUFJTX1RSQUZGSUNfQ0hBTk5ORUxfRE9STUFOVCA9IDAsCisgICAgR1BSU19UUkFGRklDX0NIQU5OTkVMX0FDVElWRQorfSBncHJzX3RyYWZmaWNfY2hhbm5lbF9zdGF0dXNfZW51bTsKKyNlbmRpZgorCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTU1fRVUxX1VQREFURUQgICAgICAgICAgICAgID0gMCwKKyAgICBFTU1fRVUyX05PVF9VUERBVEVEICAgICAgICAgID0gMSwKKyAgICBFTU1fRVUzX1JPQU1JTkdfTk9UX0FMTE9XRUQgID0gMgorfSBlcHNfdXBkYXRlX3N0YXR1c19lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBWR01NX1VQREFURUQgPSAwLAorICAgIFZHTU1fTk9UX1VQREFURUQgPSAxLAorICAgIFZHTU1fUk9BTUlOR19OT1RfQUxMT1dFRCA9IDIKK30gdmdtbV81Z191cGRhdGVfc3RhdHVzX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgICBFTU1fU1RBUlRVUCA9IDEsCisgICAgIEVNTV9BVFRBQ0hFRF9JTklULAorICAgICBFTU1fQVRUQUNIRUQsCisgICAgIEVNTV9ERVRBQ0hFRF9JTklULAorICAgICBFTU1fREVUQUNIRUQKK30gZXBzX3N0YXRlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEdNTV9NU0dfQVRUQUNIX1JFUVVFU1QgICAgPSAxLAorICAgIEdNTV9NU0dfQVRUQUNIX0FDQ0VQVCwKKyAgICBHTU1fTVNHX0FUVEFDSF9DT01QTEVURSwKKyAgICBHTU1fTVNHX0FUVEFDSF9SRUpFQ1QsCisgICAgR01NX01TR19ERVRBQ0hfUkVRVUVTVCwKKyAgICBHTU1fTVNHX0RFVEFDSF9BQ0NFUFQsCisgICAgR01NX01TR19SQVVfUkVRVUVTVCwKKyAgICBHTU1fTVNHX1JBVV9BQ0NFUFQsCisgICAgR01NX01TR19SQVVfQ09NUExFVEUsCisgICAgR01NX01TR19SQVVfUkVKRUNULAorICAgIEdNTV9NU0dfU0VSVklDRV9SRVFVRVNULAorICAgIEdNTV9NU0dfU0VSVklDRV9BQ0NFUFQsCisgICAgR01NX01TR19TRVJWSUNFX1JFSkVDVCwKKyAgICBHTU1fTVNHX1BUTVNJX1JFQUxMT0NfQ09NTUFORCwKKyAgICBHTU1fTVNHX1BUTVNJX1JFQUxMT0NfQ09NUExFVEUsCisgICAgR01NX01TR19BVVRIX0FORF9DSVBIRVJfUkVRLAorICAgIEdNTV9NU0dfQVVUSF9BTkRfQ0lQSEVSX1JTUCwKKyAgICBHTU1fTVNHX0FVVEhfQU5EX0NJUEhFUl9SRUosCisgICAgR01NX01TR19BVVRIX0FORF9DSVBIRVJfRkFJTCwKKyAgICBHTU1fTVNHX0lERU5JVFlfUkVRLAorICAgIEdNTV9NU0dfSURFTklUWV9SU1AsCisgICAgR01NX01TR19HTU1fU1RBVFVTLAorICAgIEdNTV9NU0dfR01NX0lORk9STUFUSU9OLAorICAgIEdNTV9NU0dfSU5WQUxJRAorfSBnbW1fbXNnX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgR01NX0FUVEFDSF9UWVBFX0dQUlNfQVRUQUNIICAgID0gMSwKKyAgICBHTU1fQVRUQUNIX1RZUEVfQ09NQklORURfQVRUQUNIICAgID0gMywKKyAgICBHTU1fQVRUQUNIX1RZUEVfRU1FUkdFTkNZX0FUVEFDSCAgICA9IDQsCisKKyAgICBHTU1fR1BSU19BVFRBQ0hfT05MWSA9IDEsCisgICAgR1BSU19BVFRBQ0hfV0hJTEVfSU1TSV9BVFRBQ0ggPSAyLAorICAgIENPTUJJTkVEX0FUVEFDSCA9IDMsCisgICAgR01NX0FUVEFDSF9UWVBFX0lOVkFMSUQgPSA1Cit9IGdtbV9hdHRhY2hfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBHTU1fVVBEQVRFX1RZUEVfUkFVICAgID0gMCwKKyAgICBHTU1fVVBEQVRFX1RZUEVfQ09NQklORURfUkFVLAorICAgIEdNTV9VUERBVEVfVFlQRV9DT01CSU5FRF9SQVVfSU1TSV9BVFRBQ0gsCisgICAgR01NX1VQREFURV9UWVBFX1BFUklPRElDX1JBVSwKKyAgICBHTU1fVVBEQVRFX1RZUEVfSU5WQUxJRCwKKworICAgIFJBVV9VUERBVEUgPSAwLAorICAgIENPTUJJTkVEX1JBVV9MQVUgPSAxLAorICAgIENPTUJJTkVEX1JBVV9MQVVfV0lUSF9JTVNJID0gMiwKKyAgICBQRVJJT0RJQ19SQVVfVVBEQVRFID0gMworfSBnbW1fdXBkYXRlX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgR01NX0FUVEFDSF9SRVNVTFRfR1BSU19PTkxZX0FUVEFDSEVEICAgID0gMSwKKyAgICBHTU1fQVRUQUNIX1JFU1VMVF9DT01CSU5FRF9BVFRBQ0hFRCAgICA9IDMsCisKKyAgIE1NX0dQUlNfT05MWV9BVFRBQ0hFRCAgICAgICA9IDEsCisgICBDT01CSU5FRF9HUFJTX0lNU0lfQVRUQUNIRUQgPSAzLAorICAgR01NX0FUVEFDSF9SRVNVTFRfSU5WQUxJRAorfSBnbW1fYXR0YWNoX3Jlc3VsdF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBHTU1fVVBEQVRFX1JFU1VMVF9SQV9VUERBVEVEICAgICAgICAgICAgICAgICAgICAgPSAwLAorICAgIEdNTV9VUERBVEVfUkVTVUxUX0NPTUJJTkVEX1VQREFURUQgICAgICAgICAgICAgICA9IDEsCisgICAgR01NX1VQREFURV9SRVNVTFRfUkFfVVBEQVRFRF9JU1JfQUNUSVZBVEVEICAgICAgID0gNCwKKyAgICBHTU1fVVBEQVRFX1JFU1VMVF9DT01CSU5FRF9VUERBVEVEX0lTUl9BQ1RJVkFURUQgPSA1LAorICAgIEdNTV9VUERBVEVfUkVTVUxUX0lOVkFMSUQKK30gZ21tX3VwZGF0ZV9yZXN1bHRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgR01NX0NBVVNFX0lNU0lfVU5LTk9XTl9JTl9ITFIgICAgPSAweDAyLAorICAgIEdNTV9DQVVTRV9JTExFR0FMX01TICAgID0gMHgwMywKKyAgICBHTU1fQ0FVU0VfSU1FSV9OT1RfQUNDRVBURUQgICAgPSAweDA1LAorICAgIEdNTV9DQVVTRV9JTExFR0FMX01FICAgID0gMHgwNiwKKyAgICBHTU1fQ0FVU0VfR1BSU19OT1RfQUxMT1dFRCAgICA9IDB4MDcsCisgICAgR01NX0NBVVNFX0dQUlNfTk9OX0dQUlNfTk9UX0FMTE9XRUQgICAgPSAweDA4LAorICAgIEdNTV9DQVVTRV9NU19JRF9OT1RfREVSSVZFRF9CWV9OVyAgICA9IDB4MDksCisgICAgR01NX0NBVVNFX0lNUExJQ0lUX0RFVEFDSCAgICA9IDB4MGEsCisgICAgR01NX0NBVVNFX1BMTU5fTk9UX0FMTE9XRUQgICAgPSAweDBiLAorICAgIEdNTV9DQVVTRV9MQV9OT1RfQUxMT1dFRCAgICA9IDB4MGMsCisgICAgR01NX0NBVVNFX1JPQU1JTkdfTk9UX0FMTE9XRURfSU5fTEEgICAgPSAweDBkLAorICAgIEdNTV9DQVVTRV9HUFJTX05PVF9BTExPV0VEX0lOX1BMTU4gICAgPSAweDBlLAorICAgIEdNTV9DQVVTRV9OT19TVUlUQUJMRV9DRUxMX0lOX0xBICAgID0gMHgwZiwKKyAgICBHTU1fQ0FVU0VfTVNDX05PVF9SRUFDSEFCTEUgICAgPSAweDEwLAorICAgIEdNTV9DQVVTRV9OV19GQUlMVVJFICAgID0gMHgxMSwKKyAgICBHTU1fQ0FVU0VfTUFDX0ZBSUxVUkUgICAgPSAweDE0LAorICAgIEdNTV9DQVVTRV9TWU5DSF9GQUlMVVJFICAgID0gMHgxNSwKKyAgICBHTU1fQ0FVU0VfQ09OR0VTVElPTiAgICA9IDB4MTYsCisgICAgR01NX0NBVVNFX0dTTV9BVVRIX1VOQUNDRVBUQUJMRSAgICA9IDB4MTcsCisgICAgR01NX0NBVVNFX05PVF9BVVRIX0ZPUl9DU0cgICAgPSAweDE5LAorICAgIEdNTV9DQVVTRV9OT19QRFBfQ1RYVF9BQ1QgICAgPSAweDI4LAorICAgIEdNTV9DQVVTRV9TRU1BTlRJQ19JTkNPUlJFQ1QgICAgPSAweDVmLAorICAgIEdNTV9DQVVTRV9JTlZBTElEX01BTkRBVE9SWV9JTkZPICAgID0gMHg2MCwKKyAgICBHTU1fQ0FVU0VfTVNHX1RZUEVfTk9UX0VYSVNUICAgID0gMHg2MSwKKyAgICBHTU1fQ0FVU0VfTVNHX1RZUEVfTk9UX0NPTVBBVElCTEUgICAgPSAweDYyLAorICAgIEdNTV9DQVVTRV9JRV9OT1RfRVhJU1QgICAgPSAweDYzLAorICAgIEdNTV9DQVVTRV9DT05ESVRJT05BTF9JRV9FUlJPUiAgICA9IDB4NjQsCisgICAgR01NX0NBVVNFX01FU1NBR0VfTk9UX0NPTVBBVElCTEUgICAgPSAweDY1LAorICAgIEdNTV9DQVVTRV9QUk9UT0NPTF9FUlJPUiAgICA9IDB4NmYsCit9IGdtbV9jYXVzZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBNTV9FTU1fTVRfQ0FVU0VfVU5TUEVDSUZJRUQgICAgPSAwLAorICAgIE1NX0VNTV9NVF9DQVVTRV9QU19QQUdJTkdfV0lUSF9JTVNJCit9IG1tX2VtbV9tdF9jYXVzZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBHTU1fREVUQUNIX1RZUEVfTU9fR1BSU19ERVRBQ0ggICAgPSAxLAorICAgIEdNTV9ERVRBQ0hfVFlQRV9NT19JTVNJX0RFVEFDSCwKKyAgICBHTU1fREVUQUNIX1RZUEVfTU9fQ09NQklORURfREVUQUNILAorICAgIEdNTV9ERVRBQ0hfVFlQRV9NVF9SRUFUVEFDSF9SRVFVSVJFRCwKKyAgICBHTU1fREVUQUNIX1RZUEVfTVRfUkVBVFRBQ0hfTk9UX1JFUVVJUkVELAorICAgIEdNTV9ERVRBQ0hfVFlQRV9NT19QT1dFUk9GRl9HUFJTX0RFVEFDSCwKKyAgICBHTU1fREVUQUNIX1RZUEVfTU9fUE9XRVJPRkZfQ09NQklORURfREVUQUNILAorICAgIEdNTV9ERVRBQ0hfVFlQRV9JTlZBTElECit9IGdtbV9kZXRhY2hfdHlwZV9lbnVtOworCisjaWZkZWYgX19GSVZFR19OQVNfXwordHlwZWRlZiBlbnVtCit7CisgICAgVkdNTV9ERVRBQ0hfVFlQRV9NT19HUFJTX0RFVEFDSCAgICA9IDEsCisgICAgVkdNTV9ERVRBQ0hfVFlQRV9NT19QT1dFUk9GRl9ERVRBQ0gsCisgICAgVkdNTV9ERVRBQ0hfVFlQRV9NVF9SRUFUVEFDSF9SRVFVSVJFRCwKKyAgICBWR01NX0RFVEFDSF9UWVBFX01UX1JFQVRUQUNIX05PVF9SRVFVSVJFRCwKK30gdmdtbV9kZXRhY2hfdHlwZV9lbnVtOworI2VuZGlmCisKK3R5cGVkZWYgZW51bQoreworICAgIEVNTV9NU0dfQVRUQUNIX1JFUVVFU1QgICAgICAgICAgICAgID0gMHg0MSwKKyAgICBFTU1fTVNHX0FUVEFDSF9BQ0NFUFQgICAgICAgICAgICAgICA9IDB4NDIsCisgICAgRU1NX01TR19BVFRBQ0hfQ09NUExFVEUgICAgICAgICAgICAgPSAweDQzLAorICAgIEVNTV9NU0dfQVRUQUNIX1JFSkVDVCAgICAgICAgICAgICAgID0gMHg0NCwKKyAgICBFTU1fTVNHX0RFVEFDSF9SRVFVRVNUICAgICAgICAgICAgICA9IDB4NDUsCisgICAgRU1NX01TR19ERVRBQ0hfQUNDRVBUICAgICAgICAgICAgICAgPSAweDQ2LAorICAgIEVNTV9NU0dfVEFVX1JFUVVFU1QgICAgICAgICAgICAgICAgID0gMHg0OCwKKyAgICBFTU1fTVNHX1RBVV9BQ0NFUFQgICAgICAgICAgICAgICAgICA9IDB4NDksCisgICAgRU1NX01TR19UQVVfQ09NUExFVEUgICAgICAgICAgICAgICAgPSAweDRBLAorICAgIEVNTV9NU0dfVEFVX1JFSkVDVCAgICAgICAgICAgICAgICAgID0gMHg0QiwKKyAgICBFTU1fTVNHX0VYVF9TRVJWSUNFX1JFUVVFU1QgICAgICAgICA9IDB4NEMsCisgICAgRU1NX01TR19TRVJWSUNFX1JFSkVDVCAgICAgICAgICAgICAgPSAweDRFLAorICAgIEVNTV9NU0dfR1VUSV9SRUFMTE9DX0NPTU1BTkQgICAgICAgID0gMHg1MCwKKyAgICBFTU1fTVNHX0dVVElfUkVBTExPQ19DT01QTEVURSAgICAgICA9IDB4NTEsCisgICAgRU1NX01TR19BVVRIX1JFUSAgICAgICAgICAgICAgICAgICAgPSAweDUyLAorICAgIEVNTV9NU0dfQVVUSF9SU1AgICAgICAgICAgICAgICAgICAgID0gMHg1MywKKyAgICBFTU1fTVNHX0FVVEhfUkVKICAgICAgICAgICAgICAgICAgICA9IDB4NTQsCisgICAgRU1NX01TR19BVVRIX0ZBSUwgICAgICAgICAgICAgICAgICAgPSAweDVDLAorICAgIEVNTV9NU0dfSURFTlRJVFlfUkVRICAgICAgICAgICAgICAgID0gMHg1NSwKKyAgICBFTU1fTVNHX0lERU5USVRZX1JTUCAgICAgICAgICAgICAgICA9IDB4NTYsCisgICAgRU1NX01TR19TRUNfTU9ERV9DT01NQU5EICAgICAgICAgICAgPSAweDVELAorICAgIEVNTV9NU0dfU0VDX01PREVfQ09NUExFVEUgICAgICAgICAgID0gMHg1RSwKKyAgICBFTU1fTVNHX1NFQ19NT0RFX1JFSkVDVCAgICAgICAgICAgICA9IDB4NUYsCisgICAgRU1NX01TR19FTU1fU1RBVFVTICAgICAgICAgICAgICAgICAgPSAweDYwLAorICAgIEVNTV9NU0dfRU1NX0lORk9STUFUSU9OICAgICAgICAgICAgID0gMHg2MSwKKyAgICBFTU1fTVNHX0RMX05BU19UUkFOU1BPUlQgICAgICAgICAgICA9IDB4NjIsCisgICAgRU1NX01TR19VTF9OQVNfVFJBTlNQT1JUICAgICAgICAgICAgPSAweDYzLAorICAgIEVNTV9NU0dfQ1NfU0VSVklDRV9OT1RJRlkgICAgICAgICAgID0gMHg2NCwKKyAgICBFTU1fTVNHX0RMX05BU19HRU5FUklDX1RSQU5TUE9SVCAgICA9IDB4NjgsCisgICAgRU1NX01TR19VTF9OQVNfR0VORVJJQ19UUkFOU1BPUlQgICAgPSAweDY5LAorICAgIEVNTV9NU0dfU0VSVklDRV9SRVFVRVNUICAgICAgICAgICAgID0gMHhGRSwKKyAgICBFTU1fTVNHX0lOVkFMSUQgICAgICAgICAgICAgICAgICAgICA9IDB4RkYKK30gZW1tX21zZ190eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVNTV9BVFRBQ0hfVFlQRV9OT05FID0gMCwKKyAgICBFTU1fQVRUQUNIX1RZUEVfRVBTX0FUVEFDSCAgICA9IDEsCisgICAgRU1NX0FUVEFDSF9UWVBFX0NPTUJJTkVEX0FUVEFDSCAgICA9IDIsCisgICAgRU1NX0FUVEFDSF9UWVBFX0VNRVJHRU5DWV9BVFRBQ0ggICAgPSA2Cit9IGVtbV9hdHRhY2hfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTU1fVVBEQVRFX1RZUEVfVEFVICAgID0gMCwKKyAgICBFTU1fVVBEQVRFX1RZUEVfQ09NQklORURfVEFVLAorICAgIEVNTV9VUERBVEVfVFlQRV9DT01CSU5FRF9UQVVfSU1TSV9BVFRBQ0gsCisgICAgRU1NX1VQREFURV9UWVBFX1BFUklPRElDX1RBVSwKKyAgICBFTU1fVVBEQVRFX1RZUEVfSU5WQUxJRAorfSBlbW1fdXBkYXRlX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRU1NX0FUVEFDSF9SRVNVTFRfTk9ORSA9IDAsCisgICAgRU1NX0FUVEFDSF9SRVNVTFRfRVBTX09OTFlfQVRUQUNIRUQsCisgICAgRU1NX0FUVEFDSF9SRVNVTFRfQ09NQklORURfQVRUQUNIRUQKK30gZW1tX2F0dGFjaF9yZXN1bHRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRU1NX1VQREFURV9SRVNVTFRfVEFfVVBEQVRFRCA9IDAsCisgICAgRU1NX1VQREFURV9SRVNVTFRfQ09NQklORURfVVBEQVRFRCA9IDEsCisgICAgRU1NX1VQREFURV9SRVNVTFRfVEFfVVBEQVRFRF9JU1JfQUNUSVZBVEVEID0gNCwKKyAgICBFTU1fVVBEQVRFX1JFU1VMVF9DT01CSU5FRF9VUERBVEVEX0lTUl9BQ1RJVkFURUQgPSA1LAorICAgIEVNTV9VUERBVEVfUkVTVUxUX0lOVkFMSUQKK30gZW1tX3VwZGF0ZV9yZXN1bHRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRU1NX0NBVVNFX0NBVVNFX05PTkUgPSAweDAwLAorICAgIEVNTV9DQVVTRV9JTVNJX1VOS05PV05fSU5fSFNTICAgID0gMHgwMiwKKyAgICBFTU1fQ0FVU0VfSUxMRUdBTF9VRSAgICA9IDB4MDMsCisgICAgRU1NX0NBVVNFX0lNRUlfTk9UX0FDQ0VQVEVEICAgID0gMHgwNSwKKyAgICBFTU1fQ0FVU0VfSUxMRUdBTF9NRSAgICA9IDB4MDYsCisgICAgRU1NX0NBVVNFX0VQU19OT1RfQUxMT1dFRCAgICA9IDB4MDcsCisgICAgRU1NX0NBVVNFX0VQU19OT05fRVBTX05PVF9BTExPV0VEICAgID0gMHgwOCwKKyAgICBFTU1fQ0FVU0VfVUVfSURfTk9UX0RFUklWRURfQllfTlcgICAgPSAweDA5LAorICAgIEVNTV9DQVVTRV9JTVBMSUNJVF9ERVRBQ0ggICAgPSAweDBhLAorICAgIEVNTV9DQVVTRV9QTE1OX05PVF9BTExPV0VEICAgID0gMHgwYiwKKyAgICBFTU1fQ0FVU0VfVEFfTk9UX0FMTE9XRUQgICAgPSAweDBjLAorICAgIEVNTV9DQVVTRV9ST0FNSU5HX05PVF9BTExPV0VEX0lOX1RBICAgID0gMHgwZCwKKyAgICBFTU1fQ0FVU0VfRVBTX05PVF9BTExPV0VEX0lOX1BMTU4gICAgPSAweDBlLAorICAgIEVNTV9DQVVTRV9OT19TVUlUQUJMRV9DRUxMX0lOX1RBICAgID0gMHgwZiwKKyAgICBFTU1fQ0FVU0VfTVNDX05PVF9SRUFDSEFCTEUgICAgPSAweDEwLAorICAgIEVNTV9DQVVTRV9OV19GQUlMVVJFICAgID0gMHgxMSwKKyAgICBFTU1fQ0FVU0VfQ1NfTk9UX0FWQUlMQUJMRSAgICA9IDB4MTIsCisgICAgRU1NX0NBVVNFX0VTTV9GQUlMVVJFICAgID0gMHgxMywKKyAgICBFTU1fQ0FVU0VfTUFDX0ZBSUxVUkUgICAgPSAweDE0LAorICAgIEVNTV9DQVVTRV9TWU5DSF9GQUlMVVJFICAgID0gMHgxNSwKKyAgICBFTU1fQ0FVU0VfQ09OR0VTVElPTiAgICA9IDB4MTYsCisgICAgRU1NX0NBVVNFX1VFX1NFQ19DQVBBX01JU01BVENIICAgID0gMHgxNywKKyAgICBFTU1fQ0FVU0VfU0VDX01PREVfUkVKX1VOU1BFQ0lGSUVEICAgID0gMHgxOCwKKyAgICBFTU1fQ0FVU0VfTk9UX0FVVEhfRk9SX0NTRyAgICA9IDB4MTksCisgICAgRU1NX0NBVVNFX05PTl9FUFNfQVVUSF9VTkFDQ0VQVEFCTEUgICAgPSAweDFhLAorICAgIEVNTV9DQVVTRV9SRVFVRVNUX1NFUlZJQ0VfT1BUSU9OX05PVF9BVVRIT1JJWkVEX0lOX1BMTU4gPSAweDIzLAorICAgIEVNTV9DQVVTRV9DU19URU1QX05PVF9BVkFJTEFCTEUgICAgPSAweDI3LAorICAgIEVNTV9DQVVTRV9OT19FUFNfQ1RYVF9BQ1QgICAgPSAweDI4LAorICAgIEVNTV9DQVVTRV9TRVZFUkVfTldfRkFJTFVSRSAgICA9IDB4MmEsICAgICAgICAgICAgLyogUjExIENQIzEyMDU5NCBDUiMxNDczICovCisgICAgRU1NX0NBVVNFX1NFTUFOVElDX0lOQ09SUkVDVCAgICA9IDB4NWYsCisgICAgRU1NX0NBVVNFX0lOVkFMSURfTUFOREFUT1JZX0lORk8gICAgPSAweDYwLAorICAgIEVNTV9DQVVTRV9NU0dfVFlQRV9OT1RfRVhJU1QgICAgPSAweDYxLAorICAgIEVNTV9DQVVTRV9NU0dfVFlQRV9OT1RfQ09NUEFUSUJMRSAgICA9IDB4NjIsCisgICAgRU1NX0NBVVNFX0lFX05PVF9FWElTVCAgICA9IDB4NjMsCisgICAgRU1NX0NBVVNFX0NPTkRJVElPTkFMX0lFX0VSUk9SICAgID0gMHg2NCwKKyAgICBFTU1fQ0FVU0VfTUVTU0FHRV9OT1RfQ09NUEFUSUJMRSAgICA9IDB4NjUsCisgICAgRU1NX0NBVVNFX1BST1RPQ09MX0VSUk9SICAgID0gMHg2ZiwKKyAgICAvKiBJbmNhc2UgaWYgYW55IG1vcmUgc3RhbmRhcmQgY2F1c2UgdmFsdWVzIGFyZSB0byBiZSBhZGRlZCB0aGVuCisgICAgICogdGhlIGNhdXNlIGhhdmluZyB0aGUgZ3JlYXRlc3QgdmFsdWUgc2hvdWxkIGJlIHBsYWNlZCBqdXN0IGJlZm9yZQorICAgICAqIHRoZSBpbnRlcm5hbCBjYXVzZSB2YWx1ZXMuCisgICAgICovCisgICAgLyogTk9URTogdGhlIHZhbHVlcyBvZiBNVEsgaW50ZXJuYWwtZGVmaW5lZCBjYXVzZXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIG1tX2NhdXNlX2VudW0gKi8KKworICAgIEVNTV9DQVVTRV9GT1JCSURERU5fUExNTiAgICAgICAgICAgICAgICAgICAgPSBGT1JCSURERU5fUExNTiwgLyogMHg3MCAqLworICAgIEVNTV9DQVVTRV9OT19DT1ZFUkFHRSAgICAgICAgICAgICAgICAgICAgICAgPSBOT19DT1ZFUkFHRSwKKyAgICBFTU1fQ0FVU0VfRVBTX1NFUlZfTk9UX0FMTE9XRUQgICAgICAgICAgICAgID0gR1BSU19TRVJWX05PVF9BTExPV0VELCAvKiBmb3IgR0VNSU5JLCBQUyBjYW4gTk9UIGF0dGFjaCBpbiBTSU0xIGFuZCBTSU0yICovCisgICAgRU1NX0NBVVNFX1NJTV9SRU1PVkVEICAgICAgICAgICAgICAgICAgICAgICA9IFNJTV9SRU1PVkVELAorICAgIEVNTV9DQVVTRV9TSU1fSU5WQUxJRF9GT1JfUFMgICAgICAgICAgICAgICAgPSBTSU1fSU5WQUxJRF9GT1JfUFMsCisgICAgRU1NX0NBVVNFX1NJTV9JTlZBTElEX0ZPUl9DUyAgICAgICAgICAgICAgICA9IFNJTV9JTlZBTElEX0ZPUl9DUywKKyAgICBFTU1fQ0FVU0VfU0lNX0lOVkFMSURfRk9SX0NTX0FORF9QUyAgICAgICAgID0gU0lNX0lOVkFMSURfRk9SX0NTX0FORF9QUywKKyAgICBFTU1fQ0FVU0VfRUFTX0lOX1NVU1BFTkRfTU9ERSAgICAgICAgICAgICAgID0gTU1fUkVKX0NVWl9SUl9JTl9TVVNQRU5EX01PREUsCisgICAgRU1NX0NBVVNFX0xJTUlURURfU0VSVklDRSAgICAgICAgICAgICAgICAgICA9IEdQUlNfSU5fTElNSVRFRF9TRVJWSUNFLAorICAgIEVNTV9DQVVTRV9TSU1fSU5WQUxJRF9GT1JfTFRFX0JFQ0FVU0VfTk9OX1VTSU1fSU5TRVJURUQgPSAweDhmLAorICAgIEVNTV9DQVVTRV9PT1NfSU5EICAgPSAweDkwLAorICAgIEVNTV9DQVVTRV9FQ0FMTF9JTkFDVElWRSA9IDB4OTEKK30gZW1tX2NhdXNlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfQ0FVU0VfTk9ORSA9IDB4MDAsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9JTVNJX1VOS05PV05fSU5fSFNTICAgID0gMHgwMiwKKyAgICBDU0ZCX0lORk9fRU1NX0NBVVNFX0lMTEVHQUxfVUUgICAgPSAweDAzLAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfSU1FSV9OT1RfQUNDRVBURUQgICAgPSAweDA1LAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfSUxMRUdBTF9NRSAgICA9IDB4MDYsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9FUFNfTk9UX0FMTE9XRUQgICAgPSAweDA3LAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfRVBTX05PTl9FUFNfTk9UX0FMTE9XRUQgICAgPSAweDA4LAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfVUVfSURfTk9UX0RFUklWRURfQllfTlcgICAgPSAweDA5LAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfSU1QTElDSVRfREVUQUNIICAgID0gMHgwYSwKKyAgICBDU0ZCX0lORk9fRU1NX0NBVVNFX1BMTU5fTk9UX0FMTE9XRUQgICAgPSAweDBiLAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfVEFfTk9UX0FMTE9XRUQgICAgPSAweDBjLAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfUk9BTUlOR19OT1RfQUxMT1dFRF9JTl9UQSAgICA9IDB4MGQsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9FUFNfTk9UX0FMTE9XRURfSU5fUExNTiAgICA9IDB4MGUsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9OT19TVUlUQUJMRV9DRUxMX0lOX1RBICAgID0gMHgwZiwKKyAgICBDU0ZCX0lORk9fRU1NX0NBVVNFX01TQ19OT1RfUkVBQ0hBQkxFICAgID0gMHgxMCwKKyAgICBDU0ZCX0lORk9fRU1NX0NBVVNFX05XX0ZBSUxVUkUgICAgPSAweDExLAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfQ1NfTk9UX0FWQUlMQUJMRSAgICA9IDB4MTIsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9FU01fRkFJTFVSRSAgICA9IDB4MTMsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9NQUNfRkFJTFVSRSAgICA9IDB4MTQsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9TWU5DSF9GQUlMVVJFICAgID0gMHgxNSwKKyAgICBDU0ZCX0lORk9fRU1NX0NBVVNFX0NPTkdFU1RJT04gICAgPSAweDE2LAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfVUVfU0VDX0NBUEFfTUlTTUFUQ0ggICAgPSAweDE3LAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfU0VDX01PREVfUkVKX1VOU1BFQ0lGSUVEICAgID0gMHgxOCwKKyAgICBDU0ZCX0lORk9fRU1NX0NBVVNFX05PVF9BVVRIX0ZPUl9DU0cgICAgPSAweDE5LAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfTk9OX0VQU19BVVRIX1VOQUNDRVBUQUJMRSAgICA9IDB4MWEsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9DU19URU1QX05PVF9BVkFJTEFCTEUgICAgPSAweDI3LAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfTk9fRVBTX0NUWFRfQUNUICAgID0gMHgyOCwKKyAgICBDU0ZCX0lORk9fRU1NX0NBVVNFX1NFTUFOVElDX0lOQ09SUkVDVCAgICA9IDB4NWYsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9JTlZBTElEX01BTkRBVE9SWV9JTkZPICAgID0gMHg2MCwKKyAgICBDU0ZCX0lORk9fRU1NX0NBVVNFX01TR19UWVBFX05PVF9FWElTVCAgICA9IDB4NjEsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9NU0dfVFlQRV9OT1RfQ09NUEFUSUJMRSAgICA9IDB4NjIsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9JRV9OT1RfRVhJU1QgICAgPSAweDYzLAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfQ09ORElUSU9OQUxfSUVfRVJST1IgICAgPSAweDY0LAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfTUVTU0FHRV9OT1RfQ09NUEFUSUJMRSAgICA9IDB4NjUsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9QUk9UT0NPTF9FUlJPUiAgICA9IDB4NmYsCisgICAgLyogSW5jYXNlIGlmIGFueSBtb3JlIHN0YW5kYXJkIGNhdXNlIHZhbHVlcyBhcmUgdG8gYmUgYWRkZWQgdGhlbgorICAgICAqIHRoZSBjYXVzZSBoYXZpbmcgdGhlIGdyZWF0ZXN0IHZhbHVlIHNob3VsZCBiZSBwbGFjZWQganVzdCBiZWZvcmUKKyAgICAgKiB0aGUgaW50ZXJuYWwgY2F1c2UgdmFsdWVzLgorICAgICAqLworICAgIC8qIE5PVEU6IHRoZSB2YWx1ZXMgb2YgTVRLIGludGVybmFsLWRlZmluZWQgY2F1c2VzIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBtbV9jYXVzZV9lbnVtICovCisKKyAgICBDU0ZCX0lORk9fRU1NX0NBVVNFX0ZPUkJJRERFTl9QTE1OICAgICAgICAgICAgICAgICAgICA9IEZPUkJJRERFTl9QTE1OLCAvKiAweDcwICovCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9OT19DT1ZFUkFHRSAgICAgICAgICAgICAgICAgICAgICAgPSBOT19DT1ZFUkFHRSwKKyAgICBDU0ZCX0lORk9fRU1NX0NBVVNFX0VQU19TRVJWX05PVF9BTExPV0VEICAgICAgICAgICAgICA9IEdQUlNfU0VSVl9OT1RfQUxMT1dFRCwgLyogZm9yIEdFTUlOSSwgUFMgY2FuIE5PVCBhdHRhY2ggaW4gU0lNMSBhbmQgU0lNMiAqLworICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfU0lNX1JFTU9WRUQgICAgICAgICAgICAgICAgICAgICAgID0gU0lNX1JFTU9WRUQsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9TSU1fSU5WQUxJRF9GT1JfUFMgICAgICAgICAgICAgICAgPSBTSU1fSU5WQUxJRF9GT1JfUFMsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9TSU1fSU5WQUxJRF9GT1JfQ1MgICAgICAgICAgICAgICAgPSBTSU1fSU5WQUxJRF9GT1JfQ1MsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9TSU1fSU5WQUxJRF9GT1JfQ1NfQU5EX1BTICAgICAgICAgPSBTSU1fSU5WQUxJRF9GT1JfQ1NfQU5EX1BTLAorICAgIENTRkJfSU5GT19FTU1fQ0FVU0VfRUFTX0lOX1NVU1BFTkRfTU9ERSAgICAgICAgICAgICAgID0gTU1fUkVKX0NVWl9SUl9JTl9TVVNQRU5EX01PREUsCisgICAgQ1NGQl9JTkZPX0VNTV9DQVVTRV9MSU1JVEVEX1NFUlZJQ0UgICAgICAgICAgICAgICAgICAgPSBHUFJTX0lOX0xJTUlURURfU0VSVklDRSwKKwlDU0ZCX0lORk9fRU1NX0NBVVNFX1NJTV9JTlZBTElEX0ZPUl9MVEVfQkVDQVVTRV9OT05fVVNJTV9JTlNFUlRFRCA9IDB4OGYsCisJQ1NGQl9JTkZPX0VNTV9UMzQ0Ml9JU19SVU5OSU5HLAorICAgIENTRkJfSU5GT19FTU1fU1NfRVBTX09OTFlfQ0FVU0VfMTgKK30gZW1tX2NzZmJfZmFpbHVyZV9pbmZvX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVNTV9DQVVTRV9TT1VSQ0VfT1RIRVIgICAgICAgICAgICAgID0gMCwKKyAgICBFTU1fQ0FVU0VfU09VUkNFX0FUVEFDSF9SRUpFQ1QgICAgICA9IDEsCisgICAgRU1NX0NBVVNFX1NPVVJDRV9UQVVfUkVKRUNUICAgICAgICAgPSAyLAorICAgIEVNTV9DQVVTRV9TT1VSQ0VfTldfREVUQUNIICAgICAgICAgID0gMywKKyAgICBFTU1fQ0FVU0VfU09VUkNFX1NFUlZJQ0VfUkVKRUNUICAgICA9IDQsCisgICAgRU1NX0NBVVNFX1NPVVJDRV9BVVRIX1JFSkVDVCAgICAgICAgPSA1LAorfWVtbV9jYXVzZV9zb3VyY2VfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRVNNX01TR19JTlZBTElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDAsCisgICAgRVNNX01TR19BQ1RJVkFURV9ERUZBVUxUX0VQU19CRUFSRVJfQ09OVEVYVF9SRVFVRVNUICAgICA9IDB4QzEsCisgICAgRVNNX01TR19BQ1RJVkFURV9ERUZBVUxUX0VQU19CRUFSRVJfQ09OVEVYVF9BQ0NFUFQgICAgICA9IDB4QzIsCisgICAgRVNNX01TR19BQ1RJVkFURV9ERUZBVUxUX0VQU19CRUFSRVJfQ09OVEVYVF9SRUpFQ1QgICAgICA9IDB4QzMsCisgICAgRVNNX01TR19BQ1RJVkFURV9ERURJQ0FURURfRVBTX0JFQVJFUl9DT05URVhUX1JFUVVFU1QgICA9IDB4QzUsCisgICAgRVNNX01TR19BQ1RJVkFURV9ERURJQ0FURURfRVBTX0JFQVJFUl9DT05URVhUX0FDQ0VQVCAgICA9IDB4QzYsCisgICAgRVNNX01TR19BQ1RJVkFURV9ERURJQ0FURURfRVBTX0JFQVJFUl9DT05URVhUX1JFSkVDVCAgICA9IDB4QzcsCisgICAgRVNNX01TR19NT0RJRllfRVBTX0JFQVJFUl9DT05URVhUX1JFUVVFU1QgICAgICAgICAgICAgICA9IDB4QzksCisgICAgRVNNX01TR19NT0RJRllfRVBTX0JFQVJFUl9DT05URVhUX0FDQ0VQVCAgICAgICAgICAgICAgICA9IDB4Q0EsCisgICAgRVNNX01TR19NT0RJRllfRVBTX0JFQVJFUl9DT05URVhUX1JFSkVDVCAgICAgICAgICAgICAgICA9IDB4Q0IsCisgICAgRVNNX01TR19ERUFDVElWQVRFX0VQU19CRUFSRVJfQ09OVEVYVF9SRVFVRVNUICAgICAgICAgICA9IDB4Q0QsCisgICAgRVNNX01TR19ERUFDVElWQVRFX0VQU19CRUFSRVJfQ09OVEVYVF9BQ0NFUFQgICAgICAgICAgICA9IDB4Q0UsCisgICAgRVNNX01TR19QRE5fQ09OTkVDVElWSVRZX1JFUVVFU1QgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RDAsCisgICAgRVNNX01TR19QRE5fQ09OTkVDVElWSVRZX1JFSkVDVCAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RDEsCisgICAgRVNNX01TR19QRE5fRElTQ09OTkVDVF9SRVFVRVNUICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RDIsCisgICAgRVNNX01TR19QRE5fRElTQ09OTkVDVF9SRUpFQ1QgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RDMsCisgICAgRVNNX01TR19CRUFSRVJfUkVTT1VSQ0VfQUxMT0NBVElPTl9SRVFVRVNUICAgICAgICAgICAgICA9IDB4RDQsCisgICAgRVNNX01TR19CRUFSRVJfUkVTT1VSQ0VfQUxMT0NBVElPTl9SRUpFQ1QgICAgICAgICAgICAgICA9IDB4RDUsCisgICAgRVNNX01TR19CRUFSRVJfUkVTT1VSQ0VfTU9ESUZJQ0FUSU9OX1JFUVVFU1QgICAgICAgICAgICA9IDB4RDYsCisgICAgRVNNX01TR19CRUFSRVJfUkVTT1VSQ0VfTU9ESUZJQ0FUSU9OX1JFSkVDVCAgICAgICAgICAgICA9IDB4RDcsCisgICAgRVNNX01TR19FU01fSU5GT1JNQVRJT05fUkVRVUVTVCAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RDksCisgICAgRVNNX01TR19FU01fSU5GT1JNQVRJT05fUkVTUE9OU0UgICAgICAgICAgICAgICAgICAgICAgICA9IDB4REEsCisgICAgRVNNX01TR19OT1RJRklDQVRJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4REIsCisgICAgRVNNX01TR19FU01fU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RTgKKworfSBlc21fbXNnX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRU1NX1NSX1RZUEVfU1IsCisgICAgRU1NX1NSX1RZUEVfRVhTUgorfSBlbW1fc3JfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBCQ01fTk9ORSAgPSAwLAorICAgIEJDTV9NU19PTkxZLAorICAgIEJDTV9NU19OVworCit9IGJjbV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFVEZUX05PVF9TVVBQT1JUID0gMCwKKyAgICBFVEZUX1NVUFBPUlQKKworfSBldGZ0X2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVNTV9ERVRBQ0hfVFlQRV9NT19FUFNfREVUQUNIICAgID0gMSwKKyAgICBFTU1fREVUQUNIX1RZUEVfTU9fSU1TSV9ERVRBQ0gsCisgICAgRU1NX0RFVEFDSF9UWVBFX01PX0NPTUJJTkVEX0RFVEFDSCwKKyAgICBFTU1fREVUQUNIX1RZUEVfTVRfUkVBVFRBQ0hfUkVRVUlSRUQsCisgICAgRU1NX0RFVEFDSF9UWVBFX01UX1JFQVRUQUNIX05PVF9SRVFVSVJFRCwKKyAgICBFTU1fREVUQUNIX1RZUEVfTVRfSU1TSV9ERVRBQ0gsCisgICAgRU1NX0RFVEFDSF9UWVBFX01PX1BPV0VST0ZGX0VQU19ERVRBQ0gsCisgICAgRU1NX0RFVEFDSF9UWVBFX01PX1BPV0VST0ZGX0NPTUJJTkVEX0RFVEFDSAorfSBlbW1fZGV0YWNoX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTU1fTVNHX0lNU0lfREVUQUNIX0lORCAgICA9IDEsCisgICAgTU1fTVNHX0xVX0FDQ0VQVCwKKyAgICBNTV9NU0dfTFVfUkVKRUNULAorICAgIE1NX01TR19MVV9SRVFVRVNULAorICAgIE1NX01TR19BVVRIX1JFSiwKKyAgICBNTV9NU0dfQVVUSF9SRVEsCisgICAgTU1fTVNHX0FVVEhfUlNQLAorICAgIE1NX01TR19JREVOSVRZX1JFUSwKKyAgICBNTV9NU0dfSURFTklUWV9SU1AsCisgICAgTU1fTVNHX1RNU0lfUkVBTExPQ19DT01NQU5ELAorICAgIE1NX01TR19UTVNJX1JFQUxMT0NfQ09NUExFVEUsCisgICAgTU1fTVNHX0NNX1NFUlZJQ0VfQUNDRVBULAorICAgIE1NX01TR19DTV9TRVJWSUNFX1JFSkVDVCwKKyAgICBNTV9NU0dfQ01fU0VSVklDRV9BQk9SVCwKKyAgICBNTV9NU0dfQ01fU0VSVklDRV9SRVFVRVNULAorICAgIE1NX01TR19DTV9TRVJWSUNFX1BST01QVCwKKyAgICBNTV9NU0dfQ01fUkVFU1RfUkVRVUVTVCwKKyAgICBNTV9NU0dfQUJPUlQsCisgICAgTU1fTVNHX01NX05VTEwsCisgICAgTU1fTVNHX01NX1NUQVRVUywKKyAgICBNTV9NU0dfTU1fSU5GT1JNQVRJT04sCisgICAgTU1fTVNHX0lOVkFMSUQKK30gbW1fbXNnX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTU1fUkVKX0NBVVNFX0lNU0lfVU5LTk9XTl9JTl9ITFIgICAgPSAweDAyLAorICAgIE1NX1JFSl9DQVVTRV9JTExFR0FMX01TICAgID0gMHgwMywKKyAgICBNTV9SRUpfQ0FVU0VfSU1FSV9OT1RfQUNDRVBURUQgICAgPSAweDA1LAorICAgIE1NX1JFSl9DQVVTRV9JTExFR0FMX01FICAgID0gMHgwNiwKKyAgICBNTV9SRUpfQ0FVU0VfUExNTl9OT1RfQUxMT1dFRCAgICA9IDB4MGIsCisgICAgTU1fUkVKX0NBVVNFX0xBX05PVF9BTExPV0VEICAgID0gMHgwYywKKyAgICBNTV9SRUpfQ0FVU0VfUk9BTUlOR19OT1RfQUxMT1dFRF9JTl9MQSAgICA9IDB4MGQsCisgICAgTU1fUkVKX0NBVVNFX0dQUlNfTk9UX0FMTE9XRURfSU5fUExNTiAgICA9IDB4MGUsCisgICAgTU1fUkVKX0NBVVNFX05PX1NVSVRBQkxFX0NFTExfSU5fTEEgICAgPSAweDBmLAorICAgIE1NX1JFSl9DQVVTRV9OV19GQUlMVVJFICAgID0gMHgxMSwKKyAgICBNTV9SRUpfQ0FVU0VfTUFDX0ZBSUxVUkUgICAgPSAweDE0LAorICAgIE1NX1JFSl9DQVVTRV9TWU5DSF9GQUlMVVJFICAgID0gMHgxNSwKKyAgICBNTV9SRUpfQ0FVU0VfQ09OR0VTVElPTiAgICA9IDB4MTYsCisgICAgTU1fUkVKX0NBVVNFX0dTTV9BVVRIX1VOQUNDRVBUQUJMRSAgICA9IDB4MTcsCisgICAgTU1fUkVKX0NBVVNFX05PVF9BVVRIX0ZPUl9DU0cgICAgPSAweDE5LAorICAgIE1NX1JFSl9DQVVTRV9TRVJWX09QVF9OT1RfU1VQUE9SVCAgICA9IDB4MjAsCisgICAgTU1fUkVKX0NBVVNFX1NFUlZfT1BUX05PVF9TVUJTQ1JJQkUgICAgPSAweDIxLAorICAgIE1NX1JFSl9DQVVTRV9TRVJWX09QVF9URU1QX09VVF9PRl9PUkRFUiAgICA9IDB4MjIsCisgICAgTU1fUkVKX0NBVVNFX0NBTExfTk9UX0lERU5USUZJRUQgICAgPSAweDI2LAorICAgIE1NX0NBVVNFX1NFTUFOVElDX0lOQ09SUkVDVCAgICA9IDB4NWYsCisgICAgTU1fQ0FVU0VfSU5WQUxJRF9NQU5EQVRPUllfSU5GTyAgICA9IDB4NjAsCisgICAgTU1fQ0FVU0VfTVNHX1RZUEVfTk9UX0VYSVNUICAgID0gMHg2MSwKKyAgICBNTV9DQVVTRV9NU0dfVFlQRV9OT1RfQ09NUEFUSUJMRSAgICA9IDB4NjIsCisgICAgTU1fQ0FVU0VfSUVfTk9UX0VYSVNUICAgID0gMHg2MywKKyAgICBNTV9DQVVTRV9DT05ESVRJT05BTF9JRV9FUlJPUiAgICA9IDB4NjQsCisgICAgTU1fQ0FVU0VfTUVTU0FHRV9OT1RfQ09NUEFUSUJMRSAgICA9IDB4NjUsCisgICAgTU1fQ0FVU0VfUFJPVE9DT0xfRVJST1IgICAgPSAweDZmCit9IG1tX3Jlal9jYXVzZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBNTV9FTU1fQ1NGQl9SRVFfVFlQRV9JTlZBTElEICAgID0gMCwKKyAgICBNTV9FTU1fQ1NGQl9SRVFfVFlQRV9OT1JNQUxfQ0FMTCwKKyAgICBNTV9FTU1fQ1NGQl9SRVFfVFlQRV9FTUVSR0VOQ1lfQ0FMTCwKKyAgICBNTV9FTU1fQ1NGQl9SRVFfVFlQRV9TUywKKyAgICBNTV9FTU1fQ1NGQl9SRVFfVFlQRV9MQ1MsCisgICAgTU1fRU1NX0NTRkJfUkVRX1RZUEVfUkVTRVJWRUQKK30gbW1fZW1tX2NzZmJfcmVxX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTU1fRU1NX0NTRkJfUEFHSU5HX0lEX0lOVkFMSUQgICAgPSAwLAorICAgIE1NX0VNTV9DU0ZCX1BBR0lOR19JRF9JTVNJLAorICAgIE1NX0VNTV9DU0ZCX1BBR0lOR19JRF9UTVNJCit9IG1tX2VtbV9jc2ZiX3BhZ2luZ19pZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBNTV9FTU1fQ1NGQl9TVUNDRVNTICAgID0gMCwKKyAgICBNTV9FTU1fQ1NGQl9GQUlMVVJFCit9IG1tX2VtbV9jc2ZiX3Jlc3VsdF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBNTV9FTU1fRVZFTlRfTk9ORSAgICA9IDAsCisgICAgTU1fRU1NX1QzMzEyX0VYUElSQVRJT04sCisgICAgTU1fRU1NX1QzMzIzX0VYUElSQVRJT04sCisgICAgTU1fRU1NX1QzNDEyX0VYUElSQVRJT04sCisgICAgTU1fRU1NX1QzNDIzX0VYUElSQVRJT04KK30gbW1fZW1tX2lzcl9ldmVudF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBNTV9FTU1fVTFfVVBEQVRFRCAgID0gMCwKKyAgICBNTV9FTU1fVTJfTk9UX1VQREFURUQsCisgICAgTU1fRU1NX1UzX1JPQU1JTkdfTk9UX0FMTE9XRUQsCisgICAgTU1fRU1NX1U0X1VQREFUSU5HX0RJU0FCTEVELAorICAgIE1NX0VNTV9VUERBVEVfU1RBVFVTX0lOVkFMSUQKK30gbW1fZW1tX3VwZGF0ZV9zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTU1fRU1NX1BST0NfRElSX1VFX0lOSVRJQVRFRCAgID0gMCwKKyAgICBNTV9FTU1fUFJPQ19ESVJfTldfSU5JVElBVEVELAorICAgIE1NX0VNTV9QUk9DX0RJUl9JTlZBTElECit9IGdtbV9wcm9jX2RpcmVjdGlvbl9lbnVtOworCisvKiBNTSA8LT4gRU1NIGVuZCAqLworCit0eXBlZGVmIGVudW0geworICAgIEFUVEFDSF9ERVRBQ0hfTk9UX1JFUVVSRURfQllfTlcgPSAwLAorICAgIEFUVEFDSF9ERVRBQ0hfUkVRVVJFRF9CWV9OVworfWF0dF9mbGFnX2VudW07CisKKy8qIFRlbXAgc29sdXRpb24gZnJvIE1NIFByZS1pbnRlZ3JhdGlvbiAqLworI2lmIDAKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorCit0eXBlZGVmIGVudW0KK3sKKyAgICBOT19BRERJVElPTkFMX0lORk8gID0gMCwKKyAgICBDU0ZCX05PVF9QUkVGRVJSRUQgID0gMSwKKyAgICBTTVNfT05MWSAgICAgICAgICAgID0gMiwKKyAgICBBVVJfUkVTRVJWRUQKK30gYWRkaXRpb25hbF91cGRhdGVfcmVzdWx0X2VudW07CisKKwordHlwZWRlZiBlbnVtCit7CisgICAgTk9fU1RBVFVTID0gMSwKKyAgICBQUk9DX1NUQVJURUQsCisgICAgUFJPQ19TVUNDRVNTRlVMLAorICAgIFBST0NfRkFJTEVELAorICAgIFBST0NfUkVKRUNURUQsCisgICAgUFJPQ19ORUVEX1JFVFJZCit9cHJvY19zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBVTVRTX1JSQ19JRExFLAorICAgVU1UU19SUkNfQ0VMTF9GQUNILAorICAgVU1UU19SUkNfQ0VMTF9QQ0gsCisgICBVTVRTX1JSQ19VUkFfUENILAorICAgVU1UU19SUkNfQ0VMTF9EQ0gsCisgICBVTVRTX1JSQ19JTkFDVElWRQorfSB1bXRzX3JyY19zdGF0ZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIFBTX0RPTUFJTl9DT05OX0lOQUNUSVZFLAorICAgUFNfRE9NQUlOX0NPTk5fRE9STUFOVCwKKyAgIFBTX0RPTUFJTl9DT05OX0FDVElWRQorfSBwc19jb25uX3N0YXR1c19lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIEdTTV9SUk1fTlVMTCwKKyAgIEdTTV9SUk1fSU5BQ1RJVkUsCisgICBHU01fUlJNX1NFTEVDVElPTiwKKyAgIEdTTV9SUk1fSURMRSwKKyAgIEdTTV9SUk1fQUNDRVNTLAorICAgR1NNX1JSTV9QS1RfVFJBTlNGRVIsCisgICBHU01fUlJNX0RFRElDQVRFRCwKKyAgIEdTTV9SUk1fUkVTRUxDVElPTiwKK30gZ3NtX3JybV9zdGF0ZV9lbnVtOworCisvLyNpZmRlZiBfX1ZPTFRFX1NVUFBPUlRfXwordHlwZWRlZiBlbnVtCit7CisgICAgRU1DX1NUQVRVU19SRUxFQVNFRCA9IDAsCisgICAgRU1DX1NUQVRVU19SRVFVSVJFRCA9IDEKK30gZW1jX3N0YXR1c19lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTUNfUEROX1NUQVRVU19OT05FICAgICAgICAgICA9IDAsCisgICAgRU1DX1BETl9TVEFUVVNfRU1DX09OTFkgICAgICAgPSAxLAorICAgIEVNQ19QRE5fU1RBVFVTX0VNQ19BTkRfTk9STUFMID0gMgorfSBlbWNfcGRuX3N0YXR1c19lbnVtOworCisvLyNlbmRpZiAvKiBfX1ZPTFRFX1NVUFBPUlRfXyAqLworCit0eXBlZGVmIGVudW0KK3sKKyAgICBSQVRfRFVQTEVYX1RZUEVfVU5LTk9XTiA9IDAsCisgICAgUkFUX0RVUExFWF9UWVBFX0ZERCwKKyAgICBSQVRfRFVQTEVYX1RZUEVfVERECit9IHJhdF9kdXBsZXhfdHlwZV9lbnVtOworCisjaWYgZGVmaW5lZChfX0NETUEyMDAwX1JBVF9fKQordHlwZWRlZiBlbnVtCit7CisgICAgTU1EQ19TRUFSQ0hfQVBfVFJJR0dFUiA9IDAsCisgICAgTU1EQ19TRUFSQ0hfMkdfQ0VMTF9DSEFOR0UsCisgICAgTU1EQ19TRUFSQ0hfMkdfSE8sCit9bW1kY19yZWNvdmVyeV9zZWFyY2hfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgUExNTl9TRUFSQ0hfQUJPUlRfMkcgPSAwLAorICAgIFBMTU5fU0VBUkNIX0FCT1JUXzNHID0gMSwKKyAgICBQTE1OX1NFQVJDSF9BQk9SVF80RyA9IDIKK31wbG1uX3NlYXJjaF9hYm9ydF9jYXVzZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBBQk9SVF9TVEFUVVNfU1VDQ0VTUyA9IDAsCisgICAgQUJPUlRfU1RBVFVTX0ZBSUwsCisgICAgQUJPUlRfU1RBVFVTX1VOS05PV04gPSAyNTUKK30gcGxtbl9zZWFyY2hfYWJvcnRfcHJvY19zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTU1EQ19TVUlUQUJMRV9DRUxMID0gMCwKKyAgICBNTURDX0FDQ0VQVEFCTEVfQ0VMTCA9IDEsCisgICAgTU1EQ19OT19DRUxMID0gMgorfSBtbWRjX2NhbXBfb25fc3RhdHVzX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE1NRENfUFNEX1NXSVRDSF9DQVVTRV9QU0RNID0gMCwKKyAgICBNTURDX1BTRF9TV0lUQ0hfQ0FVU0VfTUFOVUFMX1NFTEVDVElPTiwKKyAgICBNTURDX1BTRF9TV0lUQ0hfQ0FVU0VfQVVUT19SRVNFTEVDVElPTiwKKyAgICBNTURDX1BTRF9TV0lUQ0hfQ0FVU0VfTkMwLAorICAgIE1NRENfUFNEX1NXSVRDSF9DQVVTRV9RVUVSWV9DVVJSRU5ULAorICAgIE1NRENfUFNEX1NXSVRDSF9DQVVTRV9VTktOT1dOID0gMjU1Cit9IG1tZGNfcHNkX3N3aXRjaF9jYXVzZV9lbnVtOworI2VuZGlmIC8qIF9fU0dMVEVfXyAqLworCisKK3R5cGVkZWYgZW51bQoreworICAgIEFTX0lORF9DRUxMX0NIQU5HRV9JTkQgPSAweDAxLAorICAgIEFTX0lORF9IT19DSEFOR0VfSU5EID0gMHgwMiwKKyAgICBBU19JTkRfUlJfU1RBVEVfQ0hBTkdFX0lORCA9IDB4MDQsCisgICAgQVNfSU5EXzNHX1NZU19JUl9DUklURVJJQV9JTkQgPSAweDA4LAorICAgIEFTX0lORF80R19TWVNfSVJfQ1JJVEVSSUFfSU5EID0gMHgxMCwKKyAgICBBU19JTkRfU1JWX0NFTExfSU5GT19JTkQgPSAweDIwLAorICAgIEFTX0lORF9OQlJfSU5GT19JTkQgPSAweDQwLAorICAgIEFTX0lORF9PT1NfVFJJR0VSX0lORCA9IDB4ODAsCisgICAgQVNfSU5EXzJHX1NZU19JUl9DUklURVJJQV9JTkQgPSAweDEwMAorfSBhc19pbmRfdHlwZV9lbnVtOworCisjZGVmaW5lIEVNTV9QUk9DX0JBU0UgKDEwMCkKK3R5cGVkZWYgZW51bQoreworICAgIE5BU19QUk9DX05PTkUgPSAwLAorICAgIE1NX1BST0NfTk9ORSA9IE5BU19QUk9DX05PTkUsCisgICAgTU1fUFJPQ19MVSwKKyAgICBNTV9QUk9DX0NNX1NFUlZJQ0UsCisgICAgTU1fUFJPQ19BVFRBQ0gsCisgICAgTU1fUFJPQ19BVFRBQ0hfQ09NQklORUQsCisgICAgTU1fUFJPQ19ERVRBQ0hfTU9fR1BSUywKKyAgICBNTV9QUk9DX0RFVEFDSF9NT19JTVNJLAorICAgIE1NX1BST0NfREVUQUNIX01PX0NPTUJJTkVELAorICAgIE1NX1BST0NfREVUQUNIX01UX1JFQVRUQUNIX1JFUUQsCisgICAgTU1fUFJPQ19ERVRBQ0hfTVRfUkVBVFRBQ0hfTk9UX1JFUUQsCisgICAgTU1fUFJPQ19ERVRBQ0hfTVRfSU1TSV9ERVRBQ0hfTl9UT19NUywKKyAgICBNTV9QUk9DX1JBVSwKKyAgICBNTV9QUk9DX1JBVV9DT01CSU5FRCwKKyAgICBNTV9QUk9DX1NFUlZJQ0VfUkVRVUVTVCwKKyAgICBNTV9QUk9DX0FVVEgsCisgICAgTU1fUFJPQ19BQk9SVCwKKworICAgIEVNTV9QUk9DX05PTkUgICAgID0gTkFTX1BST0NfTk9ORSwKKyAgICBFTU1fQVRUQUNIID0gRU1NX1BST0NfQkFTRSwKKyAgICBFTU1fQVRUQUNIX0NPTUJJTkVELAorICAgIEVNTV9BVFRBQ0hfRU1FUkdFTkNZLAorICAgIEVNTV9ERVRBQ0hfTU9fRVBTLAorICAgIEVNTV9ERVRBQ0hfTU9fSU1TSSwKKyAgICBFTU1fREVUQUNIX01PX0NPTUJJTkVELAorICAgIEVNTV9ERVRBQ0hfTVRfUkVBVFRBQ0hfUkVRRCwKKyAgICBFTU1fREVUQUNIX01UX1JFQVRUQUNIX05PVF9SRVFELAorICAgIEVNTV9ERVRBQ0hfTVRfSU1TSV9ERVRBQ0gsCisgICAgRU1NX1RBVSwKKyAgICBFTU1fVEFVX1BFUklPRElDLAorICAgIEVNTV9UQVVfQ09NQklORUQsCisgICAgRU1NX1NFUlZJQ0VfUkVRVUVTVCwKKyAgICBFTU1fU0VSVklDRV9SRVFVRVNUX0NTRkIsCisgICAgRU1NX0FVVEgsCisKKyAgICBWR01NX1JFR0lTVFJBVElPTiwKKyAgICBWR01NX1BST0NfQkVHSU4gPSBWR01NX1JFR0lTVFJBVElPTiwKKyAgICBWR01NX1JFR0lTVFJBVElPTl9VUERBVEUsCisgICAgVkdNTV9ERVJFR0lTVFJBVElPTiwKKyAgICBWR01NX0RFUkVHSVNUUkFUSU9OX01UX1JFX1JFR0lTVFJBVElPTl9SRVFELAorICAgIFZHTU1fREVSRUdJU1RSQVRJT05fTVRfUkVfUkVHSVNUUkFUSU9OX05PVF9SRVFELAorICAgIFZHTU1fU0VSVklDRV9SRVFVRVNULAorICAgIFZHTU1fU0VSVklDRV9SRVFVRVNUX0VNQ0ZCLAorICAgIFZHTU1fQVVUSCwKKyAgICBWR01NX0VNQ19SRUdJU1RSQVRJT04sCisgICAgVkdNTV9QUk9DX0VORCA9IFZHTU1fQVVUSCwKK31uYXNfcHJvY19lbnVtOworCit0eXBlZGVmIG5hc19wcm9jX2VudW0gZW1tX3Byb2NfZW51bTsKK3R5cGVkZWYgbmFzX3Byb2NfZW51bSBtbV9wcm9jX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIElNU19WT0lDRV9PVkVSX1BTX1NFU1NJT05fSU5fUzFfTU9ERV9OT1RfU1VQUE9SVCA9IDAsCisgICAgSU1TX1ZPSUNFX09WRVJfUFNfU0VTU0lPTl9JTl9TMV9NT0RFX1NVUFBPUlQKK30gaW1zX2luZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTUVSR0VOQ1lfQkVBUkVSX1NFUlZJQ0VfSU5fUzFfTU9ERV9OT1RfU1VQUE9SVCA9IDAsCisgICAgRU1FUkdFTkNZX0JFQVJFUl9TRVJWSUNFX0lOX1MxX01PREVfU1VQUE9SVAorfSBlbWVyZ2VuY3lfc2VydmljZV9pbmRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTE9DQVRJT05fU0VSVklDRV9WSUFfRVBTX05PVF9TVVBQT1JUID0gMCwKKyAgICBMT0NBVElPTl9TRVJWSUNFX1ZJQV9FUFNfU1VQUE9SVAorfSBsb2NhdGlvbl9zZXJ2aWNlX2VwY19pbmRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTk9fSU5GT19BQk9VVF9TVVBQT1JUX09GX0xPQ0FUSU9OX1NFUlZJQ0VfVklBX0NTX0RPTUFJTiA9IDAsCisgICAgTE9DQVRJT05fU0VSVklDRV9WSUFfQ1NfRE9NQUlOX1NVUFBPUlQsCisgICAgTE9DQVRJT05fU0VSVklDRV9WSUFfQ1NfRE9NQUlOX05PVF9TVVBQT1JULAorICAgIFJFU0VSVkVECit9IGxvY2F0aW9uX3NlcnZpY2VfY3NfaW5kX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVYVF9TRVJWSUNFX1JFUVVFU1RfRk9SX1BTX05PVF9TVVBQT1JUID0gMCwKKyAgICBFWFRfU0VSVklDRV9SRVFVRVNUX0ZPUl9QU19TVVBQT1JUCit9IGV4dF9zZXJ2aWNlX3JlcXVlc3RfZm9yX3BzX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE5BU19OV19FWFRfUENPX05PVF9TVVBQT1JUID0gMCwKKyAgICBOQVNfTldfRVhUX1BDT19TVVBQT1JUID0gMSwKKyAgICBOQVNfTldfRVhUX1BDT19VTktOT1dOID0gMgorfSBleHRfcGNvX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE5BU19OV19EQ05SX05PVF9SRVNUUklDVCA9IDAsCisgICAgTkFTX05XX0RDTlJfUkVTVFJJQ1QgICAgID0gMSwKKyAgICBOQVNfTldfRENOUl9VTktOT1dOICAgICAgPSAyCit9IHJlc3RyaWN0X2RjbnJfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTkFTX05XX0lXS19XSVRIT1VUX04yNl9OT1RfU1VQUE9SVCA9IDAsCisgICAgTkFTX05XX0lXS19XSVRIT1VUX04yNl9TVVBQT1JUID0gMSwKKyAgICBOQVNfTldfSVdLX1dJVEhPVVRfTjI2X1VOS05PV04gPSAyCit9IGl3a19uMjZfZW51bTsKKworCisKK3R5cGVkZWYgZW51bQoreworICAgIE1vZHVsZV9JbnZhbGlkID0gMHgwMCwKKyAgICBNb2R1bGVfUFNETSA9IDB4MDEsCisgICAgTW9kdWxlX0FQID0gMHgwMiwKKyAgICBNb2R1bGVfUFNETV9BUCA9IDB4MDMsCit9IHRhcmdldF9tb2R1bGVfZW51bTsKKworCisKKy8qIExDUyAoQ0lTUy9MUFApIGJldHdlZW4gRU1NICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBMQ1NfRU1NX1NUQVRVU19TVUNDRVNTID0gMCwgICAgICAgICAvKiBQRFUgaXMgc2VudCBvciByZWNlaXZlZCBzdWNjZXNzZnVsbHkgKi8KKyAgICBMQ1NfRU1NX1NUQVRVU19FUlJfQ09OTl9GQUlMLCAgICAgIC8qIEVNTSBjb25uZWN0aW9uIGZhaWx1cmUgKi8KKyAgICBMQ1NfRU1NX1NUQVRVU19FUlJfTldfTk9fTENTLCAgICAgIC8qIE5XIGRvZXMgbm90IHN1cHBvcnQgTENTIG9uIDJHLzNHLzRHICovCisgICAgTENTX0VNTV9TVEFUVVNfRVJSX0NTX0xDU19PTkxZLCAgICAgLyogTlcgZG9lcyBub3Qgc3VwcG9ydCBMQ1Mgb24gNEcsIG1heSBDU0ZCIHRvIDJHLzNHICovCisgICAgTENTX0VNTV9TVEFUVVNfRVJSX01DRF9FTkNPREVfRkFJTCwgLyogTUNEIGVuY29kZSBmYWlsICovCisgICAgTENTX0VNTV9TVEFUVVNfRVJSX01DRF9ERUNPREVfRkFJTCAgLyogTUNEIGRlY29kZSBmYWlsICovCit9IGxjc19lbW1fc3RhdHVzX2VudW07CisKKwordHlwZWRlZiBlbnVtCit7CisgICAgTENTX1ZHTU1fU1RBVFVTX1NVQ0NFU1MgPSAwLCAgICAgICAgICAgIC8qIFBEVSBpcyBzZW50IG9yIHJlY2VpdmVkIHN1Y2Nlc3NmdWxseSAqLworICAgIExDU19WR01NX1NUQVRVU19FUlJfQ09OTl9GQUlMLCAgICAgICAgICAvKiBWR01NIGNvbm5lY3Rpb24gZmFpbHVyZSAqLworICAgIExDU19WR01NX1NUQVRVU19FUlJfTUNEX0VOQ09ERV9GQUlMLCAgICAvKiBNQ0QgZW5jb2RlIGZhaWwgKi8KKyAgICBMQ1NfVkdNTV9TVEFUVVNfRVJSX01DRF9ERUNPREVfRkFJTCwgICAgLyogTUNEIGRlY29kZSBmYWlsICovCisgICAgTENTX1ZHTU1fREFUQV9DTkZfRkFJTF9EVUVfVE9fUFNfU1VTUEVORCwKK30gbGNzX3ZnbW1fc3RhdHVzX2VudW07CisKKwordHlwZWRlZiBlbnVtCit7CisgICAgVElNRVJfSURfVDMyNDYgPSAxLAorICAgIFRJTUVSX0lEX1QzMzQ2LAorICAgIFRJTUVSX0lEX1QzMjQ2X0FORF9UMzM0NgorfSBtbV9lbW1fY29tbW9uX3RpbWVyX2lkX2VudW0sIHhtbV9jb21tb25fdGltZXJfaWRfZW51bTsgIC8vIF9fUkVMMTBfXzogdDMzNDYKKwordHlwZWRlZiBlbnVtCit7CisgICAgQUREX0FSQUwsCisgICAgREVMX0FSQUwKK30gYXJhbF9vcF9lbnVtOworCisjaWZkZWYgX19MVEVfUkFUX18KK3R5cGVkZWYgZW51bQoreworICAgIEVSUkNfU0lNX1BST1RFQ1RfUFVSUE9TRV9OT05FLAorICAgIEVSUkNfU0lNX1BST1RFQ1RfUFVSUE9TRV9QT1dFUl9PTiwKKyAgICBFUlJDX1NJTV9QUk9URUNUX1BVUlBPU0VfQ1NGQl9GUiwKKyAgICBFUlJDX1NJTV9QUk9URUNUX1BVUlBPU0VfRFVQTEVYX01PREVfQ0hHCit9IGVycmNfc2ltX3Byb3RlY3RfcHVycG9zZV9lbnVtOworI2VuZGlmIC8vX19MVEVfUkFUX18KKwordHlwZWRlZiBlbnVtCit7CisgICAgSU1TX1ZPSUNFX09WRVJfUFNfSVVfTU9ERV9BX0dCX01PREVfTk9UX1NVUFBPUlQgPSAwLAorICAgIElNU19WT0lDRV9PVkVSX1BTX0lVX01PREVfU1VQUE9SVF9BX0dCX01PREVfTk9UX1NVUFBPUlQKK30gdWdfaW1zX2luZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTUVSR0VOQ1lfQkVBUkVSX1NFUlZJQ0VfSU5fSVVfTU9ERV9BX0dCX01PREVfTk9UX1NVUFBPUlQgPSAwLAorICAgIEVNRVJHRU5DWV9CRUFSRVJfU0VSVklDRV9JTl9JVV9NT0RFX1NVUFBPUlRfQV9HQl9NT0RFX05PVF9TVVBQT1JUCit9IHVnX2VtZXJnZW5jeV9zZXJ2aWNlX2luZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBVTVRTX1BSSU9SSVRZX05PUk1BTCA9IDAsCisgICAgVU1UU19QUklPUklUWV9ISUdICit9IHVtdHNfc2VydmljZV9wcmlvcml0eV9lbnVtOyAgLy8gW0dlbWluaV1bVHdvIFBTIGF0dGFjaF0KKworLy8gUHJpb3JpdHkgY2xhc3MgdXNlZCBieSBHTVNTCit0eXBlZGVmIGVudW0KK3sKKyAgICBQUklPX0NMQVNTX05PTkUgICAgICAgICA9IDB4MDAsICAgIC8qIE5vIHByaW9yaXR5IGNsYXNzICovCisgICAgUFJJT19DTEFTU19SUExNTiAgICAgICAgPSAweDAxLCAgICAvKiBQcmlvcml0eSBjbGFzcyBSUExNTi4gT25seSBmb3IgM0dQUCAqLworICAgIFBSSU9fQ0xBU1NfSE9NRSAgICAgICAgID0gMHgwMiwgICAgLyogUHJpb3JpdHkgY2xhc3MgSG9tZSAqLworICAgIFBSSU9fQ0xBU1NfUl9IICAgICAgICAgID0gMHgwMywgICAgLyogMDAxMSA9ICAzICovCisgICAgUFJJT19DTEFTU19QUkVGICAgICAgICAgPSAweDA0LCAgICAvKiBQcmlvcml0eSBjbGFzcyBIb21lICsgUHJlZmVycmVkICovCisgICAgUFJJT19DTEFTU19SX1AgICAgICAgICAgPSAweDA1LCAgICAvKiAwMTAxID0gIDUgKi8KKyAgICBQUklPX0NMQVNTX0hfUCAgICAgICAgICA9IDB4MDYsICAgIC8qIDAxMTAgPSAgNiAqLworICAgIFBSSU9fQ0xBU1NfUl9IX1AgICAgICAgID0gMHgwNywgICAgLyogMDExMSA9ICA3ICovCisgICAgUFJJT19DTEFTU19OT1RfUFJFRkVSUkVEPSAweDA4LCAgICAvKiBQcmlvcml0eSBjbGFzcyBBbnkgKi8KKyAgICBQUklPX0NMQVNTX1JfTlAgICAgICAgICA9IDB4MDksICAgIC8qIDEwMDEgPSAgOSAqLworICAgIFBSSU9fQ0xBU1NfSF9OUCAgICAgICAgID0gMHgwQSwgICAgLyogMTAxMCA9IDEwICovCisgICAgUFJJT19DTEFTU19SX0hfTlAgICAgICAgPSAweDBCLCAgICAvKiAxMDExID0gMTEgKi8KKyAgICBQUklPX0NMQVNTX1BfTlAgICAgICAgICA9IDB4MEMsICAgIC8qIDExMDAgPSAxMiAqLworICAgIFBSSU9fQ0xBU1NfUl9QX05QICAgICAgID0gMHgwRCwgICAgLyogMTEwMSA9IDEzICovCisgICAgUFJJT19DTEFTU19IX1BfTlAgICAgICAgPSAweDBFLCAgICAvKiAxMTEwID0gMTQgKi8KKyAgICBQUklPX0NMQVNTX1JfSF9QX05QICAgICA9IDB4MEYsICAgIC8qIDExMTEgPSAxNSAqLworICAgIFBSSU9fQ0xBU1NfTElNSVRFRCAgICAgID0gMHgxMCAgICAgLyogUHJpb3JpdHkgY2xhc3MgbGltaXRlZC4gT25seSBmb3IgM0dQUCAqLworCit9IHByaW9fY2xhc3NfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgR01TU19TRUxFQ1RFRF9SQVQgID0gMCwgICAgICAgICAvKiBtZWFucyBzZWxlY3Qgc3VjaCByYXQqLworICAgIEdNU1NfU0VMRUNURURfQVRUQUNIRUQgID0gMSwgICAgLyogbWVhbnMgcmVzdWx0IGlzIGF0dGFjaGVkKi8KKyAgICBHTVNTX1NFTEVDVEVEX0xJTUlURUQgPSAyICAgICAgIC8qIG1lYW5zIHJlc3VsdCBpcyBhIGxpbWl0ZWQgc2VydmljZSAqLworfSBnbXNzX3NlbGVjdGVkX3JhdF9zdGF0dXNfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRU1EU1RBVFVTX01EX0NPTkZJR19NRDFfQUNUSVZFLCAgICAgICAgICAgICAgICAgLyogIG9ubHkgTUQxIGFjdGl2ZSAqLworICAgIEVNRFNUQVRVU19NRF9DT05GSUdfTUQxX1JFTU9URV9TSU1fQUNDRVNTX09OTFksIC8qIE1EMXMnIFJGIGlzIGNsb3NlZCwgYnV0IE1EMSdzIFNJTSB0YXNrIGlzIHN0aWxsIHdvcmtpbmcgb25seSBmb3IgTUQzIFNJTSByZW1vdGUgYWNjZXNzIGFuZCBNRDMgYWN0aXZlICAqLworICAgIEVNRFNUQVRVU19NRF9DT05GSUdfTUQxX01EM19BQ1RJVkUsICAgICAgICAgICAgIC8qIGJvdGggTUQxIGFuZCBNRDMgYWN0aXZlICAqLworCit9IGVtZHN0YXR1c19tZF9jb25maWdfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRU1EU1RBVFVTX1NJTV9DT05GSUdfTk9fUkVNT1RFX0FDQ0VTUywgICAgICAvKiBNRDMgYWNjZXNzIGxvY2FsIGNhcmQgKi8KKyAgICBFTURTVEFUVVNfU0lNX0NPTkZJR19SRU1PVEVfQUNDRVNTX1NJTTEsICAgIC8qIE1EMyBhY2Nlc3MgTUQxJ3MgU0lNIHRhc2sxICovCisgICAgRU1EU1RBVFVTX1NJTV9DT05GSUdfUkVNT1RFX0FDQ0VTU19TSU0yICAgICAvKiBNRDMgYWNjZXNzIE1EMSdzIFNJTSB0YXNrMiAqLworCit9IGVtZHN0YXR1c19zaW1fY29uZmlnX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIENUX01PREVfU1ZMVEUsCisgICAgQ1RfTU9ERV9URERfREFUQV9PTkxZLAorICAgIENUX01PREVfNEdfU1dJVENIX09GRgorCit9IGN0X21vZGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTU9ERV9TV0lUQ0hfTk9STUFMICAgICAgICAgICAgID0gMHgwMCwKKyAgICBNT0RFX1NXSVRDSF9QTE1OX0NIQU5HRSAgICAgICAgPSAweDAxLAorICAgIE1PREVfU1dJVENIX09VVF9PRl9TRVJWSUNFICAgICA9IDB4MDIsCisgICAgTU9ERV9TV0lUQ0hfU0lNX1JFRlJFU0ggICAgICAgID0gMHgwMywKKyAgICBNT0RFX1NXSVRDSF9NVF9DU0ZCICAgICAgICAgICAgPSAweDA0LAorICAgIE1PREVfU1dJVENIX01DQ19SRVNVTFQgICAgICAgICA9IDB4MDUsCisgICAgTU9ERV9TV0lUQ0hfT1RIRVJfU0lNX0xPQ19MT1NTID0gMHgwNiwgIC8vR01TUyBpbnRlcm5hbCB1c2FnZSwgb3RoZXIgU0lNIGxvY2F0aW9uIGxvc3MKKyAgICBNT0RFX1NXSVRDSF9FQ0NfU0VBUkNIICAgICAgICAgPSAweDA3LCAgLy9ub3QgdXNlZCBpbiBHZW45NworICAgIE1PREVfU1dUSUNIX0VNQ19TRUFSQ0hfQllfVkRNICA9IDB4MDgsICAvL2R1cGxleCBtb2RlIGNoYW5nZSBmb3IgVkRNIHRyaWdnZWQgbGltaXRlZCBzZWFyY2gKKyAgICBNT0RFX1NXVElDSF9FTUNfU0VBUkNIX0JZX0dNU1MgPSAweDA5LCAgLy9kdXBsZXggbW9kZSBjaGFuZ2UgZm9yIEdNU1MgdHJpZ2dlZCBsaW1pdGVkIHNlYXJjaAorfSBtb2RlX3N3aXRjaF9jYXVzZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBXTV9QT0xJQ1lfTk9ORSAgICAgID0gMCwKKyAgICBXTV9QT0xJQ1lfT1AwMV9BICAgID0gMSwKKyAgICBXTV9QT0xJQ1lfT1AwMV9CICAgID0gMiwKKyAgICBXTV9QT0xJQ1lfT00gICAgICAgID0gMywKKyAgICBXTV9QT0xJQ1lfT1AwMiAgICAgID0gNAorfSB3bV9wb2xpY3lfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgU1JfRkFJTFVSRV9DQVVTRV9BQ19CQVJSRUQgICAgICA9IDAsCisgICAgU1JfRkFJTFVSRV9DQVVTRV9OV19SRUpfQ09OTiAgICA9IDEsCisgICAgU1JfRkFJTFVSRV9DQVVTRV9UMzM0Nl9TVEFSVCAgICA9IDIsCisgICAgU1JfRkFJTFVSRV9DQVVTRV9UMzM0Nl9TVE9QICAgICA9IDMsCisgICAgU1JfRkFJTFVSRV9DQVVTRV9UMzM0Nl9FWFBJUlkgICA9IDQsCisgICAgU1JfRkFJTFVSRV9DQVVTRV9DT05OX0ZBSUwgICAgICA9IDUsCisgICAgU1JfRkFJTFVSRV9DQVVTRV9UMzUyNV9TVEFSVCAgICA9IDYsCisgICAgU1JfRkFJTFVSRV9DQVVTRV9UMzU0MF9TVEFSVCAgICA9IDcKK31zcl9mYWlsdXJlX2NhdXNlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIFRBVV9GQUlMVVJFX0NBVVNFX05PTkUgPSAwCit9dGF1X2ZhaWx1cmVfY2F1c2VfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTVJVX0NNRF9DTEVBUiwKKyAgICBNUlVfQ01EX0VESVQsCisgICAgTVJVX0NNRF9RVUVSWSwKK30gbXJ1X2NtZF90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEdNU1NfQzJLX1NVUFBPUlRfTk9ORSwKKyAgICBHTVNTX0MyS19TVVBQT1JUX1NWTFRFLAorICAgIEdNU1NfQzJLX1NVUFBPUlRfU1JMVEUsCisgICAgR01TU19DMktfU1VQUE9SVF9VTktOT1dOCisKK30gZ21zc19jMmtfc3VwcG9ydF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBOV1NFTF9FVkVOVF9OT05FICAgICAgICAgICAgICAgID0gMCwKKyAgICBOV1NFTF9FVkVOVF9DTV9OT1JNQUxfUkVRICAgICAgID0gMSwKKyAgICBOV1NFTF9FVkVOVF9DTV9FQ0NfUkVRICAgICAgICAgID0gMiwKKyAgICBOV1NFTF9FVkVOVF9DTV9BQk9SVCAgICAgICAgICAgID0gMywKKyAgICBOV1NFTF9FVkVOVF9MUl9BQ0NFUFQgICAgICAgICAgID0gNCwKKyAgICBOV1NFTF9FVkVOVF9EVVBMRVhfQ0hBTkdFX0lORCAgID0gNSwKK30gbndzZWxfZXZlbnRfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMVEVDQV9CQU5EX0NNRF9RVUVSWSwKKyAgICBMVEVDQV9CQU5EX0NNRF9TRVQsCit9IGx0ZWNhX2JhbmRfY21kX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTFRFQ0FfTU9ERV9DTURfUVVFUlksCisgICAgTFRFQ0FfTU9ERV9DTURfU0VULAorfSBsdGVjYV9tb2RlX2NtZF90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgTFRFQ0FfRElTQUJMRUQgICAgICAgICAgICAgID0gMHgwMCwKKyAgICBMVEVDQV9FTkFCTEVEICAgICAgICAgICAgICAgPSAweDAxCit9IGx0ZWNhX21vZGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRU1NX05XU0VMX0VWRU5UX05PTkUgICAgICAgICAgICA9IDAsCisgICAgRU1NX05XU0VMX0VWRU5UX1JFRElSRUNUX0wyQyAgICA9IDEsCit9IGVtbV9ud3NlbF9ldmVudF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBOV1NFTF9OVl9DTkZfTk9UX1dBSVQgICAgICAgICAgICAgICAgICAgPSAweDAwLAorICAgIE5XU0VMX05WX0NORl9XQUlUX0FDQ0VTU19JRF9TVEFSVCAgICAgICA9IDB4MTAsCisgICAgTldTRUxfTlZfQ05GX1dBSVRfQUNDRVNTX0lEX0VORCAgICAgICAgID0gMHgxRgorfSBud3NlbF9yZXBvcnRfbnZyYW1fd3JpdGVfY25mX3RyeF9pZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBOQVNfU1ZfTk9fQUNUSVZFX0FTLAorICAgIE5BU19TVl9BQ1RJVkVfMkcsCisgICAgTkFTX1NWX0FDVElWRV8zRywKKyAgICBOQVNfU1ZfQUNUSVZFXzRHLAorICAgIE5BU19TVl9BQ1RJVkVfMVhfUFMsCisgICAgTkFTX1NWX0FDVElWRV8xWF9DUywKKyAgICBOQVNfU1ZfQUNUSVZFXzVHLAorfW5hc19zdl9hY3RpdmVfYXNfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTkFTX1NWX1JFQVNPTl9OT19SRUFTT04sCisgICAgTkFTX1NWX1JFQVNPTl9TSU1fRVJST1IsCisgICAgTkFTX1NWX1JFQVNPTl9SRk9GRiwKKyAgICBOQVNfU1ZfUkVBU09OX1NFVF9SQVRfTU9ERSwKKyAgICBOQVNfU1ZfUkVBU09OX0lSQVQsCisgICAgTkFTX1NWX1JFQVNPTl9BQk9SVF9CWV9OV1NFTCwKK31uYXNfc3ZfY2FuY2VsX3JlYXNvbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIE5BU19TVl9FVkVOVF9VUERBVEVfTk9ORSA9IDB4MCwKKyAgIE5BU19TVl9FVkVOVF9DU19MRUFWRV9JRExFLAorICAgTkFTX1NWX0VWRU5UX0NTX0VOVEVSX0lETEUsCisgICBOQVNfU1ZfRVZFTlRfUFNfTEVBVkVfSURMRSwKKyAgIE5BU19TVl9FVkVOVF9QU19FTlRFUl9JRExFLAorICAgTkFTX1NWX0VWRU5UX0VOVEVSX0hWT0xURV9MVEVfT05MWV9NT0RFLC8vZGVhY3RpdmF0ZSBDMksgQ1MvUFMgc2luY2UgTFRFIG9ubHkgbW9kZQorICAgTkFTX1NWX0VWRU5UX0VOVEVSX0hWT0xURV9WT1BTX01PREUsICAgIC8vZGVhY3RpdmF0ZSBDMksgQ1MvUFMgc2luY2UgVk9QUyBtb2RlCisgICBOQVNfU1ZfRVZFTlRfRU5URVJfU0xFRVBfU1RBVEVfQ1NfUFMsICAgLy9kZWFjdGl2YXRlIEMySyBDUy9QUyB3aGVuIFNMRUVQIHN0YXRlCisgICBOQVNfU1ZfRVZFTlRfRU5URVJfU0xFRVBfU1RBVEVfUFNfT05MWSwgLy9rZWVwIEMySyBDUyBpcyBhdmFpbGFibGUgd2hlbiBvbmx5IENTIGRvYW1pbiByZXF1ZXN0CisgICBOQVNfU1ZfRVZFTlRfRU1DX1NFUlZJQ0VfRk9VTkQsICAgICAgICAgLy9vbmx5IGtlZXAgdGFyZ2V0IHJhdCBhY3RpdmUgZW1lcmdlbmN5IHNlcnZpY2UgZm91bmQKKyAgIE5BU19TVl9FVkVOVF9FTUNfU0VBUkNIXzNHUFAsICAgICAgICAgICAvL2RlYWN0aXZhdGUgQzJLIENTIHRvIHByZXZlbnQgZnJvbSBzZWFyY2hpbmcgcHJlZW1wdGlvbgorICAgTkFTX1NWX0VWRU5UX0xJU1RfU1RBUlQsIC8vIGZvciBuYXNfc3YgdG8gY2FuY2VsIHNlYXJjaAorICAgTkFTX1NWX0VWRU5UX0hQUExNTl9MSVNUX0VORCwgLy8gZm9yIG5hc19zdiB0byBkZXF1ZXVlLCBvbmx5IHNlbmQgd2hlbiBIUFBMTU4gbGlzdCBmaW5pc2ggbm8gZnVydGhlciBhY3Rpb24gc2hhbGwgYmUgZG9uZS4KKyAgIE5BU19TVl9FVkVOVF9DTV9TRVJWSUNFX1NUQVJULAorICAgTkFTX1NWX0VWRU5UX0NNX1NFUlZJQ0VfRU5ELAorICAgTkFTX1NWX0VWRU5UX0VNTV9DT05OX0lETEUsCisgICBOQVNfU1ZfRVZFTlRfRU1NX0NPTk5fTk9OX0lETEUsCisgICBOQVNfU1ZfRVZFTlRfVFlQRV9DU0ZCLAorICAgTkFTX1NWX0VWRU5UX1RZUEVfUkVUVVJOX05PUk1BTCwKKyAgIE5BU19TVl9FVkVOVF9UWVBFX1JFVFVSTl9BQk5PUk1BTCwKKyAgIE5BU19TVl9FVkVOVF9UWVBFX0NPTkdFU1RJT05fVElNRVJfQUNUSVZFLAorICAgTkFTX1NWX0VWRU5UX1RZUEVfVEhST1RUTElOR19USU1FUl9BQ1RJVkUsLyogVlpfUkVRX0xURURBVEFSRVRSWV83NzM1ICovCisgICBOQVNfU1ZfRVZFTlRfRVZFTlRfVFlQRV9OT19BVkFJTEFCTEVfUEROLAorICAgTkFTX1NWX0VWRU5UX1RZUEVfTk9fQVZBSUxBQkxFX1BETiwKKyAgIE5BU19TVl9FVkVOVF9UWVBFX0NTRkJfRU1DLAorICAgTkFTX1NWX0VWRU5UX1RZUEVfQUNfQkFSLAorICAgTkFTX1NWX0VWRU5UX0FQTl9ESVNBQkxFRF9DU19QUywgIC8vZGVhY3RpdmF0ZSBDMksgQ1MvUFMgc2luY2Ugdnp3IGFwbiBkaXNhYmxlZAorICAgTkFTX1NWX0VWRU5UX1JBVF9NT0RFX05PX0MySywgICAgIC8vZGVhY3RpdmF0ZSBDMksgQ1MvUFMgc2luY2UgcmF0IG1vZGUgZGlkIG5vdCBjb250YWluIEMySworICAgTkFTX1NWX0VWRU5UX1ZHTU1fQ09OTl9DT05ORUNURUQsCisgICBOQVNfU1ZfRVZFTlRfVkdNTV9DT05OX0lETEUsCisgICBOQVNfU1ZfRVZFTlRfVkdNTV9DT05OX0lOQUNUSVZFLAorICAgTkFTX1NWX0VWRU5UX0lSX1JFRElSRUNUX0ZST01fTFRFX1NUQVJULAorICAgTkFTX1NWX0VWRU5UX0xURV9SRUpFQ1RfSVJfUkVESVJFQ1RfVE9fVU1UU19HU00sCisgICBOQVNfU1ZfRVZFTlRfRU5URVJfU0xFRVBfU1RBVEVfRk9SX0xWSSwgLy9kZWFjdGl2YXRlIEMySyBDUy9QUyB3aGVuIFNMRUVQIHN0YXRlIHVuZGVyIGxpbWl0ZWQgdmlydHVhbCBpZGxlIG1vZGUKKyAgIE5BU19TVl9FVkVOVF9FTU1fREVBQ1RfRVJSQ19GT1JfUkFUX01PREVfQ0hBTkdFLAorfSAgbmFzX3N2X2FueV9ldmVudF91cGRhdGVfaW5kX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgTkFTX1NWX0JST0FEQ0FTVF9FVkVOVF9VUERBVEVfTk9ORSA9IDB4MCwKKyAgIE5BU19TVl9CUk9BRENBU1RfRVZFTlRfVFlQRV9DU0ZCLAorICAgTkFTX1NWX0JST0FEQ0FTVF9FVkVOVF9UWVBFX1JFVFVSTl9OT1JNQUwsCisgICBOQVNfU1ZfQlJPQURDQVNUX0VWRU5UX1RZUEVfUkVUVVJOX0FCTk9STUFMLAorICAgTkFTX1NWX0JST0FEQ0FTVF9FVkVOVF9UWVBFX0NPTkdFU1RJT05fVElNRVJfQUNUSVZFLAorICAgTkFTX1NWX0JST0FEQ0FTVF9FVkVOVF9UWVBFX1RIUk9UVExJTkdfVElNRVJfQUNUSVZFLC8qIFZaX1JFUV9MVEVEQVRBUkVUUllfNzczNSAqLworICAgTkFTX1NWX0JST0FEQ0FTVF9FVkVOVF9UWVBFX05PX0FWQUlMQUJMRV9QRE4sCisgICBOQVNfU1ZfQlJPQURDQVNUX0VWRU5UX1RZUEVfQ1NGQl9FTUMsCisgICBOQVNfU1ZfQlJPQURDQVNUX0VWRU5UX1RZUEVfQUNfQkFSLAorICAgTkFTX1NWX0JST0FEQ0FTVF9FVkVOVF9UWVBFX0VNTV9JUl9SRURJUkVDVF9GQUlMRUQsIC8qIE5BU19TViByZWplY3QgSVJBVCB3aXRob3V0IGluZm9ybWluZyBSQVRDSEcsIG5lZWQgdG8gc2VuZCB0aGlzIGV2ZW50IHRvIGNoYW5nZSBzdGF0ZSAqLworfSAgbmFzX3N2X2FueV9ldmVudF91cGRhdGVfcmVxX2VudW07CisKKwordHlwZWRlZiBlbnVtCit7CisgICAgTkFTX1NWX1RSQUNFX1RZUEVfUkVHX1NUQVRVUywKK30gIG5hc19zdl90cmFjZV90eXBlOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBOQVNfU1ZfQk9PTF9JTl9BX01FRVRJTkcsCisgICAgTkFTX1NWX0JPT0xfSVNfUExNTl9TVEFUVVNfSU5EX1NFTlQsCisgICAgTkFTX1NWX0JPT0xfSVNfUkVTVUxUX0lORF9TRU5ULAorICAgIE5BU19TVl9CT09MX0lTX1JFR19TVEFUVVNfSU5EX1NFTlQsCit9ICBuYXNfc3ZfYm9vbF9uYW1lOworCit0eXBlZGVmIGVudW0KK3sKKyAgIE5BU19TVl9MNF9FVkVOVF9VUERBVEVfTk9ORSA9IDB4MCwKKyAgIC8qIHByZXZpb3VzIHJlZ2lzdGVyZWQgYW5kIHBsbW5fbG9zcywgZmlyc3QgcmVxdWlyZW1lbnQgaXMgTDQgbmVlZHMgdG8gaW5mb3JtIFVQQ00gZGF0YSBzdXNwZW5kLiAqLworICAgTkFTX1NWX0w0X0VWRU5UX0FTX0RFQUNUSVZBVEVEX1NUQVJULAorICAgLyogZ3VhcmFudGVlIHBhaXJlZCAqLworICAgTkFTX1NWX0w0X0VWRU5UX0FTX0RFQUNUSVZBVEVEX0VORCwKK30gIG5hc19zdl9sNF9ldmVudF91cGRhdGVfaW5kX2VudW07CisKKworLy8gUkVMMTIgZmVhdHVyZSBTQ00KK3R5cGVkZWYgZW51bQoreworICAgIElNU19TQ01fTU1URUxfVk9JQ0UgPSAwLAorICAgIElNU19TQ01fTU1URUxfVklERU8sCisgICAgSU1TX1NDTV9TTVNPSVAsCisgICAgSU1TX1NDTV9SRUcsCisJSU1TX1NDTV9NQVgsCit9IGltc19zY21faW5mb190eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE9NQURNX0NNRF9HRVQsCisgICAgT01BRE1fQ01EX1NFVAorfSBvbWFkbV9jbWRfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBBVVRPTk9NT1VTX0dBUCAgICAgICAgICA9IDAsCisgICAgTVBTUl9EVVJBVElPTiAgICAgICAgICAgPSAxLAorICAgIFNDQU5fRFVSQVRJT04gICAgICAgICAgID0gMiwKKyAgICBTTEVFUF9EVVJBVElPTiAgICAgICAgICA9IDMsCisgICAgTVBTUl9NQVhfRFVSQVRJT04gICAgICAgPSA0LAorICAgIExPTkdfTVBTUl9EVVJBVElPTiAgICAgID0gNSwKKyAgICBUUExNTl9CQVJSSU5HX1RJTUVSICAgICA9IDYsCisgICAgTFRFX0hQVUUgICAgICAgICAgICAgICAgPSA3LAorICAgIFRfV1dBTl85MTFfVElNRVIgICAgICAgID0gOCwKKyAgICBNUFNSX01BWF9TVEFHRSAgICAgICAgICA9IDksCisgICAgTFRFX0RMMjU2UUFNICAgICAgICAgICAgPSAxMCwKKyAgICBMVEVfVUw2NFFBTSAgICAgICAgICAgICA9IDExLAorICAgIExURV9URERfVE05ICAgICAgICAgICAgID0gMTIsCisgICAgTFRFX0ZERF9UTTkgICAgICAgICAgICAgPSAxMywKKyAgICBMVEVfQjI1XzR4NE1JTU8gICAgICAgICA9IDE0LAorICAgIExURV9CNDFfNHg0TUlNTyAgICAgICAgID0gMTUsCisgICAgVDVHTlJTQV9CQVJSSU5HX1RJTUVSICAgPSAxNiwKKyAgICBNQVhfT01BRE1fTk9ERQorfSBvbWFkbV9ub2RlX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgSU1TX1NDTV9BQ1RJT05fU1RBUlQgPSAxLAorICAgIElNU19TQ01fQUNUSU9OX0VORCwKK30gaW1zX3NjbV9pbmZvX2FjdGlvbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBSQVRfTU9ERV9VU0VSX0NIQU5HRSAgICAgID0gMCwKKyAgICBSQVRfTU9ERV9HTVNTX01DQ19TRUFSQ0ggID0gMSwKKyAgICBSQVRfTU9ERV9HTVNTX1BMTU5fU0VBUkNIID0gMiwKKyAgICBSQVRfTU9ERV9HTVNTX0hWT0xURV9NT0RFX0NIQU5HRSA9IDMKK30gcmF0X21vZGVfY2hhbmdlX2NhdXNlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIFBMTU5fUkVTVFJJQ1RfSU5GT19OT05FICAgID0gMCwKKyAgICBQTE1OX1JFU1RSSUNUX01PX0lNU19TUiAgICAgICAgICAgPSAxLAorICAgIFBMTU5fUkVTVFJJQ1RfTFJfQUNDRVBUX1BTX09OTFkgICA9IDIKK30gcGxtbl9yZXN0cmljdF9hZGRpdGlvbmFsX2luZm9ybWF0aW9uX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIExURV9NT0RVTEFUSU9OX0NNRF9RVUVSWSwKKyAgICBMVEVfTU9EVUxBVElPTl9DTURfU0VULAorfSBsdGVfbW9kdWxhdGlvbl9jbWRfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIExURV9NT0RVTEFUSU9OX0RJU0FCTEVEICAgICAgICAgICAgICA9IDB4MDAsCisgICAgTFRFX01PRFVMQVRJT05fRU5BQkxFRCAgICAgICAgICAgICAgID0gMHgwMQorfSBsdGVfbW9kdWxhdGlvbl9tb2RlX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgTElOS19ESVJFQ1RJT05fRE9XTkxJTksgICAgICA9IDB4MDAsCisgICAgTElOS19ESVJFQ1RJT05fVVBMSU5LICAgICAgICA9IDB4MDEKK30gbGlua19kaXJlY3Rpb25fZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgQ0FfQkFORF9DT01CX0xJU1RfQ01EX1FVRVJZLAorICAgIENBX0JBTkRfQ09NQl9MSVNUX0NNRF9TRVQsCisgICAgQ0FfQkFORF9DT01CX0xJU1RfQ01EX0FQUEVORAorfSBjYV9iYW5kX2NvbWJfbGlzdF9jbWRfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIENBX0JBTkRfQ09NQl9MSVNUX1RZUEVfV0hJVEUgICAgPSAweDAwLAorICAgIENBX0JBTkRfQ09NQl9MSVNUX1RZUEVfQkxBQ0sgICAgPSAweDAxLAorICAgIEVORENfQkFORF9DT01CX0xJU1RfVFlQRV9XSElURSAgPSAweDAyLAorICAgIEVORENfQkFORF9DT01CX0xJU1RfVFlQRV9CTEFDSyAgPSAweDAzLAorICAgIFNBX0JBTkRfQ09NQl9MSVNUX1RZUEVfV0hJVEUgICAgPSAweDA0LAorICAgIFNBX0JBTkRfQ09NQl9MSVNUX1RZUEVfQkxBQ0sgICAgPSAweDA1Cit9IGNhX2JhbmRfY29tYl9saXN0X3R5cGVfZW51bTsKKworCit0eXBlZGVmIGVudW0KK3sKKyAgICBHTVNTX09QMDFfTU9ERV9DSEVDS19OT05FID0wLAorICAgIEdNU1NfT1AwMV9NT0RFX0NIRUNLX1REU0NETUFfTU9ERV9BQ1RJVkFURUQgPSAxLAorICAgIEdNU1NfT1AwMV9NT0RFX0NIRUNLX0NNQ0NfTkVUV09SSyA9IDIKK30gZ21zc19vcDAxX21vZGVfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBPUEVSQVRPUl9VTktOT1dOICAgID0gMCwKKyAgICBPUEVSQVRPUl9DVCAgICAgICAgID0gMSwKKyAgICBPUEVSQVRPUl9WWlcgICAgICAgID0gMiwKKyAgICBPUEVSQVRPUl9TUFJJTlQgICAgID0gMywKKyAgICBPUEVSQVRPUl9DTUNDICAgICAgID0gNCwKK30gbmV0d29ya19vcGVyYXRvcl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTU1DT05OX0VTVF9JTkRfRkFJTF9DQVVTRV9FU1RfU1VDQ0VTUywKKyAgICBFTU1DT05OX0VTVF9JTkRfRkFJTF9DQVVTRV9BQ19CQVJSRUQsCisgICAgRU1NQ09OTl9FU1RfSU5EX0ZBSUxfQ0FVU0VfTldfUkVKX0NPTk4sCisgICAgRU1NQ09OTl9FU1RfSU5EX0ZBSUxfQ0FVU0VfQ09OTl9GQUlMLAorICAgIEVNTUNPTk5fRVNUX0lORF9GQUlMX0NBVVNFX0lSQVRfQ0VMTF9SRVNFTCwKKyAgICBFTU1DT05OX0VTVF9JTkRfRkFJTF9DQVVTRV9DRUxMX1JFU0VMLAorICAgIEVNTUNPTk5fRVNUX0lORF9GQUlMX0NBVVNFX05BU19SRVFVRVNULAorICAgIEVNTUNPTk5fRVNUX0lORF9GQUlMX0NBVVNFX1RSQU5TSURfTk9UX01BVENILAorICAgIEVNTUNPTk5fRVNUX0lORF9GQUlMX0NBVVNFX0lETEVfT09TLAorICAgIEVNTUNPTk5fRVNUX0lORF9GQUlMX0NBVVNFX0lSQ0NPX1RJTUVSX0VYUFIsCisgICAgRU1NQ09OTl9FU1RfSU5EX0ZBSUxfQ0FVU0VfQUNfQkFSUkVEX01PX0RBVEEsCisgICAgRU1NQ09OTl9FU1RfSU5EX0ZBSUxfQ0FVU0VfQUNfQkFSUkVEX01PX0NTRkIsCisgICAgRU1NQ09OTl9FU1RfSU5EX0ZBSUxfQ0FVU0VfQUNfQkFSUkVEX0VBQiwKKyAgICBFTU1DT05OX0VTVF9JTkRfRkFJTF9DQVVTRV9BQ19CQVJSRURfQUNEQywKKyAgICBFTU1DT05OX0VTVF9JTkRfRkFJTF9DQVVTRV9HRU1JTklfRkFJTCwKKyAgICBFTU1DT05OX0VTVF9JTkRfRkFJTF9DQVVTRV9DT05HRVNUSU9OCisKK30gZW1tX2VzdF9pbmRfY2F1c2VfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgREVMRVRFX0ZQTE1OLAorICAgIEFERF9GUExNTgorI2lmZGVmIF9fTUJJTV9NU19ORVRXT1JLX0JMQUNLTElTVF9fCisgICAgLFVQREFURV9CTEFDS0xJU1RfUExNTgorI2VuZGlmCit9IGZwbG1uX2FjdGlvbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBDVVNUT01fUFJFRkVSX09QTE1OID0gMCwKKyAgICBDVVNUT01fRk9SQklEREVOX1BMTU4gPSAxCisjaWZkZWYgX19NQklNX01TX05FVFdPUktfQkxBQ0tMSVNUX18KKyAgICAsQ1VTVE9NX0JMQUNLTElTVF9QTE1OID0gMgorI2VuZGlmCit9Y3VzdG9tX3BsbW5fdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBJTlRFR19QUk9URUNURUQsCisgICAgSU5URUdfTk9OX1BST1RFQ1RFRCwKKyAgICBJTlRFR19QUk9URUNURURfSU5TSUdOSUZJQ0FOVAorCit9IGludGVnX3Byb3RlY3Rfc3RhdHVzX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIFRXX01PREVfTEdfV0cgICAgICAgPSAwCit9IGdtc3NfdHdfbW9kZV9lbnVtOworCisKK3R5cGVkZWYgZW51bQoreworICAgIEdNU1NfU0VBUkNIX1RZUEVfTk9STUFMICAgICAgICAgICAgICAgICA9IDB4MDAsICAvKiAwMDAwICAgICAgICAqLworICAgIEdNU1NfU0VBUkNIX1RZUEVfU1RPUkVEICAgICAgICAgICAgICAgICA9IDB4MDEsICAvKiAwMDAxICAgICAgICAqLworICAgIEdNU1NfU0VBUkNIX1RZUEVfUVVJQ0sgICAgICAgICAgICAgICAgICA9IDB4MDIsICAvKiAwMDEwICAgICAgICAqLworICAgIEdNU1NfU0VBUkNIX1RZUEVfU1RPUkVEX1FVSUNLICAgICAgICAgICA9IDB4MDMgICAvKiAwMDExICAgICAgICAqLworCit9IGdtc3Nfc2VhcmNoX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBQQU1fQVBOX1RZUEVfVU5LTk9XTiAgICA9IDB4MDAwMDAwMDAsCisgICAgUEFNX0FQTl9UWVBFX0RFRkFVTFQgICAgPSAweDAwMDAwMDAxLAorICAgIFBBTV9BUE5fVFlQRV9JTVMgICAgICAgID0gMHgwMDAwMDAwMiwKKyAgICBQQU1fQVBOX1RZUEVfTU1TICAgICAgICA9IDB4MDAwMDAwMDQsCisgICAgUEFNX0FQTl9UWVBFX1NVUEwgICAgICAgPSAweDAwMDAwMDA4LAorICAgIFBBTV9BUE5fVFlQRV9EVU4gICAgICAgID0gMHgwMDAwMDAxMCwKKyAgICBQQU1fQVBOX1RZUEVfSElQUkkgICAgICA9IDB4MDAwMDAwMjAsCisgICAgUEFNX0FQTl9UWVBFX0ZPVEEgICAgICAgPSAweDAwMDAwMDQwLAorICAgIFBBTV9BUE5fVFlQRV9DQlMgICAgICAgID0gMHgwMDAwMDA4MCwKKyAgICBQQU1fQVBOX1RZUEVfRU1FUkdFTkNZICA9IDB4MDAwMDAxMDAsCisgICAgUEFNX0FQTl9UWVBFX0lBICAgICAgICAgPSAweDAwMDAwMjAwLAorICAgIFBBTV9BUE5fVFlQRV9ETSAgICAgICAgID0gMHgwMDAwMDQwMCwKKyAgICBQQU1fQVBOX1RZUEVfV0FQICAgICAgICA9IDB4MDAwMDA4MDAsCisgICAgUEFNX0FQTl9UWVBFX05FVCAgICAgICAgPSAweDAwMDAxMDAwLAorICAgIFBBTV9BUE5fVFlQRV9DTU1BSUwgICAgID0gMHgwMDAwMjAwMCwKKyAgICBQQU1fQVBOX1RZUEVfVEVUSEVSSU5HICA9IDB4MDAwMDQwMDAsCisgICAgUEFNX0FQTl9UWVBFX1JDU0UgICAgICAgPSAweDAwMDA4MDAwLAorICAgIFBBTV9BUE5fVFlQRV9YQ0FQICAgICAgID0gMHgwMDAxMDAwMCwKKyAgICBQQU1fQVBOX1RZUEVfUkNTICAgICAgICA9IDB4MDAwMjAwMDAsCit9IHBhbV9ud3NlbF9hcG5fdHlwZV9lbnVtOwordHlwZWRlZiBlbnVtCit7CisgICAgUkVDT1ZFUl9DQVVTRV9UMzI0NV9FWFBJUlkgPSAwLAorICAgIFJFQ09WRVJfQ0FVU0VfSVZTUl9TVEFSVCA9IDEsCisgICAgUkVDT1ZFUl9DQVVTRV9WWldfUEVSTUFORU5UX0lWU1IgPSAyLAorfSByZWNvdmVyX2NhdXNlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIERVUExFWF9NT0RFX1JFU0VUX1NJTV9QQVJBX1RPX0FTID0gMCwKKyAgICBEVVBMRVhfTU9ERV9TRVRfU0lNX1BBUkFfVE9fQVMgICA9IDEKK30gZHVwbGV4X21vZGVfY2hhbmdlX2FjdGlvbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBTRVRfSFZPTFRFX01PREVfQ0FVU0VfSU1TX1JFR19TVEFUVVNfQ0hBTkdFID0gMCwvL2RlZmF1bHQgdmFsdWUKKyAgICBTRVRfSFZPTFRFX01PREVfQ0FVU0VfU0lMRU5UX1JFRElBTCwKK30gc2V0X2h2b2x0ZV9tb2RlX2NhdXNlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEhWT0xURV9NT0RFX0NIQU5HRV9DQVVTRV9DU19SRUdfU0VOVCA9IDAsCisgICAgSFZPTFRFX01PREVfQ0hBTkdFX0NBVVNFX0wyQzJMX1dJVEhfQzJLX0NTX1JFR0lTVEVSUkVELAorICAgIEhWT0xURV9NT0RFX0NIQU5HRV9DQVVTRV9MMkMyTF9XSVRIT1VUX0MyS19DU19SRUdJU1RFUlJFRAorfSBodm9sdGVfbW9kZV9jaGFuZ2VfY2F1c2VfZW51bTsKKworI2lmZGVmIF9fR0VNSU5JX18KK3R5cGVkZWYgZW51bSB7CisgICAgUlNJTV9BVVRIX0ZJTklTSF9JTlZBTElELAorICAgIFJTSU1fQVVUSF9GSU5JU0hfQ09NUExFVEUsCisgICAgUlNJTV9BVVRIX0ZJTklTSF9MT1dFUl9MQVlFUl9GQUlMVVJFLAorfSByc2ltX2F1dGhfZmluaXNoX3Jlc3VsdF9lbnVtOworI2VuZGlmIC8qIF9fR0VNSU5JX18gKi8KKwordHlwZWRlZiBlbnVtCit7CisgICAgQUJPUlRfU0VBUkNIX0VNRVJHRU5DWSA9IDAsICAvL2VxdWl2YWxlbnQgdG8gWFhYX0FCT1JUX0VNRVJHRU5DWV9QTE1OX1NFQVJDSF9SRVEKKyAgICBBQk9SVF9TRUFSQ0hfVFZaV19TRUFSQ0hfMjNHID0gMQorfWVud3NlbF9zZWFyY2hfYWJvcnRfY2F1c2VfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBFTkFTQVNfU1NBQ19BQ19CQVJSSU5HRkFDVE9SX3AwMCwgLy8gYmFyCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wMDUsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wMTAsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wMTUsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wMjAsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wMjUsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wMzAsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wNDAsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wNTAsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wNjAsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wNzAsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wNzUsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wODAsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wODUsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wOTAsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9wOTUsCisgICAgRU5BU0FTX1NTQUNfQUNfQkFSUklOR0ZBQ1RPUl9JTlZBTElELCAvLyBub3QgYmFyCit9IGVuYXNhc19zc2FjX2FjX2JhcnJpbmdmYWN0b3JfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTFRFX1RNOV9DTURfUVVFUlkgICAgICAgICAgID0gMCwKKyAgICBMVEVfVE05X0NNRF9TRVQgICAgICAgICAgICAgPSAxLAorfSBsdGVfdG05X2NtZF90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIExURV9UTTlfRkREX0RJU0FCTEUgICAgICAgICA9IDAsCisgICAgTFRFX1RNOV9GRERfRU5BQkxFICAgICAgICAgID0gMQorfSBsdGVfdG05X2ZkZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMVEVfVE05X1RERF9ESVNBQkxFICAgICAgICAgPSAwLAorICAgIExURV9UTTlfVEREX0VOQUJMRSAgICAgICAgICA9IDEKK30gbHRlX3RtOV90ZGRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgVkdNTV9NU0dfQkVHSU4gICAgICAgICAgICAgICAgICAgICAgID0gMHg0MSwKKyAgICBWR01NX01TR19SRUdfUkVRVUVTVCAgICAgICAgICAgICAgICAgPSBWR01NX01TR19CRUdJTiwKKyAgICBWR01NX01TR19SRUdfQUNDRVBUICAgICAgICAgICAgICAgICAgPSAweDQyLAorICAgIFZHTU1fTVNHX1JFR19DT01QTEVURSAgICAgICAgICAgICAgICA9IDB4NDMsCisgICAgVkdNTV9NU0dfUkVHX1JFSkVDVCAgICAgICAgICAgICAgICAgID0gMHg0NCwKKyAgICBWR01NX01TR19NT19ERVJFR19SRVFVRVNUICAgICAgICAgICAgPSAweDQ1LAorICAgIFZHTU1fTVNHX01PX0RFUkVHX0FDQ0VQVCAgICAgICAgICAgICA9IDB4NDYsCisgICAgVkdNTV9NU0dfTVRfREVSRUdfUkVRVUVTVCAgICAgICAgICAgID0gMHg0NywKKyAgICBWR01NX01TR19NVF9ERVJFR19BQ0NFUFQgICAgICAgICAgICAgPSAweDQ4LAorICAgIFZHTU1fTVNHX1NFUlZJQ0VfUkVRVUVTVCAgICAgICAgICAgICA9IDB4NEMsCisgICAgVkdNTV9NU0dfU0VSVklDRV9SRUpFQ1QgICAgICAgICAgICAgID0gMHg0RCwKKyAgICBWR01NX01TR19TRVJWSUNFX0FDQ0VQVCAgICAgICAgICAgICAgPSAweDRFLAorICAgIFZHTU1fTVNHX0NPTkZJR19VUERBVEVfQ09NTUFORCAgICAgICA9IDB4NTQsCisgICAgVkdNTV9NU0dfQ09ORklHX1VQREFURV9DT01QTEVURSAgICAgID0gMHg1NSwKKyAgICBWR01NX01TR19BVVRIX1JFUSAgICAgICAgICAgICAgICAgICAgPSAweDU2LAorICAgIFZHTU1fTVNHX0FVVEhfUlNQICAgICAgICAgICAgICAgICAgICA9IDB4NTcsCisgICAgVkdNTV9NU0dfQVVUSF9SRUogICAgICAgICAgICAgICAgICAgID0gMHg1OCwKKyAgICBWR01NX01TR19BVVRIX0ZBSUwgICAgICAgICAgICAgICAgICAgPSAweDU5LAorICAgIFZHTU1fTVNHX0FVVEhfUkVTVUxUICAgICAgICAgICAgICAgICA9IDB4NUEsCisgICAgVkdNTV9NU0dfSURFTlRJVFlfUkVRICAgICAgICAgICAgICAgID0gMHg1QiwKKyAgICBWR01NX01TR19JREVOVElUWV9SU1AgICAgICAgICAgICAgICAgPSAweDVDLAorICAgIFZHTU1fTVNHX1NFQ19NT0RFX0NPTU1BTkQgICAgICAgICAgICA9IDB4NUQsCisgICAgVkdNTV9NU0dfU0VDX01PREVfQ09NUExFVEUgICAgICAgICAgID0gMHg1RSwKKyAgICBWR01NX01TR19TRUNfTU9ERV9SRUpFQ1QgICAgICAgICAgICAgPSAweDVGLAorICAgIFZHTU1fTVNHXzVHTU1fU1RBVFVTICAgICAgICAgICAgICAgICA9IDB4NjQsCisgICAgVkdNTV9NU0dfNUdNTV9OT1RJRklDQVRJT04gICAgICAgICAgID0gMHg2NSwKKyAgICBWR01NX01TR181R01NX05PVElGSUNBVElPTl9SU1AgICAgICAgPSAweDY2LAorICAgIFZHTU1fTVNHX1VMX05BU19UUkFOU1BPUlQgICAgICAgICAgICA9IDB4NjcsCisgICAgVkdNTV9NU0dfRExfTkFTX1RSQU5TUE9SVCAgICAgICAgICAgID0gMHg2OCwKKyAgICAvLyBXQVJOSU5HOiBkbyBub3QgZm9yZ2V0IHRvIHVwZGF0ZSBWR01NX01TR19FTkQgaWYgbGFzdCBtZXNzYWdlIGlzIGNoYW5nZWQKKyAgICBWR01NX01TR19FTkQgICAgICAgICAgICAgICAgICAgICAgICAgPSBWR01NX01TR19ETF9OQVNfVFJBTlNQT1JULAorICAgIFZHTU1fTVNHX0lOVkFMSUQgICAgICAgICAgICAgICAgICAgICA9IDB4RkYKK30gdmdtbV9tc2dfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBWR01NX0NBVVNFX0NBVVNFX05PTkUgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMCwKKyAgICBWR01NX0NBVVNFX0lMTEVHQUxfVUUgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMywKKyAgICBWR01NX0NBVVNFX1BFSV9OT1RfQUNDRVBURUQgICAgICAgICAgICAgICAgID0gMHgwNSwKKyAgICBWR01NX0NBVVNFX0lMTEVHQUxfTUUgICAgICAgICAgICAgICAgICAgICAgID0gMHgwNiwKKyAgICBWR01NX0NBVVNFXzVHU19TRVJWSUNFU19OT1RfQUxMT1dFRCAgICAgICAgID0gMHgwNywKKyAgICBWR01NX0NBVVNFX1VFX0lEX05PVF9ERVJJVkVEX0JZX05XICAgICAgICAgID0gMHgwOSwKKyAgICBWR01NX0NBVVNFX0lNUExJQ0lUTFlfREVSRUdJU1RFUkVEICAgICAgICAgID0gMHgwYSwKKyAgICBWR01NX0NBVVNFX1BMTU5fTk9UX0FMTE9XRUQgICAgICAgICAgICAgICAgID0gMHgwYiwKKyAgICBWR01NX0NBVVNFX1RBX05PVF9BTExPV0VEICAgICAgICAgICAgICAgICAgID0gMHgwYywKKyAgICBWR01NX0NBVVNFX1JPQU1JTkdfTk9UX0FMTE9XRURfSU5fVEEgICAgICAgID0gMHgwZCwKKwlWR01NX0NBVVNFX05PX1NVSVRBQkxFX0NFTExfSU5fVEEgICAgICAgICAgID0gMHgwZiwKKyAgICBWR01NX0NBVVNFX01BQ19GQUlMVVJFICAgICAgICAgICAgICAgICAgICAgID0gMHgxNCwKKyAgICBWR01NX0NBVVNFX1NZTkNIX0ZBSUxVUkUgICAgICAgICAgICAgICAgICAgID0gMHgxNSwKKwlWR01NX0NBVVNFX0NPTkdFU1RJT04gICAgICAgICAgICAgICAgICAgICAgID0gMHgxNiwKKyAgICBWR01NX0NBVVNFX1NFQ1VSSVRZX0NBUEFCSUxJVElFU19NSVNNQVRDSCAgID0gMHgxNywKKyAgICBWR01NX0NBVVNFX1NFQ1VSSVRZX01PREVfUkVKRUNUX1VOU1BFQ0lGSUVEID0gMHgxOCwKKyAgICBWR01NX0NBVVNFX05PTl81R19BVVRIX1VOQUNDRVBUQUJMRSAgICAgICAgID0gMHgxYSwKKyAgICBWR01NX0NBVVNFX04xX01PREVfTk9UX0FMTE9XRUQgICAgICAgICAgICAgID0gMHgxYiwKKyAgICBWR01NX0NBVVNFX1JFU1RSSUNURURfU0VSVklDRV9BUkVBICAgICAgICAgID0gMHgxYywKKyAgICBWR01NX0NBVVNFX0xBRE5fTk9UX0FWQUlMQUJMRSAgICAgICAgICAgICAgID0gMHgyYiwKKyAgICBWR01NX0NBVVNFX01BWF9OVU1fUERVX1NFU1NJT05TX1JFQUNIRUQgICAgID0gMHg0MSwKKyAgICBWR01NX0NBVVNFX0lOU1VGRl9SRVNPVVJDRVNfU0xJQ0VfQU5EX0ROTiAgID0gMHg0MywKKyAgICBWR01NX0NBVVNFX0lOU1VGRl9SRVNPVVJDRVNfU0xJQ0UgICAgICAgICAgID0gMHg0NSwKKwlWR01NX0NBVVNFX05HS1NJX0FMUkVBRFlfSU5fVVNFICAgICAgICAgICAgID0gMHg0NywKKwlWR01NX0NBVVNFX04zR1BQX0FDQ0VTU19UT181R0NOX05PVF9BTExPV0VEID0gMHg0OCwKKwlWR01NX0NBVVNFX1NFUlZJTkdfTldfTk9UX0FVVEhPUklaRUQgICAgICAgID0gMHg0OSwKKyAgICBWR01NX0NBVVNFX1BBWUxPQURfTk9UX0ZPUldBUkRFRCAgICAgICAgICAgID0gMHg1YSwKKyAgICBWR01NX0NBVVNFX0ROTl9OT1RfU1VQX1NMSUNFICAgICAgICAgICAgICAgID0gMHg1YiwKKwlWR01NX0NBVVNFX0lOU1VGRl9VUF9SRVNfRk9SX1BEVV9TRVNTSU9OICAgID0gMHg1YywKKyAgICBWR01NX0NBVVNFX1NFTUFOVElDQUxMWV9JTkNPUlJFQ1RfTVNHICAgICAgID0gMHg1ZiwKKyAgICBWR01NX0NBVVNFX0lOVkFMSURfTUFOREFUT1JZX0lORk8gICAgICAgICAgID0gMHg2MCwKKyAgICBWR01NX0NBVVNFX01TR19UWVBFX05PTl9FWElTVEVOVCAgICAgICAgICAgID0gMHg2MSwKKyAgICBWR01NX0NBVVNFX01TR19UWVBFX05PVF9DT01QQVRJQkxFICAgICAgICAgID0gMHg2MiwKKyAgICBWR01NX0NBVVNFX0lFX05PTl9FWElTVEVOVCAgICAgICAgICAgICAgICAgID0gMHg2MywKKyAgICBWR01NX0NBVVNFX0NPTkRJVElPTkFMX0lFX0VSUk9SICAgICAgICAgICAgID0gMHg2NCwKKyAgICBWR01NX0NBVVNFX01FU1NBR0VfTk9UX0NPTVBBVElCTEUgICAgICAgICAgID0gMHg2NSwKKyAgICBWR01NX0NBVVNFX1BST1RPQ09MX0VSUk9SICAgICAgICAgICAgICAgICAgID0gMHg2ZiwKKworCisgICAgLyogTVRLIGludGVybmFsLWRlZmluZWQgY2F1c2VzICovCisgICAgLyogTk9URTogdGhlIHZhbHVlcyBvZiBNVEsgaW50ZXJuYWwtZGVmaW5lZCBjYXVzZXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIG1tX2NhdXNlX2VudW0gKi8KKyAgICBWR01NX0NBVVNFX05PX0NPVkVSQUdFICAgICAgICAgICAgICAgICAgICAgICA9IE5PX0NPVkVSQUdFLAorICAgIFZHTU1fQ0FVU0VfU0lNX1JFTU9WRUQgICAgICAgICAgICAgICAgICAgICAgID0gU0lNX1JFTU9WRUQsCisgICAgVkdNTV9DQVVTRV9WR05BU19JTl9TVVNQRU5EX01PREUgICAgICAgICAgICAgPSBNTV9SRUpfQ1VaX1JSX0lOX1NVU1BFTkRfTU9ERSwKKyAgICBWR01NX0NBVVNFX0xJTUlURURfU0VSVklDRSAgICAgICAgICAgICAgICAgICA9IEdQUlNfSU5fTElNSVRFRF9TRVJWSUNFLAorfSB2Z21tX2NhdXNlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIFZHTU1fUkVHTl9ERVJFR0lTVEVSRURfVVBEQVRFID0gMCwKKyAgICBWR01NX1JFR05fUkVHSVNURVJFRF9VUERBVEUsCisgICAgVkdNTV9SRUdOX0lOVkxBSURfRU5VTQorfXZnbW1fYmNhc3RfcmVnbl91cGRhdGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgVkdNTV9SRUdfVFlQRV9JTklUSUFMX1JFR0lTVFJBVElPTiAgICAgICAgICAgPSAxLAorICAgIFZHTU1fUkVHX1RZUEVfTU9CSUxJVFlfUkVHSVNUUkFUSU9OX1VQREFUSU5HID0gMiwKKyAgICBWR01NX1JFR19UWVBFX1BFUklPRElDX1JFR0lTVFJBVElPTl9VUERBVElORyA9IDMsCisgICAgVkdNTV9SRUdfVFlQRV9FTUVSR0VOQ1lfUkVHSVNUUkFUSU9OICAgICAgICAgPSA0LAorICAgIFZHTU1fUkVHX1RZUEVfVkdTX1JFR19UWVBFX1JFU0VSVkVEICAgICAgICAgID0gNworfSB2Z21tX3JlZ190eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVNTV9SRUdOX0RFUkVHSVNURVJFRF9VUERBVEUgPSAwLAorICAgIEVNTV9SRUdOX1JFR0lTVEVSRURfVVBEQVRFLAorICAgIEVNTV9SRUdOX0lOVkxBSURfRU5VTQorfWVtbV9iY2FzdF9yZWduX3VwZGF0ZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBEX1ZHU19NT0JJTEVfSURfTk9fSUQgPSAwLAorICAgIERfVkdTX01PQklMRV9JRF9TVUNJID0gMSwKKyNpZmRlZiBfX01DRF9WR05BU18yNDUwMV9TUEVDXzIwMThTRVBfXworICAgIERfVkdTX01PQklMRV9JRF9HVVRJID0gNiwKKyNlbHNlCisgICAgRF9WR1NfTU9CSUxFX0lEX0dVVEkgPSAyLAorI2VuZGlmIC8qIF9fTUNEX1ZHTkFTXzI0NTAxX1NQRUNfMjAxOFNFUF9fICovCisgICAgRF9WR1NfTU9CSUxFX0lEX0lNRUkgPSAzLAorICAgIERfVkdTX01PQklMRV9JRF9TX1RNU0kgPSA0LAorICAgIERfVkdTX01PQklMRV9JRF9JTUVJU1ZJID0gNQorfSB2Z3NfbW9iaWxlX2lkX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgVkdNTV9OU1NBSV9DTURfQzVHTlNTQUkgICAgID0gMCwKKyAgICBWR01NX05TU0FJX0NNRF9DNUdOU1NBSVJEUCAgPSAxLAorICAgIFZHTU1fTlNTQUlfQ01EX0M1R1BOU1NBSSAgICA9IDIKK30gdmdzX25zc2FpX2NtZF90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgIE5XU0VMX0xJU1RfVFlQRV9JTlZBTElELAorICBOV1NFTF9MSVNUX1RZUEVfTUFOVUFMX0xJU1QsCisgIE5XU0VMX0xJU1RfVFlQRV9ISUdIX1BSSU9SSVRZX0xJU1QsCisgIE5XU0VMX0xJU1RfVFlQRV9NUFNSX0xJU1QKK30gbndzZWxfbGlzdF90eXBlX2VudW07CisKKy8qCit0eXBlZGVmIGVudW0KK3sKKyAgICBOMV9JTVNfVk9QU19OT1RfU1VQUE9SVEVELAorICAgIE4xX0lNU19WT1BTX1NVUFBPUlRFRF8zR1BQLAorICAgIE4xX0lNU19WT1BTX1NVUFBPUlRFRF9OT05fM0dQUCwKK30gdmdtbV9pbXNfdm9wc19pbmRpY2F0b3JfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTjFfRU1DX05PVF9TVVBQT1JURUQsCisgICAgTjFfRU1DX1NVUFBPUlRFRF9OUl81R0NOX09OTFksCisgICAgTjFfRU1DX1NVUFBPUlRFRF9FVVRSQU5fNUdDTl9PTkxZLAorICAgIE4xX0VNQ19TVVBQT1JURURfTlJfNUdDTl9FVVRSQU5fNUdDTiwKK30gdmdtbV9lbWNfc3VwcG9ydF9pbmRpY2F0b3JfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTjFfRU1DX0ZBTExCQUNLX05PVF9TVVBQT1JURUQsCisgICAgTjFfRU1DX0ZBTExCQUNLX1NVUFBPUlRFRF9OUl81R0NOX09OTFksCisgICAgTjFfRU1DX0ZBTExCQUNLX1NVUFBPUlRFRF9FVVRSQU5fNUdDTl9PTkxZLAorICAgIE4xX0VNQ19GQUxMQkFDS19TVVBQT1JURURfTlJfNUdDTl9FVVRSQU5fNUdDTiwKK30gdmdtbV9lbWNfZmFsbGJhY2tfc3VwcG9ydF9pbmRpY2F0b3JfZW51bTsKKyovCisKK3R5cGVkZWYgZW51bQoreworICAgIE4xX0lNU19WT1BTX05PVF9TVVBQT1JUX09WRVJfM0dQUF9BQ0NFU1MgPSAwLAorICAgIE4xX0lNU19WT1BTX05PVF9TVVBQT1JURUQgPSBOMV9JTVNfVk9QU19OT1RfU1VQUE9SVF9PVkVSXzNHUFBfQUNDRVNTLAorICAgIE4xX0lNU19WT1BTX1NVUFBPUlRfT1ZFUl8zR1BQX0FDQ0VTUyA9IDEsCisgICAgTjFfSU1TX1ZPUFNfU1VQUE9SVEVEXzNHUFAgPSBOMV9JTVNfVk9QU19TVVBQT1JUX09WRVJfM0dQUF9BQ0NFU1MsCit9IHZnX2ltc18zZ3BwX2luZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBOMV9JTVNfVk9QU19OT1RfU1VQUE9SVF9PVkVSX05PTl8zR1BQX0FDQ0VTUyA9IDAsCisgICAgTjFfSU1TX1ZPUFNfU1VQUE9SVF9PVkVSX05PTl8zR1BQX0FDQ0VTUyA9IDEsCisgICAgTjFfSU1TX1ZPUFNfU1VQUE9SVEVEX05PTl8zR1BQID0gTjFfSU1TX1ZPUFNfU1VQUE9SVF9PVkVSX05PTl8zR1BQX0FDQ0VTUworfSB2Z19pbXNfbjNncHBfaW5kX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE4xX0VNQ19OT1RfU1VQUE9SVCA9IDAsCisgICAgTjFfRU1DX1NVUFBPUlRfTlJfNUdDTl9PTkxZID0gMSwKKyAgICBOMV9FTUNfU1VQUE9SVF9FVVRSQV81R0NOX09OTFkgPSAyLAorICAgIE4xX0VNQ19TVVBQT1JUX05SXzVHQ05fRVVUUkFfNUdDTiA9IDMKK30gdmdfZW1lcmdlbmN5X3NlcnZpY2VfaW5kX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE4xX0VNQ19GQUxMQkFDS19OT1RfU1VQUE9SVCA9IDAsCisgICAgTjFfRU1DX0ZBTExCQUNLX1NVUFBPUlRfTlJfNUdDTl9PTkxZID0gMSwKKyAgICBOMV9FTUNfRkFMTEJBQ0tfU1VQUE9SVF9FVVRSQV81R0NOX09OTFkgPSAyLAorICAgIE4xX0VNQ19GQUxMQkFDS19TVVBQT1JUX05SXzVHQ05fRVVUUkFfNUdDTiA9IDMKK30gdmdfZW1lcmdlbmN5X2ZhbGxiYWNrX2luZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBBQ0NFU1NfSURFTlRJVFlfMV9OT1RfVkFMSURfSU5fUlBMTU5fRVBMTU4gPSAwLAorICAgIEFDQ0VTU19JREVOVElUWV8xX1ZBTElEX0lOX1JQTE1OX0VQTE1OID0gMQorfSBtcHNfaW5kX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE4xX0VNQ19OT1RfU1VQUE9SVF9PVkVSX05PTl8zR1BQX0FDQ0VTUyA9IDAsCisgICAgTjFfRU1DX1NVUFBPUlRfT1ZFUl9OT05fM0dQUF9BQ0NFU1MgPSAxCit9IHZnX2VtZXJnZW5jeV9zZXJ2aWNlX24zZ3BwX2luZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBBQ0NFU1NfSURFTlRJVFlfMl9OT1RfVkFMSURfSU5fUlBMTU5fRVBMTU4gPSAwLAorICAgIEFDQ0VTU19JREVOVElUWV8yX1ZBTElEX0lOX1JQTE1OX0VQTE1OID0gMQorfSBtY3NfaW5kX2VudW07CisKKy8qIHJlZmVyIHRvIEFUK0VJQ1BHIHVzYWdlICovCit0eXBlZGVmIGVudW0geworICAgIENTRkJfUEFHRV9DT05GSUdfRElTQUJMRUQgPTAsCisgICAgQ1NGQl9QQUdFX0NPTkZJR19FTkFCTEVfUkVQT1JUX01BTlVBTCwKKyAgICBDU0ZCX1BBR0VfQ09ORklHX0VOQUJMRV9SRVBPUlRfQVVUT19SRUpFQ1QsCisgICAgQ1NGQl9QQUdFX0NPTkZJR19UX0NTRkJfVVNFUl9SU1AsCisgICAgQ1NGQl9QQUdFX0NPTkZJR19UX0lHTk9SRV9TQU1FX05VTUJFUl9PRl9DU19TRVJWSUNFX05PVElGSUNBVElPTiwKKyAgICBDU0ZCX1BBR0VfQ09ORklHX01BWAorfSBjc2ZiX3BhZ2VfY29uZmlnX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE5BU19TVl9BTllfT1BFUkFUSU9OX0lOVkFMSUQgPSAwLAorICAgIE5BU19TVl9BTllfT1BFUkFUSU9OX0xPQ0FMX1JFTEVBU0UgPSAxLAorICAgIE5BU19TVl9BTllfT1BFUkFUSU9OX1RSSUNLX1JFTEVBU0UgPSAyLAorICAgIE5BU19TVl9BTllfT1BFUkFUSU9OX1BMTU5fU0VBUkNIID0gNCwgLy8gT25seSBmb3IgVkdNTQorICAgIE5BU19TVl9BTllfT1BFUkFUSU9OX0NBUF9VUERBVEUgPSA4Cit9IG5hc19zdl9hbnlfb3BlcmF0aW9uX2VudW07CisKK3R5cGVkZWYgZW51bQoreworCU5BU19TVl9NQU5JUFVMQVRFX0NPTk5FQ1RJT05fVFJJQ0tfUkVMRUFTRSwKKyAgICBOQVNfU1ZfTUFOSVBVTEFURV9DT05ORUNUSU9OX0xPQ0FMX1JFTEVBU0UsCisgICAgTkFTX1NWX01BTklQVUxBVEVfQ09OTkVDVElPTl9MT0NBTF9SRUxFQVNFX01BTlVBTF9MSVNUCit9IG5hc19zdl9tYW5pcHVsYXRlX2Nvbm5lY3Rpb25fZW51bTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgVkdNTSBJVyAgREVCVUcgRmFjaWxpdHkgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBlbnVtIHsKKyAgICBERUJVR19WR01NX0lXX1NFVF9CUk9BRENBU1RfUkVHTl9VUERBVEVfVFlQRSAgICwKKyAgICBERUJVR19WR01NX0lXX1NFVF9CUk9BRENBU1RfUkVHTl9NU0dfVFlQRSAgICAgICwKKyAgICBERUJVR19WR01NX0lXX1NFVF9CUk9BRENBU1RfUkVHTl9SRUdfVFlQRSAgICAgICwKKyAgICBERUJVR19WR01NX0lXX1NFVF9CUk9BRENBU1RfUkVHTl9ERVRBQ0hfVFlQRSAgICwKKyAgICBERUJVR19WR01NX0lXX1NFVF9CUk9BRENBU1RfUkVHTl9DQVVTRSAgICAgICAgICwKKyAgICBERUJVR19WR01NX0lXX0dFVF9CUk9BRENBU1RfUkVHTl9DQVVTRSAgICAgICAgICwKKyAgICBERUJVR19WR01NX0lXX1NFVF9CUk9BRENBU1RfUkVHTl9BVFRFTVBfQ05UICAgICwKKyAgICBERUJVR19WR01NX0lXX1NFVF9CUk9BRENBU1RfUkVHTl9WT1BTX1NVUFBPUlQgICwKKyAgICBERUJVR19WR01NX0lXX1JFU0VUX0JST0FEQ0FTVF9SRUdOICAgICAgICAgICAgICwKKyAgICBERUJVR19WR01NX0lXX0lTX1BPV0VSX09GRl9ERVRBQ0ggICAgICAgICAgICAgICwKKyAgICBERUJVR19WR01NX0lXX0lTX1ZBTElEX0JST0FEQ0FTVF9OQVNfUFJPQyAgICAgICwKKyAgICBERUJVR19WR01NX0lXX0lTX01PQklMSVRZX1VQREFURV9SRVFVSVJFRCAgICAgICwKKyAgICBERUJVR19WR01NX0lXX0lTX0ZST01fTFRFICAgICAgICAgICAgICAgICAgICAgICwKKyAgICBERUJVR19WR01NX0lXX0lTX0VQU19OQVNfTUVTU0FHRV9SRVFVSVJFRAorfSBkZWJ1Z192Z21tX2l3X3R5cGVfZW51bTsKKworLyogRm9yIGludGVyd29ya2luZyBmcm9tIExURSB0byBOUiwgdGhlcmUgaXMgdGhlIHNhbWUgYWxnb3JpdGhtIHdoYXQgdXNlZCBmb3IgTlIuICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBJTlRfRUlBMD0wLAorICAgIElOVF8xMjhfRUlBMSwKKyAgICBJTlRfMTI4X0VJQTIsCisgICAgSU5UX0VJQTMsCisgICAgSU5UX0VJQTQsCisgICAgSU5UX0VJQTUsCisgICAgSU5UX0VJQTYsCisgICAgSU5UX0VJQTcsCisgICAgSU5UX0VJQV9OT19TRVQKK30gZW1tX2ludGVncml0eV9hbGdvcml0aG1fZW51bTsKKworLyogRm9yIGludGVyd29ya2luZyBmcm9tIExURSB0byBOUiwgdGhlcmUgaXMgdGhlIHNhbWUgYWxnb3JpdGhtIHdoYXQgdXNlZCBmb3IgTlIuICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTkNfRUVBMD0wLAorICAgIEVOQ18xMjhfRUVBMSwKKyAgICBFTkNfMTI4X0VFQTIsCisgICAgRU5DX0VFQTMsCisgICAgRU5DX0VFQTQsCisgICAgRU5DX0VFQTUsCisgICAgRU5DX0VFQTYsCisgICAgRU5DX0VFQTcsCisgICAgRU5DX0VFQV9OT19TRVQKK30gZW1tX2NpcGhlcmluZ19hbGdvcml0aG1fZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBQUkVGRVJfUkFUX1RZUEVfTU9TVF9QUkVGRVJSRUQsCisgICAgUFJFRkVSX1JBVF9UWVBFX1JBVF9PUkRFUgorfSBwcmVmZXJfcmF0X3R5cGVfZW51bTsKK3R5cGVkZWYgZW51bSB7CisgICAgTU1fQ0FMTF9DQVVTRV9OT05FLAorICAgIE1NX0NBTExfQ0FVU0VfU1RBUlQsCisgICAgTU1fQ0FMTF9DQVVTRV9TVUNDRVNTLAorICAgIE1NX0NBTExfQ0FVU0VfRkFJTFVSRSwKKyAgICBNTV9DQUxMX0NBVVNFX1BBR0lOR19HVUFSRF9USU1FUl9FWFBJUkVELAorICAgIE1NX0NBTExfQ0FVU0VfVDMyNDBfVElNRU9VVCwKKyAgICBNTV9DQUxMX0NBVVNFX0FVVEhfRkFJTCwKKyAgICBNTV9DQUxMX0NBVVNFX0FVVEhfUkVKRUNULAorICAgIE1NX0NBTExfQ0FVU0VfQ09OTl9FU1RfRkFJTCwKKyAgICBNTV9DQUxMX0NBVVNFX0xBVV9SRUpFQ1QsCisgICAgTU1fQ0FMTF9DQVVTRV9MQVVfQUNDRVBULAorICAgIE1NX0NBTExfQ0FVU0VfUExNTl9MT1NTX0lORF9SRUNFSVZFRCwKKyAgICBNTV9DQUxMX0NBVVNFX1NJTV9FUlJPUl9JTkRfUkVDRUlWRUQsCisgICAgTU1fQ0FMTF9DQVVTRV9QQUdJTkdfUkVTUE9OU0VfU0VOVCwKKyAgICBNTV9DQUxMX0NBVVNFX1BBR0lOR19CTE9DS0VEX0JZX0FDQ0VTU19CQVJSRUQsCisgICAgTU1fQ0FMTF9DQVVTRV9SUl9SRUxfSU5EX1JFQ0VJVkVELAorICAgIE1NX0NBTExfQ0FVU0VfTFVfQUJOT1JNQUwsCisgICAgTU1fQ0FMTF9DQVVTRV9DTV9TRVJWX1JFSkVDVCwKKyAgICBNTV9DQUxMX0NBVVNFX0FDQ0VTU19DTEFTU19CQVJSRUQsCisgICAgTU1fQ0FMTF9DQVVTRV9UMzIzMF9USU1FT1VULAorfSBtbV9jc19jYWxsX2ZhaWxfY2F1c2VfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBUUllfU1dJVENIX1JBVF9SRVNVTFRfSU5WQUxJRCwKKyAgICBUUllfU1dJVENIX1JBVF9SRVNVTFRfRkFJTAorfSB0cnlfc3dpdGNoX3JhdF9yZXN1bHRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgVkRNX0dNU1NfRkFJTFVSRV9DQVVTRV9OT05FICAgICAgICAgICAgICAgICAgID0gMCwKKyAgICBWRE1fR01TU19GQUlMVVJFX0NBVVNFX1JGX09GRiAgICAgICAgICAgICAgICAgPSAxLAorICAgIFZETV9HTVNTX0ZBSUxVUkVfQ0FVU0VfTk9fQUxMT1dFRF9ET01BSU4gICAgICA9IDIsCisgICAgVkRNX0dNU1NfRkFJTFVSRV9DQVVTRV9NQVgKK30gdmRtX2dtc3NfZmFpbHVyZV9jYXVzZV9lbnVtOworCit0eXBlZGVmIGVudW0geworCUxURV9OT19MT1NTID0gMCwgLy9VRSBpcyBpbiA0RyBub3JtYWwgc2VydmljZQorICAgIExURV9FTlRFUl9TRUFSQ0hJTkcsIC8vNEcgbm9ybWFsIHNlcnZpY2UgY2hhbmdlIHRvIHNlYXJjaGluZyBzdGF0ZQorICAgIExURV9OT1JNQUxfU0VSVklDRV9MT1NTX1dJVEhPVVRfU0VBUkNISU5HLCAvLzRHIG5vcm1hbCBzZXJ2aWNlIGNoYW5nZSB0byBsaW1pdGVkIHNlcnZpY2UKKyAgICBMVEVfSVJBVF9HU01fVU1UUywgLy80RyBub3JtYWwgc2VydmljZSBjaGFuZ2UgdG8gMjNHIG5vcm1hbCBzZXJ2aWNlCit9IGx0ZV9ub3JtYWxfc2VydmljZV9sb3NzX3JlYXNvbl9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIE5SX05PX0xPU1MgPSAwLCAvL1VFIGlzIGluIDVHIG5vcm1hbCBzZXJ2aWNlCisgICAgTlJfRU5URVJfU0VBUkNISU5HLCAvLzVHIG5vcm1hbCBzZXJ2aWNlIGNoYW5nZSB0byBzZWFyY2hpbmcgc3RhdGUKKyAgICBOUl9OT1JNQUxfU0VSVklDRV9MT1NTX1dJVEhPVVRfU0VBUkNISU5HLCAvLzVHIG5vcm1hbCBzZXJ2aWNlIGNoYW5nZSB0byBsaW1pdGVkIHNlcnZpY2UKKyAgICBOUl9JUkFUX0dTTV9VTVRTX0xURSwgLy81RyBub3JtYWwgc2VydmljZSBjaGFuZ2UgdG8gMjM0RyBub3JtYWwgc2VydmljZQorfSBucl9ub3JtYWxfc2VydmljZV9sb3NzX3JlYXNvbl9lbnVtOworCit0eXBlZGVmIGVudW0gRkREX3Bvd2VyTW9uaXRvclR5cGUKK3sKKyAgICBGRERfTUVNRV9DRUxMX1BPV0VSX01PTklUT1JfUlNDUCwKKyAgICBGRERfTUVNRV9DRUxMX1BPV0VSX01PTklUT1JfRUNOTywKKyAgICBGRERfTUVNRV9DRUxMX1BPV0VSX01PTklUT1JfTk9ORSwKKyAgICBGRERfTUVNRV9DRUxMX1BPV0VSX01PTklUT1JfVFlQRV9NQVggPSBGRERfTUVNRV9DRUxMX1BPV0VSX01PTklUT1JfTk9ORQorfSBGRERfcG93ZXJNb25pdG9yVHlwZTsKKwordHlwZWRlZiBlbnVtCit7CisJRVNNX1BSRUNIRUNLX1BBU1MgCQkJCQkJCQkJCT0gMCwKKwlFU01fUFJFQ0hFQ0tfU0lNX0lEWF9PVVRfT0ZfUkFOR0UgCQkJCQkJPSAxLAorCUVTTV9QUkVDSEVDS19TTUlDX0VQU0JfQ09OVEVYVF9QT0lOVEVSX1NIT1VMRF9OT1RfTlVMTCAJPSAyLAorCUVTTV9QUkVDSEVDS19QRFBfQ1RYVF9QVFJfU0hPVUxEX05PVF9OVUxMIAkJCQk9IDMsCisJRVNNX1BSRUNIRUNLX0VCSV9WQUxVRV9TSE9VTERfQkVfVkFMSUQJCQkgCQk9IDQsCisJRVNNX1BSRUNIRUNLX0NVUlJFTlRfU0lNX0RQQ19DVFhUX1BUUl9TSE9VTERfTk9UX05VTEwgCT0gNSwKKwlFU01fUFJFQ0hFQ0tfQVBOX0xFTkdUSF9TSE9VTERfTk9UX05VTEwgCQkJCT0gNiwKKwlFU01fUFJFQ0hFQ0tfQkVBUkVSX1NIT1VMRF9NQVBQSU5HX1JCX0lEWAkJCQk9IDcsCisJRVNNX1BSRUNIRUNLX1FPU19QQVJBTUVURVJfU0hPVUxEX0JFX1ZBTElECQkJCT0gOCwKKwlFU01fUFJFQ0hFQ0tfT1RIRVJfRkFJTFMgCQkJCQkJCQk9IDksCisgICAgRVNNX1BSRUNIRUNLX0VNTV9JU19ERVJFR0lTVEVSRCAgICAgICAgICAgICAgICAgICAgICAgICA9IDEwLAorfSBlc21fNWc0X3ByZWNoZWNrX3JldF92YWx1ZV9lbnVtOworCisKK3R5cGVkZWYgZW51bSB7CisgICAgUEFNX0FDQ0VTU19HUkFOVEVEID0gMCwKKwlQQU1fQUNDRVNTX1JFSkVDVF9CQUNLX09GRl9USU1FUl9SVU5OSU5HX1dJVEhfVkFMVUUsCisJUEFNX0FDQ0VTU19SRUpFQ1RfQkFDS19PRkZfVElNRVJfREVBQ1RJVkFURUQsCisJUEFNX0FDQ0VTU19SRUpFQ1RfT1RIRVJTIC8vIEJhY2stb2ZmIHRpbWVyIG5vdCBleGlzdGluZyBidXQgY29uZ2VzdGVkIGR1ZSB0byBzb21lIG90aGVyIGNhdXNlcyAoZXguICM0NikKK30gcGFtX2FjY2Vzc19jaGVja19yZXN1bHRfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBJUkFUX0hBTkRPRkZfU1lTTE9TUyA9IDAsCisgICAgSVJBVF9IQU5ET0ZGX1JFRElSRUNUSU9OLAorICAgIElSQVRfSEFORE9GRl9SRVNFTEVDVElPTiwKKyAgICBJUkFUX0hBTkRPRkZfSElHSF9QUklPUklUWV9SRVNFTEVDVElPTiwKKyAgICBJUkFUX0hBTkRPRkZfTk9ORSA9IDB4RkYKK30gaXJhdF9oYW5kb2ZmX2NhdXNlX2VudW07CisKKyNpZiBkZWZpbmVkKF9fRUNBTExfU1VQUE9SVF9fKSB8fCBkZWZpbmVkKF9fTkdfRUNBTExfU1VQUE9SVF9fKQordHlwZWRlZiBlbnVtIHsKKyAgICBFTlRFUl9FQ0FMTF9JTkFDVElWSVRZX1BST0NFRFVSRSA9IDAsICAvLyBkZXJlZ2lzdGVyIGZyb20gTlcsIGVudGVyIHRoZSBlQ2FsbCBpbmFjdGl2aXR5IHByb2NlZHVyZQorICAgIExFQVZFX0VDQUxMX0lOQUNUSVZJVFlfUFJPQ0VEVVJFICAgICAgIC8vIHJlZ2lzdGVyIHRvIE5XLCBsZWF2ZSB0aGUgZUNhbGwgaW5hY3Rpdml0eSBwcm9jZWR1cmUgKG5vdCBzdXBwb3J0LCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSkKK30gZWNhbGxfcmVnaXN0cmF0aW9uX3N0YXRlX2VudW07CisjZW5kaWYKKworCit0eXBlZGVmIGVudW0geworICAgIE5XU0VMX0VVVFJBTl9DQVBfVVBEQVRFX05PTkUgPSAwLAorICAgIE5XU0VMX0VVVFJBTl9DQVBfVVBEQVRFX1dBSVQKK31ldXRyYW5fY2FwX3VwZGF0ZV93YWl0X3N0YXR1c19lbnVtIDsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBUQV9MSVNUX1RZUEVfMDAgPSAweDAwLAorICAgIFRBX0xJU1RfVFlQRV8wMSA9IDB4MjAsCisgICAgVEFfTElTVF9UWVBFXzEwID0gMHg0MAorfSB2Z3NfdGFfbGlzdF90eXBlX2VudW07CisjZW5kaWYgLy8gaWZuZGVmIF9sM19JTkNfRU5VTVNfSApkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDNfaW5jX2xvY2FsLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sM19pbmNfbG9jYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTA3YjM4Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDNfaW5jX2xvY2FsLmgKQEAgLTAsMCArMSwxMjI2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqIEwzX0lOQ19TVFJVQ1QuSAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNQVVJCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgY29tbW9uIGVudW1zIG9mIEwzLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICAgICAgICAgICAgIEhJU1RPUlkKKyAqIEJlbG93IHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFVwcGVyIHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiAgVGhpcyBwcm9kdWN0IGhhcyBiZWVuIGRldmVsb3BlZCB1c2luZyBhIHByb3RvY29sIHN0YWNrCisqICBkZXZlbG9wZWQgYnkgU2Fza2VuIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIExpbWl0ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfTDNfSU5DX0xPQ0FMX0gKKyNkZWZpbmUgX0wzX0lOQ19MT0NBTF9ICisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorLy8jaW5jbHVkZSAia2FsX25vbl9zcGVjaWZpY19nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAibDNfaW5jX2VudW1zLmgiCisjaW5jbHVkZSAibWNkX2wzX2luY19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfc3RydWN0LmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW1fcHVibGljLmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKyNpbmNsdWRlICJpcmF0X2NvbW1vbl9lbnVtcy5oIgorI2luY2x1ZGUgImdsb2JhbF90eXBlLmgiIAorI2luY2x1ZGUgImwzX2luY19lbnVtc19wdWJsaWMuaCIKKyNpbmNsdWRlICJnbXNzX3B1YmxpYy5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvbnN0YW50IERlZmluaXRpb25zCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBSQVQgY2FwYWJpbGl0eSBjb25maWd1cmF0aW9uICovCisjaWYgZGVmaW5lZCAoX19HU01fUkFUX18pCisjZGVmaW5lIElTX0dTTV9SQVRfU1VQUE9SVEVEIDEKKyNlbHNlCisjZGVmaW5lIElTX0dTTV9SQVRfU1VQUE9SVEVEIDAKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX19VTVRTX1JBVF9fKQorI2RlZmluZSBJU19VTVRTX1JBVF9TVVBQT1JURUQgMQorI2Vsc2UKKyNkZWZpbmUgSVNfVU1UU19SQVRfU1VQUE9SVEVEIDAKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX19MVEVfUkFUX18pCisjZGVmaW5lIElTX0xURV9SQVRfU1VQUE9SVEVEIDEKKyNlbHNlCisjZGVmaW5lIElTX0xURV9SQVRfU1VQUE9SVEVEIDAKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX19OUl9SQVRfXykKKyNkZWZpbmUgSVNfTlJfUkFUX1NVUFBPUlRFRCAxCisjZWxzZQorI2RlZmluZSBJU19OUl9SQVRfU1VQUE9SVEVEIDAKKyNlbmRpZgorCisjZGVmaW5lIE1BWF9TVVBQT1JURURfUkFUIChJU19HU01fUkFUX1NVUFBPUlRFRCtJU19VTVRTX1JBVF9TVVBQT1JURUQrSVNfTFRFX1JBVF9TVVBQT1JURUQrSVNfTlJfUkFUX1NVUFBPUlRFRCkKKworI2lmIE1BWF9TVVBQT1JURURfUkFUID09IDAKKyNlcnJvciAiU2hhbGwgYXQgbGVhc3QgZGVmaW5lIDEgdmFsaWQgUkFUISIKKyNlbmRpZiAvKiBSQVQgY2FwYWJpbGl0eSBjb25maWd1cmF0aW9uICovCisKKyNkZWZpbmUgUkFDX01BWF9OVU1fTElTVEVEX1BMTU5TIDE2Kk1BWF9TVVBQT1JURURfUkFUICAgCisKKyNkZWZpbmUgU1lTX01BWF9NUlVfTElTVF9OVU0gMTIKKworI2RlZmluZSBNQVhfRk9SQklEREVOX05FVFdPUktfTlVNIDMyCisKKyNkZWZpbmUgTUFYX1JFRElSRUNUX0ZSRVFfTlVNIDYKKworI2RlZmluZSBHTVNTX0xURV9VTkFWQUlMX0RCX1NJWkUgMTI4CisKKyNkZWZpbmUgTUFYX1BMTU5fQkFORF9OVU0gNDgKKworI2RlZmluZSBOUlJDX0tBTUZfTEVOR1RIICgzMikKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBUeXBlIERlZmluaXRpb25zCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgUEFDS0VUX0ZJTFRFUl9DT05URU5UX0xFTiAgIDUzICAvKiBQb3lpbmc6IDI5KygzMi04KSAqLworCisvLyBMT0NBTF9QQVJBX0hEUiArIGthbF91aW50OCBuc2FwaSAoU00gY29kZSBhc3N1bWUgbnNhcGkgaXMgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiBzb21lIHByaW1pdGl2ZSkKKyNkZWZpbmUgTlNBUElfU1RSVUNUX0hEUiBcCisgICBMT0NBTF9QQVJBX0hEUiBcCisgICBrYWxfdWludDggbnNhcGk7CisKKyNkZWZpbmUgTUFYX0xFTl9PRl9BTExfQUxMT1dFRF9OU1NBSSAxNDQKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCBwZmk7CisgICAga2FsX3VpbnQ4IGVwaTsKKyAgICBrYWxfdWludDggY29udGVudHNfbGVuOyAvKiBpbiBieXRlcyovCisgICAga2FsX3VpbnQ4IGNvbnRlbnRzW1BBQ0tFVF9GSUxURVJfQ09OVEVOVF9MRU5dOworfSBwYWNrZXRfZmlsdGVyX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCB0ZnRfb3BfY29kZTsKKyAgICBrYWxfdWludDggc3BhcmU7CisgICAga2FsX3VpbnQ4IG51bV9wYWNrZXRfZmlsdGVyczsKKyAgICBwYWNrZXRfZmlsdGVyX3N0cnVjdCBwYWNrZXRfbGlzdFs4XTsKK30gdGZ0X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50MTYgICAgICByZXFfbjIwMXU7IC8vZXJpY2EgMjAwNzAxMTIKK30gcGRwX2F1eGluZm9fc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDggbGVuZ3RoOyAvKiBMRU5HVEgqLworICAgIGthbF91aW50OCBkaWdpdDA7IC8qIERJR0lUIDAqLworICAgIGthbF91aW50OCBvZGRfb3JfZXZlbjsgLyogT0REIE9SIEVWRU4qLworICAgIGthbF91aW50OCBpZGVudGl0eV90eXBlOyAvKiBJREVOVElUWSBUWVBFKi8KKyAgICBrYWxfdWludDggZGlnaXRfYnl0ZVs3XTsKK30gaW1zaV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDE2IGJjY2hfbGlzdFs4XTsKK30gYmNjaHNfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDggbGVuZ3RoOworICAgIGthbF91aW50OCBkaWdpdDA7CisgICAga2FsX3VpbnQ4IG9kZF9vcl9ldmVuOworICAgIGthbF91aW50OCBpZGVudGl0eV90eXBlOworICAgIGthbF91aW50OCBkaWdpdF9ieXRlWzddOworfSBpbWVpX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHBsbW5faWRfc3RydWN0IHBsbW5faWQ7CisgICAga2FsX3VpbnQ4IGxhX2NvZGVbMl07CisgICAga2FsX3VpbnQ4IHJhX2NvZGU7ICAvKiBSQSBDT0RFKi8KKyAgICBrYWxfdWludDggdGFfY29kZVszXTsgCisgICAga2FsX3VpbnQzMiBjZWxsX2lkOyAvKiBDRUxMIElEKi8KKyAgICBrYWxfdWludDE2IGJhbmR3aWR0aDsKKyAgICBrYWxfYm9vbCBpc19jc2dfY2VsbDsKKyAgICBjc2dfaW5mb19zdHJ1Y3QgY3NnX2luZm87ICAgIAorI2lmZGVmIF9fVk9MVEVfU1VQUE9SVF9fCisgICAga2FsX2Jvb2wgaW1zX2VtZXJnZW5jeV9zdXBwb3J0OworI2VuZGlmCisjaWZkZWYgX19OR19FQ0FMTF9TVVBQT1JUX18KKyAgICBrYWxfYm9vbCBlY2FsbF9vdmVyX2ltc19zdXBwb3J0OworI2VuZGlmCit9IGNlbGxfaW5mb19zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfYm9vbCAgaXNfY2VsbF92YWxpZDsKKyAgICBrYWxfdWludDMyIGNlbGxfaWQ7CisgICAga2FsX2Jvb2wgIGlzX2xhX3ZhbGlkOworICAgIGthbF91aW50OCBsYV9jb2RlWzJdOyAKKyAgICBwbG1uX2lkX3N0cnVjdCBwbG1uX2lkOworfSBlbWNfZm9yYmlkZGVuX253X2xpc3Rfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50MzIgY2VsbF9pZDsKKyAgICBrYWxfdWludDggIGxhX2NvZGVbMl07CisgICAga2FsX3VpbnQ4ICByYV9jb2RlOworCisgICAgLyogRGVmaW5lZCBieSBJT1Qgc3BlYyAocmVzZXJ2ZWQpICovCisgICAga2FsX3VpbnQ4ICBhY3RpdmVfdGltZTsKKyAgICBrYWxfdWludDggIHBlcmlvZGljX3JhdTsKK30gZ3NtX2NlbGxfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50MzIgY2VsbF9pZDsKKyAgICBrYWxfdWludDggIGxhX2NvZGVbMl07CisgICAga2FsX3VpbnQ4ICByYV9jb2RlOworCisgICAgLyogRGVmaW5lZCBieSBJT1Qgc3BlYyAocmVzZXJ2ZWQpICovCisgICAga2FsX3VpbnQ4ICBhY3RpdmVfdGltZTsKKyAgICBrYWxfdWludDggIHBlcmlvZGljX3JhdTsKK30gdW10c19jZWxsX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDMyIGNlbGxfaWQ7CisgICAga2FsX3VpbnQ4ICB0YV9jb2RlWzJdOworCisgICAgLyogRGVmaW5lZCBieSBJT1Qgc3BlYyAocmVzZXJ2ZWQpICovCisgICAga2FsX3VpbnQ4ICBhY3RpdmVfdGltZTsKKyAgICBrYWxfdWludDggIHBlcmlvZGljX3RhdTsKKworICAgIGthbF91aW50MTYgYmFuZHdpZHRoOworICAgIGthbF9ib29sICAgaW1zX2VtZXJnZW5jeV9zdXBwb3J0OworCisgICAgLyogRU5EQyB1c2FnZSBmb3IgNUcgd2l0aGluIDRHICovCisgICAgZW5kY19zaWJfc3RhdHVzX2VudW0gICBlbmRjX3NpYl9zdGF0dXM7LyogImVuZGNfc2liX3N0YXR1cyIgd2lsbCBiZSBzZXQgdG8gIkVORENfU0lCX1NUQVRVU19TVVBQT1JUIiBpZiB0aGUgY29ycmVzcG9uZGluZyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiaXQgb2Ygc2VsZWN0ZWQgUExNTiBpbiBQTE1OLUluZm9MaXN0LXIxNSBmcm9tIFNJQjIgaXMgVFJVRS4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAga2FsX2Jvb2wgICBlbmRjX2F2YWlsYWJsZTsgICAgICAgICAgICAgLyogImVuZGNfYXZhaWxhYmxlIiB3aWwgYmUgc2V0IHRvIFRSVUUgaWYgYW55IGJpdCBpbiBQTE1OLUluZm9MaXN0LXIxNSBmcm9tIFNJQjIgaXMgVFJVRSAqLworI2lmZGVmIF9fTkdfRUNBTExfU1VQUE9SVF9fCisgICAga2FsX2Jvb2wgZWNhbGxfb3Zlcl9pbXNfc3VwcG9ydDsKKyNlbmRpZiAvKiBfX05HX0VDQUxMX1NVUFBPUlRfXyAqLworfSBsdGVfY2VsbF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgLyogNUcgZXh0ZW5kcyB0aGUgQ2VsbCBJRCB0byAzNi1iaXQgKi8KKyAgICBrYWxfdWludDY0IGNlbGxfaWQ7CisgICAga2FsX3VpbnQ4ICB0YV9jb2RlWzNdOworCisgICAga2FsX2Jvb2wgaW1zX2VtZXJnZW5jeV9zdXBwb3J0OworfSBucl9jZWxsX3N0cnVjdDsKKwordHlwZWRlZiB1bmlvbiB7CisgICAgZ3NtX2NlbGxfc3RydWN0ICAgZ3NtX2NlbGw7CisgICAgdW10c19jZWxsX3N0cnVjdCAgdW10c19jZWxsOworICAgIGx0ZV9jZWxsX3N0cnVjdCAgIGx0ZV9jZWxsOworICAgIG5yX2NlbGxfc3RydWN0ICAgIG5yX2NlbGw7Cit9IGNlbGxfaW5mb191bmlvbjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHJhdF9lbnVtICAgICAgICAgcmF0OworICAgIGNlbGxfaW5mb191bmlvbiAgY2VsbF9pbmZvOworICAgIAorICAgIGthbF9ib29sICAgICAgICAgaXNfY3NnX2NlbGw7CisgICAgY3NnX2luZm9fc3RydWN0ICBjc2dfaW5mbzsKKyAgICAKKyAgICByYXRfZHVwbGV4X3R5cGVfZW51bSAgICBkdXBsZXhfdHlwZTsKKworICAgIHBsbW5faWRfc3RydWN0IHBsbW5faWQ7CisgICAga2FsX2Jvb2wgICAgICAgaXNfb25faHBsbW47CisgICAga2FsX2Jvb2wgICAgICAgaXNfaG9tZV9jb3VudHJ5OyAvL0FUJlQgcmVxdWlyZW1lbnQgQ0RSLVdpRmktMTU2MDogV2lGaSBuZWVkIHRvIGtub3cgZG9tZXN0aWMgcm9hbWluZyBhbmQgaW50ZXJuYXRpb25hbCByb2FtaW5nCit9IGNlbGxfaW5mb19hbmRfcmF0X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sgICAgCisgICAgaW50ZWdfcHJvdGVjdF9zdGF0dXNfZW51bSAgICAgICAgaXNfaW50ZWdfcHJvdGVjdGVkOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBpbnZhbGlkX2NzX3NpbV9jb3VudGVyOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBpbnZhbGlkX3BzX3NpbV9jb3VudGVyOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICBpc19kb3NfZW5oYW5jZV9lbmFibGU7IAorfWRvc19lbmhhbmNlX2luZm9fc3RydWN0OworCit0eXBlZGVmIGVudW0KK3sKKyAgICBNU19OVUxMX1NUQVRFID0gMCwKKyAgICBNU19SRUFEWV9TVEFURSwKKyAgICBNU19TVEFOREJZX1NUQVRFLAorICAgIE1TX0ZPUkNFRF9UT19TVEFOREJZX1NUQVRFCit9Z21tX21zX3N0YXRlX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgQ0VMTF9DT05ORUNUSU9OX05PTkUgPSAwLCAgICAgICAgICAgLy8gQ2VsbCBpcyBub3QgYSBzZXJ2aW5nIGNlbGwuCisgICAgQ0VMTF9DT05ORUNUSU9OX1BSSU1BUllfU0VSVklORywgICAgLy8gVUUgaGFzIGNvbm5lY3Rpb24gdG8gY2VsbCBmb3Igc2lnbmFsbGluZyBhbmQgcG9zc2libHkgZGF0YSAoM0dQUCAzNi4zMzEsIDI1LjMzMSkuCisgICAgQ0VMTF9DT05ORUNUSU9OX1NFQ09OREFSWV9TRVJWSU5HLCAgLy8gVUUgaGFzIGNvbm5lY3Rpb24gdG8gY2VsbCBmb3IgZGF0YSAoM0dQUCAzNi4zMzEsIDI1LjMzMSkuCit9IGNlbGxfY29ubmVjdGlvbl9zdGF0dXNfZW51bTsKKworLyo1RyBQYXJ0Ki8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgLyogQ2VsbCBJZGVudGl0eSBOUiAqLworICAgIGthbF91aW50MTYgICAgICAgICAgcGNpOyAgICAgICAgICAgICAgICAvLyBQQ0lECisKKyAgICAvKioKKyAgICAgKiBOUiBDZWxsIElkZW50aXR5IGluIHJhbmdlIFswLCA2ODcxOTQ3NjczNV0gKDM2IGJpdHMpIGRlc2NyaWJlZCBpbiAzR1BQIFRTIDM4LjMzMSwgd2hpY2gKKyAgICAgKiB1bmFtYmlndW91c2x5IGlkZW50aWZpZXMgYSBjZWxsIHdpdGhpbiBhIFBMTU4uIFRoaXMgdmFsdWUgbXVzdCBiZSB2YWxpZCBmb3IgcmVnaXN0ZXJlZCBvcgorICAgICAqIGNhbXBlZCBjZWxsczsgTE9OR19NQVggKDJeNjMtMSkgbWVhbnMgaW52YWxpZC91bnJlcG9ydGVkLgorICAgICAqLworICAgIGthbF91aW50OCAgICAgICAgICAgY2VsbF9pZFs1XTsgICAgICAgICAvL0NJCisgICAga2FsX2Jvb2wgICAgICAgICAgICByZWdfc3RhdHVzOyAgICAgICAgIC8vIDAgZm9yIG5vbi1zZXJ2aW5nIGNlbGw7IDEgZm9yIHNlcnZpbmcgY2VsbAorICAgIGNlbGxfY29ubmVjdGlvbl9zdGF0dXNfZW51bSAgY2VsbF9jb25uZWN0aW9uX3N0YXR1czsKKyAgICBOUkFSRkNOICAgICAgICAgICAgIHNzYl9hcmZjbjsKKworICAgIC8qIFNpZ25hbCBTdHJlbmd0aCBOUiAqLworICAgIGthbF9pbnQxNiAgICAgICAgICAgc3NfcnNycF9pbl9xZGJtOyAgICAvLyBSU1JQLCAweDgwMDAgZm9yIGludmFsaWQKKyAgICBrYWxfaW50MTYgICAgICAgICAgIHNzX3JzcnFfaW5fcWRiOyAgICAgLy8gUlNSUSwgMHg4MDAwIGZvciBpbnZhbGlkCisgICAga2FsX2ludDE2ICAgICAgICAgICBzc19zaW5yX2luX3FkYjsgICAgIC8vIFNJTlIsIDB4ODAwMCBmb3IgaW52YWxpZAorCisgICAga2FsX2ludDE2ICAgICAgICAgICBjc2lfcnNycF9pbl9xZGJtOyAgIC8vIG5vdCBzdXBwb3J0LCAweDgwMDAKKyAgICBrYWxfaW50MTYgICAgICAgICAgIGNzaV9yc3JxX2luX3FkYjsgICAgLy8gbm90IHN1cHBvcnQsIDB4ODAwMAorICAgIGthbF9pbnQxNiAgICAgICAgICAgY3NpX3NpbnJfaW5fcWRiOyAgICAvLyBub3Qgc3VwcG9ydCwgMHg4MDAwCit9IGNlbGxfaW5mb181Z19vdXRwdXRfc3RydWN0OworCisvKjRHIFBhcnQqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICAvKiBDZWxsIElkZW50aXR5IExURSAqLworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICAgcGNpOyAgICAgICAgICAgICAgIC8vIFBDSUQKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgIGNlbGxfaWQ7ICAgICAgICAgICAvLyBDSQorICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgcmVnX3N0YXR1czsgICAgICAgIC8vIDAgZm9yIG5vbi1zZXJ2aW5nIGNlbGw7IDEgZm9yIHNldmluZyBjZWxsCisgICAgY2VsbF9jb25uZWN0aW9uX3N0YXR1c19lbnVtICBjZWxsX2Nvbm5lY3Rpb25fc3RhdHVzOworICAgIEVBUkZDTiAgICAgICAgICAgICAgICAgICAgICAgZGxfYXJmY247ICAgCisgICAgRUFSRkNOICAgICAgICAgICAgICAgICAgICAgICB1bF9hcmZjbjsgICAKKyAgICAgLyogU2lnbmFsIFN0cmVuZ3RoIExURSAqLworICAgIGthbF9pbnQxNiAgICAgICAgICAgICAgICAgICAgcnNzaTsgICAgICAgICAgICAgIC8vIFJTU0kKKyAgICBrYWxfaW50MTYgICAgICAgICAgICAgICAgICAgIHJzcnA7ICAgICAgICAgICAgICAvLyBSU1JQCisgICAga2FsX2ludDE2ICAgICAgICAgICAgICAgICAgICByc3JxOyAgICAgICAgICAgICAgLy8gUlNSUQorICAgIGthbF9pbnQxNiAgICAgICAgICAgICAgICAgICAgc25yOyAgICAgICAgICAgICAgIC8vIFNOUgorfSBjZWxsX2luZm9fNGdfb3V0cHV0X3N0cnVjdDsKKworLyozRyBQYXJ0Ki8KK3R5cGVkZWYgc3RydWN0IAoreworICAgIC8qIENlbGwgSWRlbnRpdHkgVU1UUyovCisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgICBwc2M7ICAgICAgICAgICAgICAgICAvLyBQU0MKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgIGNlbGxfaWQ7ICAgICAgICAgICAgIC8vIENJCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICByZWdfc3RhdHVzOyAgICAgICAgICAvLyBSZWdpc3RyYXRpb24gU3RhdHVzIChTZXJ2aW5nIENlbGwvTm9uIFNlcnZpbmcgY2VsbCkKKyAgICBjZWxsX2Nvbm5lY3Rpb25fc3RhdHVzX2VudW0gIGNlbGxfY29ubmVjdGlvbl9zdGF0dXM7CisgICAgdW10c19kdXBsZXhfbW9kZV90eXBlICAgICAgICB1bXRzX2R1cGxleF9tb2RlOyAgICAvLyAgRHVwbGV4IG1vZGUoVU1UU19XQ0RNQV9EVVBMRVhfTU9ERSkKKyAgICBFQVJGQ04gICAgICAgICAgICAgICAgICAgICAgIGRsX2FyZmNuOyAgIAorICAgIEVBUkZDTiAgICAgICAgICAgICAgICAgICAgICAgdWxfYXJmY247CisgICAgLyogU2lnbmFsIFN0cmVuZ3RoIFVNVFMqLyAKKyAgICBrYWxfaW50MTYgICAgICAgICAgICAgICAgICAgIHJzY3A7ICAgICAgICAgICAgICAgIC8vIHJzY3AKKyAgICBrYWxfaW50MTYgICAgICAgICAgICAgICAgICAgIGVjbm87ICAgICAgICAgICAgICAgIC8vIEVjTk8KKyAgICBrYWxfaW50MzIgICAgICAgICAgICAgICAgICAgIHJzc2k7ICAgICAgICAgICAgICAgIC8vIFJTU0kKKyAgIAorfSBjZWxsX2luZm9fM2dfb3V0cHV0X3N0cnVjdDsKKworLyogMkcgUGFydCovCit0eXBlZGVmIHN0cnVjdAoreworICAgIC8qIENlbGwgSWRlbnRpdHkgMkcqLworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICAgY2VsbF9pZDsgICAgICAgICAvLyBDSQorICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICAgZ3NtX2JzaWM7ICAgCisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgICBnc21fYXJmY247IAorICAgIGNlbGxfY29ubmVjdGlvbl9zdGF0dXNfZW51bSAgY2VsbF9jb25uZWN0aW9uX3N0YXR1czsKKyAgICAvKiBTaWduYWwgU3RyZW5ndGggMkcgKi8KKyAgICBrYWxfaW50MTYgICAgICAgICAgICAgICAgICAgIHJzc2k7ICAgICAgICAgICAgLy9SU1NJCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICByZWdfc3RhdHVzOyAgICAgIC8vIDA6IG5vbi1TZXJ2aW5nIGNlbGw7IDE6IFNlcnZpbmcgY2VsbAorIAorfSBjZWxsX2luZm9fMmdfb3V0cHV0X3N0cnVjdDsKKwordHlwZWRlZiB1bmlvbgoreworICAgIGNlbGxfaW5mb18yZ19vdXRwdXRfc3RydWN0IHBsbW5fbGlzdF8yZ19vdXRwdXQ7CisgICAgY2VsbF9pbmZvXzNnX291dHB1dF9zdHJ1Y3QgcGxtbl9saXN0XzNnX291dHB1dDsKKyAgICBjZWxsX2luZm9fNGdfb3V0cHV0X3N0cnVjdCBwbG1uX2xpc3RfNGdfb3V0cHV0OworICAgIGNlbGxfaW5mb181Z19vdXRwdXRfc3RydWN0IHBsbW5fbGlzdF81Z19vdXRwdXQ7Cit9IGNlbGxfaW5mb19vdXRwdXRfdW5pb25fdHlwZTsKKworLyogVUFTL0dBUyA8LT4gUkFUQ00gYmVnaW4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBwbG1uX2lkX3N0cnVjdCAgIHBsbW5faWQ7CisgICAga2FsX3VpbnQ4ICAgICAgICBsYV9vcl90YV9jb2RlWzNdOworICAgIGthbF9pbnQxNiAgICAgICAgcG93ZXJfbGV2ZWw7CisgICAga2FsX2Jvb2wgICAgICAgICBtYXlfc3VpdGFibGVfY2VsbF9leGlzdDsgICAKKyAgICAgICAgICAgICAgICAgICAgIC8vVFJVRSgxKSBmb3Igc3VpdGFibGUgY2VsbCBtYXkgZXhpc3Q7CisgICAgICAgICAgICAgICAgICAgICAvL0ZBTFNFKDApIGZvciBubyBzdWl0YWJsZSBjZWxsIGV4aXN0LgorICAgIGthbF9ib29sICAgICAgICAgbWF5X3N1aXRhYmxlX2NlbGxfZXhpc3RfaGlnaGVyX3ByaTsKKyAgICBsdGVfZHVwbGV4X3R5cGVfZW51bSAgICBsdGVfdHlwZTsKKyNpZmRlZiBfX1ZPTFRFX1NVUFBPUlRfXworICAgIGthbF9ib29sICAgICAgICAgaW1zX2VtZXJnZW5jeV9zdXBwb3J0OworI2VuZGlmCisjaWZkZWYgX19OR19FQ0FMTF9TVVBQT1JUX18KKyAgICBrYWxfYm9vbCAgICAgICAgIGVjYWxsX292ZXJfaW1zX3N1cHBvcnQ7CisjZW5kaWYgLyogX19OR19FQ0FMTF9TVVBQT1JUX18gKi8KKyAgICBrYWxfYm9vbCAgICAgICAgIG5vdF9zdWl0YWJsZV9mb3Jfc2VsZWN0OworCSAgICAgICAgICAgICAgICAgLy8gQVMgd2lsbCByZXBvcnQgdGhpcyBmbGFnIGFjY29yZGluZyB0byBTQlBfRElTUExBWV9OT1RfU0VMRUNUQUJMRV9QTE1OIGFuZCBjZWxsIHN0YXR1cworICAgIGthbF91aW50MzIgICAgICAgdGltZV9zY2FuX3N0YXJ0OworICAgIGthbF91aW50MzIgICAgICAgdGltZV9zY2FuX2VuZDsKKyAgICBrYWxfdWludDE2ICAgICAgIGJhbmRfaW5kOworICAgIGVuZGNfc2liX3N0YXR1c19lbnVtICAgICAgICBlbmRjX3NpYl9zdGF0dXM7IC8qIHVwcGVyTGF5ZXJJbmRpY2F0aW9uLXIxNSBpbiBTSUIyICovCisgICAgY2VsbF9pbmZvX291dHB1dF91bmlvbl90eXBlIHBsbW5fbGlzdF9vdXRwdXQ7Cit9IGF2YWlsYWJsZV9wbG1uX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgcGxtbl9jb3VudDsKKyAgICBwbG1uX2lkX3JhdF9zdHJ1Y3QgICAgICAgICAgICAgIHBsbW5faWRfcmF0W1JBQ19NQVhfTlVNX0xJU1RFRF9QTE1OU107CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICBsYV9jb2RlW1JBQ19NQVhfTlVNX0xJU1RFRF9QTE1OU11bM107CisgICAgbndzZWxfcGxtbl9saXN0X3N0YXR1c19lbnVtICAgICBzdGF0dXNbUkFDX01BWF9OVU1fTElTVEVEX1BMTU5TXTsKKwllbmRjX3NpYl9zdGF0dXNfZW51bSAgICAgICAgICAgIGVuZGNfc2liX3N0YXR1c1tSQUNfTUFYX05VTV9MSVNURURfUExNTlNdOyAvKiB1cHBlckxheWVySW5kaWNhdGlvbi1yMTUgaW4gU0lCMiAqLworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgbWF5X3N1aXRhYmxlX2NlbGxfZXhpc3RbUkFDX01BWF9OVU1fTElTVEVEX1BMTU5TXTsKKyAgICBhdmFpbGFibGVfcGxtbl9zdHJ1Y3QgICAgICAgICAgIGF2YWlsYWJsZV9saXN0W1JBQ19NQVhfTlVNX0xJU1RFRF9QTE1OU107Cit9IHJhY19wbG1uX2xpc3Rfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAga2FsX3VpbnQ4ICAgICAgICBwbG1uX2NvdW50OworICAgIGthbF91aW50OCAgICAgICAgaGlnaF9xdWFsaXR5X3BsbW5fY291bnQ7CisgICAgYXZhaWxhYmxlX3BsbW5fc3RydWN0IGF2YWlsYWJsZV9wbG1uW01BWF9OVU1fUExNTl9QRVJfUkFUXTsKK30gYXNfcGxtbl9saXN0X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHBsbW5faWRfcmF0X3N0cnVjdCBwbG1uX2lkX3JhdDsKKyAgICBrYWxfdWludDggY3NnX2NvdW50OworICAgIGNzZ19pbmZvX3N0cnVjdCAqY3NnX2luZm9fbGlzdDsKK30gYXZhaWxhYmxlX3BsbW5fY3NnX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCBwbG1uX2NvdW50OworICAgIGF2YWlsYWJsZV9wbG1uX2NzZ19zdHJ1Y3QgYXZhaWxhYmxlX3BsbW5fY3NnW01BWF9OVU1fUExNTl9QRVJfUkFUXTsKK30gYXNfY3NnX2xpc3Rfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCBwbG1uX2NvdW50OworICAgIGF2YWlsYWJsZV9wbG1uX2NzZ19zdHJ1Y3QgYXZhaWxhYmxlX3BsbW5fY3NnW01BWF9OVU1fUExNTl9QRVJfUkFUXTsKKyAgICBrYWxfdWludDggc29ydGVkX2NzZ19jb3VudDsKKyAgICBhdmFpbGFibGVfcGxtbl9jc2dfc3RydWN0IHNvcnRlZF9wbG1uX2NzZ1tNQVhfQ1NHX05VTV07Cit9IHJhY19jc2dfbGlzdF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0eworICAgIGthbF91aW50OCByZWZfY291bnQ7CisgICAga2FsX3VpbnQxNiBtc2dfbGVuOworICAgIGthbF9ib29sIGlzX2NzX2NpcGhlcl9rZXlfaW5mb19wcmVzZW50OyAgICAgIC8qIGlmIEdTTSBDUyBjaXBoZXIga2V5IHByZXNlbnQgKi8KKyAgICBrYWxfdWludDggY3NfY2lwaGVyX2tleV9pbmZvW0tDX0xFTl07ICAgICAgICAvKiBHU00gQ1MgZG9tYWluIGNpcGhlciBrZXkgKEtjKSAqLworICAgIGthbF9ib29sIGlzX2NzX2NpcGhlcl9rZXkxMjhfaW5mb19wcmVzZW50OyAgIC8qIGlmIEdTTSBDUyBjaXBoZXIga2V5MTI4IHByZXNlbnQgKi8KKyAgICBrYWxfdWludDggY3NfY2lwaGVyX2tleTEyOF9pbmZvW0tDMTI4X0xFTl07ICAvKiBHU00gQ1MgZG9tYWluIGNpcGhlciBrZXkxMjggKEtjMTI4KSAqLworICAgIGthbF91aW50OCBja3NuOyAvKiBjaXBoZXIga2V5IHNlcXVlbmNlIG51bWJlciAqLworfXJhdGNtX2dhc19zZWN1cml0eV9tb2RlX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0eworICAgIGRvbWFpbl9pZF9lbnVtCWRvbWFpbl9pZDsgIC8vVGhlIGRvbWFpbiBvZiBzZWN1cml0eSBjb250ZXh0CisgICAga2FsX3VpbnQ4CXVtdHNfY2lwaGVyaW5nX2tleVtDS19MRU5dOyAvL1VNVFMgY2lwaGVyaW5nIGtleQorICAgIGthbF91aW50OAl1bXRzX2ludGVncml0eV9rZXlbSUtfTEVOXTsgLy9VTVRTIGludGVncml0eSBrZXkKK311YXNfc2VjdXJpdHlfY29udGV4dF9zdHJ1Y3Q7CisKKy8qIFVBUy9HQVMgPC0+IFJBVENNIGVuZCAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgZG9tYWluX2lkX2VudW0gcGFnX3Jlc3BfcmVzdF9pbmQ7CisgICAgZG9tYWluX2lkX2VudW0gbG9jX3JlZ19yZXN0X2luZDsgICAKKyAgICBrYWxfdWludDE2IGxvY19yZWdfcHBhY3I7Cit9IHBwYWNyX2luZm9fc3RydWN0IDsKKworLyogTDRDIDwtPiBFTkFTL0VBUyBiZWdpbiAqLworCisvKiBDZWxsIHJlc3RyaWN0aW9uIHJlbGF0ZWQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgUkVTVF9DRUxMX0FSUkFZX1NJWkUgICAgOAorI2RlZmluZSBSRVNUX0ZSRVFfQVJSQVlfU0laRSAgICA4CisKK3R5cGVkZWYgZW51bSB7CisgICAgUkVTVF9NT0RFX05VTEwsCisgICAgUkVTVF9NT0RFX1JFU1RSSUNURURfTElTVCwKKyAgICBSRVNUX01PREVfUEVSTUlUVEVEX0xJU1QKK30gcmVzdF9tb2RlX2VudW07CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBFQVJGQ04gICAgICAgICAgICAgICAgICAgICAgZWFyZmNuOyAgICAgICAgICAgIC8qIEVBUkZDTiAqLworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICBsb3dlcl9jZWxsX2lkOyAgICAgLyogTG93ZXIgUGh5c2ljYWwgQ2VsbCBJZGVudGl0eSAqLworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICBoaWdoZXJfY2VsbF9pZDsgICAgLyogSGlnaGVyIFBoeXNpY2FsIENlbGwgSWRlbnRpdHkgKi8KK30gcmVzdF9jZWxsX3JhbmdlX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3R7CisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgIGxvd2VyX2VhcmZjbjsgICAgICAvKiBMb3dlciBFQVJGQ04gKi8KKyAgICBrYWxfdWludDE2ICAgICAgICAgICAgICAgICAgaGlnaGVyX2VhcmZjbjsgICAgIC8qIEhpZ2hlciBFQVJGQ04gKi8KK30gcmVzdF9mcmVxX3JhbmdlX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3R7CisgICAgcmVzdF9tb2RlX2VudW0gICAgICAgICAgICAgIG1vZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZXN0cmljdGVkIGxpc3QgbW9kZSAqLworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICByZXN0X2NlbGxfcmFuZ2VfbnVtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIHJlc3RyaWN0ZWQgY2VsbCBsaXN0ICovCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHJlc3RfZnJlcV9yYW5nZV9udW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgcmVzdHJpY3RlZCBmcmVxdWVuY3kgbGlzdCAqLworICAgIHJlc3RfY2VsbF9yYW5nZV9zdHJ1Y3QgICAgICByZXN0X2NlbGxfcmFuZ2VfbGlzdFtSRVNUX0NFTExfQVJSQVlfU0laRV07ICAgICAgICAgLyogUmVzdHJpY3RlZCBjZWxsIGxpc3QgKi8KKyAgICByZXN0X2ZyZXFfcmFuZ2Vfc3RydWN0ICAgICAgcmVzdF9mcmVxX3JhbmdlX2xpc3RbUkVTVF9GUkVRX0FSUkFZX1NJWkVdOyAgICAgICAgIC8qIFJlc3RyaWN0ZWQgZnJlcXVlbmN5IGxpc3QgKi8KKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgaXNfdW10c19yZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIGFsbCB1bXRzIGNlbGxzIGFyZSByZXN0cmljdGVkICovCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgIGlzX2dzbV9yZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZiBhbGwgZ3NtIGNlbGxzIGFyZSByZXN0cmljdGVkICovCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgIGlzX2Mya19yZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZiBhbGwgYzJrIGNlbGxzIGFyZSByZXN0cmljdGVkICovICAgIAorfSByZXN0X2NvbW1hbmRfc3RydWN0OworCisvKiBNb25pdG9yIG1vZGUgc3RydWN0ICovCit0eXBlZGVmIHN0cnVjdHsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgaXNfbW9uaXRvcl9tb2RlX3NldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElzIG1vbml0b3IgbW9kZSBpcyBzd2l0Y2hlZCBvbiBvciBvZmYgKi8KK30gbW9uaXRvcl9tb2RlX2NvbW1hbmRfc3RydWN0OworCisvKiBMNEMgPC0+IEVOQVMvRUFTIGVuZCAqLworCisvKiBFVENNIDwtPiBFTkFTL0VBUyBiZWdpbiAqLworI2RlZmluZSBNSU5fQVBOX0xFTiAgICAgICAgICAgICAgICAgICAgIDEKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgbGVuZ3RoOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBkYXRhW01BWF9BUE5fTEVOXTsKKworfSBhcG5fc3RydWN0OworCisvKiBFVENNIDwtPiBFTkFTL0VBUyBlbmQgKi8KKworLyogTldTRUwgPC0+IEVOQVMvRUFTIGJlZ2luICovCit0eXBlZGVmIHN0cnVjdAorewora2FsX3VpbnQ4IGFkZHJfbGVuZ3RoOwora2FsX3VpbnQ4IGFkZHJfYmNkW01BWF9OV19FQ0NfTlVNX0xFTkdUSF07Cit9IGwzX2FkZHJfYmNkX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworCWthbF91aW50OCAgICAgICAgICBjYXRlZ29yeTsKKwlsM19hZGRyX2JjZF9zdHJ1Y3QJdGVsX251bWJlcjsKK30gZWNjX251bWJlcl9zdHJ1Y3Q7CisKKy8qIFJBVENNIC0+IE1NIC0+IE5XU0VMICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICByYXRfZW51bSByYXQ7CisgICAga2FsX3VpbnQzMiBjZWxsX2lkOworICAgIGthbF9ib29sICBpc19sYV92YWxpZDsKKyAgICBrYWxfdWludDggbGFfY29kZVsyXTsKKyAgICBrYWxfYm9vbCAgaXNfcmFfdmFsaWQ7CisgICAga2FsX3VpbnQ4IHJhX2NvZGU7CisgICAga2FsX3VpbnQ4IG11bHRpX3BsbW5fY291bnQ7CisgICAgcGxtbl9pZF9zdHJ1Y3QgbXVsdGlfcGxtbl9pZFtNQVhfTlVNX01VTFRJX1BMTU5dOworfSBtbV9jZWxsX2dsb2JhbF9pZGVudGl0eV9pbmZvX2luZF9zdHJ1Y3Q7CisKKy8qIFJBVENNIC0+IE1NIC0+IE5XU0VMICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50MTYgYmFuZDsKKyAgICBwbG1uX2lkX3N0cnVjdCBwbG1uX2lkOyAvKiBjaGFubiAqLworfSBjZWxsX2JhbmRfaW5mb19zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50MTYgZ2liaV90YWc7CisgICAgcmF0X2VudW0gcmF0OworICAgIGthbF9ib29sIGlzX2RhdGFfcGVuZGluZzsKKyAgICBrYWxfYm9vbCBpc19zeXNfaW5mb19wcmVzZW50OworI2lmIGRlZmluZWQoX19VTVRTX0ZERF9NT0RFX18pIHx8IGRlZmluZWQoX19URF9ORVRXT1JLX1NIQVJJTkdfXykgfHwgZGVmaW5lZCAoVU5JVF9URVNUKQorICAgIGthbF91aW50OCBtdWx0aV9wbG1uX2NvdW50OworICAgIHBsbW5faWRfc3RydWN0IG11bHRpX3BsbW5faWRbTUFYX05VTV9NVUxUSV9QTE1OXTsKKyAgICBhc19jZWxsX3R5cGVfZW51bSBtdWx0aV9wbG1uX2NlbGxfdHlwZVtNQVhfTlVNX01VTFRJX1BMTU5dOworI2VuZGlmCisgICAgcGxtbl9pZF9zdHJ1Y3QgcGxtbl9pZDsKKyAgICBrYWxfdWludDggbGFfY29kZVsyXTsKKyAgICBrYWxfdWludDggcmFfY29kZTsKKyAgICBrYWxfdWludDMyIGNlbGxfaWQ7IC8vbXRrMDI0NzU6IGV4dGVuZGVkIGNlbGwgaWQgaW4gVU1UUworICAgIGthbF9ib29sIGNlbGxfc3VwcG9ydF9jczsKKyAgICBrYWxfYm9vbCBjZWxsX3N1cHBvcnRfcHM7IC8qIGlmIEZBTFNFLCBubW8gYW5kIHJhX2NvZGUgc2hvdWxkIG5vdCByZWZlci4gKi8KKyAgICBrYWxfYm9vbCBpc19hY2NfY2xhc3NfcHJlc2VudDsKKyAgICBrYWxfdWludDE2IGFjY19jbGFzczsKKyAgICBrYWxfdWludDggZXh0cmFfaW5mb19iaXRtYXNrOyAvKiBtdGswMjQ3NTogZm9yIERTQUMvZGF0YV9zcGVlZF9zdXBwb3J0IHVwZGF0ZSBpbiBjb25uZWN0ZWQgbW9kZSovCisjaWYgZGVmaW5lZCAoX19SNl9EU0FDX18pIHx8IGRlZmluZWQgKFVOSVRfVEVTVCkKKyAgICBrYWxfdWludDggZHNhY19wbG1uX2JpdG1hc2s7CisgICAga2FsX3VpbnQxNiBjc19kc2FjW01BWF9OVU1fTVVMVElfUExNTl07CisgICAga2FsX3VpbnQxNiBwc19kc2FjW01BWF9OVU1fTVVMVElfUExNTl07CisjZW5kaWYKKyAgICBrYWxfdWludDggdDMyMTJfdGltZXJfdmFsOworICAgIG5ldHdvcmtfbW9kZV9lbnVtIG5tbzsKKyAgICBhc19jZWxsX3R5cGVfZW51bSBjZWxsX3R5cGU7CisgICAgYXR0X2ZsYWdfZW51bSBhdHRfZmxhZzsKKyAgICBrYWxfYm9vbCBtc2NyOworICAgIHJyX21tX3Nnc25yX2ZsYWdfZW51bSBzZ3NucjsKKyNpZiBkZWZpbmVkIChfX1BTX1NFUlZJQ0VfXykgfHwgZGVmaW5lZCAoVU5JVF9URVNUKQorICAgIGRhdGFfc3BlZWRfc3VwcG9ydF9lbnVtIGNlbGxfZGF0YV9zcGVlZF9zdXBwb3J0OyAvKiBNQVVJXzAyMzYxMjIxOiBmb3IgZWdwcnMgYW5kIGhzcGEgKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX19QUEFDUl9TVVBQT1JUX18pIHx8IGRlZmluZWQgKFVOSVRfVEVTVCkKKyAgICBrYWxfdWludDggcHBhY3JfcGxtbl9iaXRtYXNrOworICAgIHBwYWNyX2luZm9fc3RydWN0IHBwYWNyX2luZm9fcGxtbl9saXN0W01BWF9OVU1fTVVMVElfUExNTl07CisjZW5kaWYKKworICAgIGNzZ19hY2Nlc3NfbW9kZV9lbnVtIGNzZ19hY2Nlc3NfbW9kZTsKKyAgICBjc2dfaW5mb19zdHJ1Y3QgY3NnX2luZm87CisgICAgCisjaWZkZWYgX19MVEVfUkFUX18KKyAgICBrYWxfYm9vbCBpc19ncHJzX2luZm9faW5fc2kxM19kZWZlcnJlZDsKKyNlbmRpZgorICAgIGthbF91aW50OCBiYW5kOworfSBtbV9zeXNfaW5mb19pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGNhcGFiaWxpdHlfc3dpdGNoX2VudW0gczFfY2FwOworICAgIGNhcGFiaWxpdHlfc3dpdGNoX2VudW0gbjFfY2FwOyAgCisKKyAgICAvKiBnc20vdW10cyBub3QgeWV0IGltcGxlbWVudCwgcHV0IGhlcmUgZm9yIGV4dGVuc2lvbi4gQWx3YXlzIHNldCB0byBFTkFCTEUgKi8KKyAgICBjYXBhYmlsaXR5X3N3aXRjaF9lbnVtIGdzbV9jYXA7CisgICAgY2FwYWJpbGl0eV9zd2l0Y2hfZW51bSB1bXRzX2NhcDsKKworCXZnX29wdGlvbl9lbnVtIHZnX29wdGlvbjsKK30gdWVfY2FwYWJpbGl0eV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgdWVfY2FwYWJpbGl0eV9zdHJ1Y3QgdWVfY2FwOworICAgIGthbF9ib29sIGlzX21yc19lbmRjX3N1cHBvcnRlZDsgICAgIC8vIHF1ZXJ5IHJlc3VsdCBvZiAibXJzX25yYXNfaXNfZW5kY19zdXBwb3J0KCkiCisgICAga2FsX2Jvb2wgaXNfbndfZW5kY19kaXNhYmxlZDsgICAgICAgLy8gaXMgRU4tREMgZGlzYWJsZWQgZm9yIHNwZWNpZmljIFNJTS9uZXR3b3JrCit9IG5hc19zdl91ZV9jYXBhYmlsaXR5X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgIGthbF9ib29sICAgICAgICAgd2FpdF9lbWNfcGRuX3N0YXR1czsKKyAgIHBsbW5faWRfc3RydWN0ICAgcnBsbW47CisgICBrYWxfdWludDggICAgICAgIGVxX3BsbW5fYnl0ZV9jb3VudDsKKyAgIGthbF91aW50OCAgICAgICAgZXFfcGxtbl9pZFtNQVhfTlVNX0VRX1BMTU4qM107Cit9IHVwZGF0ZV9lcGxtbl9zdHJ1Y3Q7CisKKy8qIE5XU0VMIDwtPiBFTkFTL0VBUyBlbmQgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICB2Z19pbXNfM2dwcF9pbmRfZW51bSAgICAgICAgICAgICAgICB2Z19pbXNfM2dwcF9pbmQ7CisgICAgdmdfaW1zX24zZ3BwX2luZF9lbnVtICAgICAgICAgICAgICAgdmdfaW1zX24zZ3BwX2luZDsKKyAgICB2Z19lbWVyZ2VuY3lfc2VydmljZV9pbmRfZW51bSAgICAgICB2Z19lbWVyZ2VuY3lfc2VydmljZV9pbmQ7CisgICAgdmdfZW1lcmdlbmN5X2ZhbGxiYWNrX2luZF9lbnVtICAgICAgdmdfZW1lcmdlbmN5X2ZhbGxiYWNrX2luZDsKKyAgICBpd2tfbjI2X2VudW0gICAgICAgICAgICAgICAgICAgICAgICBpd2tfbjI2X2luZDsKKyAgICBtcHNfaW5kX2VudW0gICAgICAgICAgICAgICAgICAgICAgICBtcHNfaW5kOworICAgIHZnX2VtZXJnZW5jeV9zZXJ2aWNlX24zZ3BwX2luZF9lbnVtIHZnX2VtZXJnZW5jeV9zZXJ2aWNlX24zZ3BwX2luZDsKKyAgICBtY3NfaW5kX2VudW0gICAgICAgICAgICAgICAgICAgICAgICBtY3NfaW5kOworfSB2Z21tX253X2ZlYXR1cmVfc3VwcG9ydF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDggaWVfY29udGVudFtNQVhfTEVOX09GX09QVF9JRV9NVUxUSV07Cit9IHZnbW1fcGF5bG9hZF9vcHRfaWVfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGltc19pbmRfZW51bSAgICAgICAgICAgICAgICAgICAgaW1zX2luZDsKKyAgICBlbWVyZ2VuY3lfc2VydmljZV9pbmRfZW51bSAgICAgIGVtZXJnZW5jeV9zZXJ2aWNlX2luZDsKKyAgICBsb2NhdGlvbl9zZXJ2aWNlX2VwY19pbmRfZW51bSAgIGxvY2F0aW9uX3NlcnZpY2VfZXBjX2luZDsKKyAgICBsb2NhdGlvbl9zZXJ2aWNlX2NzX2luZF9lbnVtICAgIGxvY2F0aW9uX3NlcnZpY2VfY3NfaW5kOyAgIAorICAgIGV4dF9zZXJ2aWNlX3JlcXVlc3RfZm9yX3BzX2VudW0gZXh0X3NlcnZpY2VfcmVxdWVzdF9mb3JfcHNfaW5kOworICAgIGV4dF9wY29fZW51bSAgICAgICAgICAgICAgICAgICAgZXh0X3Bjb19pbmQ7CisgICAgcmVzdHJpY3RfZGNucl9lbnVtICAgICAgICAgICAgICByZXN0cmljdF9kY25yX2luZDsKKyAgICBpd2tfbjI2X2VudW0gICAgICAgICAgICAgICAgICAgIGl3a19uMjZfaW5kOworfSBlbW1fbndfZmVhdHVyZV9zdXBwb3J0X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICB1Z19pbXNfaW5kX2VudW0gICAgICAgICAgICAgICAgIGltc192b2ljZV9vdmVyX3BzX2luZDsKKyAgICB1Z19lbWVyZ2VuY3lfc2VydmljZV9pbmRfZW51bSAgIGVtZXJnZW5jeV9zZXJ2aWNlX2luZDsKK30gZ21tX253X2ZlYXR1cmVfc3VwcG9ydF9zdHJ1Y3Q7CisKKworLyogTldTRUwgPC0+IEVOQVMvRUFTIGVuZCAqLworCisjaWZkZWYgX19MVEVfUkFUX18KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGVycmNfc2ltX3Byb3RlY3RfcHVycG9zZV9lbnVtIHB1cnBvc2U7CisgICAga2FsX2Jvb2wgbmVlZF9wcm90ZWN0OworfSBlcnJjX3NpbV9wcm90ZWN0X3JlcV9zdHJ1Y3Q7CisjZW5kaWYgLy9fX0xURV9SQVRfXworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGdtc3NfcmF0X2VudW0gcmF0OworICAgIHBsbW5faWRfc3RydWN0IGxvYzsKKyAgICBwcmlvX2NsYXNzX2VudW0gcHJpb19jbGFzczsKKworfSBnbXNzX21ydV9pbmZvX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50MzIgbnVtX21jYzsKKyAgICBwbG1uX2lkX3N0cnVjdCBtY2NbTUFYX05VTV9PRl9NQ0NdOworfSBmb3VuZF9tY2NfaW5mb19zdHJ1Y3Q7Cit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50MzIgZW50cnlfaW5kZXg7CisgICAgaXJhdF9zeXN0ZW1fdHlwZV9lbnVtIHJhdDsKKyAgICBrYWxfdWludDggYmFuZDsKKyAgICBwbG1uX2lkX3N0cnVjdCBwbG1uX2lkOworICAgIGthbF91aW50MTYgY2hhbm5lbDsgICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBQTE1OIElEIGluIEMySywgb25seSBjaGFubmVsIG51bWJlcgorfSB2endtcnVfZW50cnlfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCAKK3sKKyAgICBkb21haW5faWRfZW51bSAgdXBkYXRlZF9kb21haW47ICAgICAvKiBUaGUgZG9tYWluIHRvIGJlIHVwZGF0ZWQgKi8KKworICAgIHJlZ19zdGF0ZV9lbnVtICBjc19zdGF0ZTsKKyAgICByZWdfc3RhdGVfZW51bSAgcHNfc3RhdGU7CisKKyAgICBjZWxsX2luZm9fYW5kX3JhdF9zdHJ1Y3QgICAgY2VsbF90eXBlOworICAgIGRhdGFfc3BlZWRfc3VwcG9ydF9lbnVtIGNlbGxfZGF0YV9zcGVlZF9zdXBwb3J0OworCisgICAga2FsX3VpbnQ4ICAgICAgIGNhdXNlX3R5cGU7ICAgICAgICAgICAvKiAwOiBkZWZpbmVkIGJ5IHNwZWMgICAgMTogaW50ZXJuYWwgY2F1c2UsIGRlZmluZWQgYnkgbWFudWZhY3R1cmUgKi8KKyAgICBtbV9jYXVzZV9lbnVtICAgcmVqZWN0X2NhdXNlOworCisgICAgLyogQ29tYmluZWQgYXR0YWNoLCBDUy9QUyBtYXkgcmVnaXN0ZXIgd2l0aCBkaWZmZXJlbnQgUExNTiBpbiBOQVMgdmlldyAKKyAgICAgIEFtaWQgVE1PIG5ldHdvcmssIGlmIENTIGlzIGluIFBMTU4tQSwgUFMgaW4gUExNTi1CLCBhbmQgTFRFIGRvZXMgbm90IHN1cHBvcnQgQ1MsIHRoYXQgbWVhbnMKKyAgICAgIFVFIGNhbm5vdCBwZXJmb3JtIENTRkIgYnV0IFZvTFRFICovCisgICAgbGFpX3N0cnVjdCAgICAgIGNzX2xhaTsgCisKKyAgICBrYWxfYm9vbCAgICBpc19za2lwOyAgICAgICAgLyogTmV0d29yayBkaXNwbGF5IG9wdGltaXphdGlvbiAocmVzZXJ2ZWQpICovCisgICAgCisgICAga2FsX2Jvb2wgICAgZGNucl9yZXN0cmljdGVkOworICAgIGthbF91aW50OCB2Z21tX2FsbG93ZWRfbnNzYWlfbGVuZ3RoOyAvKiBOdW1iZXIgb2YgYnl0ZXMgaW4gYWxsb3dlZCBOU1NBSSAqLworICAgIGthbF91aW50OCB2Z21tX2FsbG93ZWRfbnNzYWlbTUFYX0xFTl9PRl9BTExfQUxMT1dFRF9OU1NBSV07IC8qIEFsbG93ZWQgTlNTQUkgKi8KK30gcmVnX3N0YXRlX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgcGxtbl9pZF9zdHJ1Y3QgcGxtbl9pZDsKKyAgICBrYWxfdWludDE2IGJhbmQ7Cit9IHBsbW5fYmFuZF9zdHJ1Y3Q7CisKKyNkZWZpbmUgSU5WQUxJRF9DQU1QSU5HX0lORk9fSUQgMHhmZmZmCisjZGVmaW5lIElOVkFMSURfQ0FNUElOR19JTkZPX01BU0sgMHgwZgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIHVlX2NhcGFiaWxpdHlfc3RydWN0IGNhcGFiaWxpdHk7ICAvLyBuZXcgY2FwYWJpbGl0eQorICAgIHJhdF9lbnVtIHJhdF9tb2RlOworfSB1ZV9jYXBhYmlsaXR5X3VwZGF0ZV9wYXJhbXNfc3RydWN0OworCisvKgorICogU3RydWN0dXJlIHJlcHJlc2VudHMgdGhlIEtBTUYga2V5LgorICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgLyogS0FNRiBmb3IgZGVyaXZpbmcgbmV3IEtnTkIgYW5kIE5IIHdoZW4gcmVxdWlyZWQgYnkgTlJSQy4KKyAgICAgKiBNU0Igb2Yga2V5WzBdIGlzIHRoZSBmaXJzdCBiaXQgb2Yga2V5LiAqLworICAgIGthbF91aW50OCAgIGtleVtOUlJDX0tBTUZfTEVOR1RIXTsKK30gbnJyY19rYW1mX3N0cnVjdDsKKworCisKKyNkZWZpbmUgRF9NQVhfTU1FR0lEX1NJWkUgICAgICAgICAgIDIKKyNkZWZpbmUgRF9NVE1TSV9MRU4gICAgICAgICAgICAgICAgIDQKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggdmFsdWU7CisgICAga2FsX3VpbnQ4IHRzYzsKK30gbmFzX2tzaV9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX29mX2d1dGk7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICB0eXBlX29mX2lkZW50aXR5OworICAgIHBsbW5faWRfc3RydWN0ICAgICAgICAgICAgICAgICAgcGxtbl9pZDsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgIG1tZV9naWRbRF9NQVhfTU1FR0lEX1NJWkVdOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgbW1lX2NvZGU7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICBtdG1zaVtEX01UTVNJX0xFTl07Cit9IGd1dGlfc3RydWN0OworCisKKyNkZWZpbmUgVkdOQVNfVEFDX0xFTiAzICAgLyogNUcgVHJhY2tpbmcgQXJlYSBDb2RlIHNpemUgKi8KKyNkZWZpbmUgVkdOQVNfTUFYX1RBSV9MSVNUIDE2IC8qIE1heCBudW1iZXIgb2YgZW50cmllcyBpbiBUQSBsaXN0ICovCisjZGVmaW5lIE1BWF9MQUROX0lORk8gOAorI2RlZmluZSBNQVhfQ1JMQUROX0xFTiA4MDgKKyNkZWZpbmUgTUFYX0xBRE5fSU5GT19MRU4gMTcxMgorCisvKioKKyAgKiBUQSBzdHJ1Y3R1cmUgdG8gc3RvcmUgdHJhY2tpbmcgYXJlYSBpZGVudGl0eQorICAqLwordHlwZWRlZiBzdHJ1Y3QgdmduYXNfdGFpX3N0cnVjdCB7CisgICAgcGxtbl9pZF9zdHJ1Y3QgcGxtbl9pZDsKKyAgICBrYWxfdWludDggdGFfY29kZVtWR05BU19UQUNfTEVOXTsKK30gdmduYXNfdGFpX3N0cnVjdDsKKworCisvKioKKyogU3RydWN0dXJlIHRvIHN0b3JlIGRpZmZlcmVudCBUQSBsaXN0czogcmVnaXN0ZXJlZCBUQXMsCisqIGFsbG93ZWQgVEEgbGlzdCBhbmQgbm9uLWFsbG93ZWQgVEEgbGlzdC4KKyovCit0eXBlZGVmIHN0cnVjdCB2Z25hc190YV9saXN0X3N0cnVjdCB7CisgICAga2FsX3VpbnQ4IG51bWJlcl9vZl90YTsKKyAgICB2Z25hc190YWlfc3RydWN0IHRhX2xpc3RbVkdOQVNfTUFYX1RBSV9MSVNUXTsKKworfSB2Z25hc190YV9saXN0X3N0cnVjdDsKKworLyoqCisqIFN0cnVjdHVyZSB0byBzdG9yZSBMQUROIGluZm9ybWF0aW9uCisqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGFwbl9zdHJ1Y3QgZG5uOworICAgIHZnbmFzX3RhX2xpc3Rfc3RydWN0IHRhX2xpc3Q7ICAgIAorfSBsYWRuX2luZm9fc3RydWN0OworCisvKioKKyogU3RydWN0dXJlIGZvciBMQUROIGluZm9ybWF0aW9uIHByaW1pdGl2ZSBmb3J3YXJkaW5nCisqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IG51bV9vZl9sYWRuX2luZm87CisgICAgbGFkbl9pbmZvX3N0cnVjdCBsYWRuX2luZm9bTUFYX0xBRE5fSU5GT107CisKKyAgICBrYWxfYm9vbCAgIGlzX2xhZG5fcmF3X2RhdGFfdmFsaWQ7CisgICAga2FsX3VpbnQxNiBsYWRuX3Jhd19kYXRhX2xlbjsKKyAgICBrYWxfdWludDggIGxhZG5fcmF3X2RhdGFbTUFYX0xBRE5fSU5GT19MRU5dOworCit9IGxhZG5faW5mb191cGRhdGVfaW5kX3N0cnVjdDsKKworLyoKKyAqIFN0cnVjdHVyZSBmb3IgTDQgQ29udGV4dAorICovCit0eXBlZGVmIHN0cnVjdCAKK3sKKyAgICBrYWxfdWludDggbnVtX29mX2xhZG5faW5mbzsKKyAgICBsYWRuX2luZm9fc3RydWN0IGxhZG5faW5mb1tNQVhfTEFETl9JTkZPXTsKKworICAgIGthbF9ib29sICAgaXNfbGFkbl9yYXdfZGF0YV92YWxpZDsKKyAgICBrYWxfdWludDE2IGxhZG5fcmF3X2RhdGFfbGVuOworICAgIGthbF91aW50OCAgbGFkbl9yYXdfZGF0YVtNQVhfTEFETl9JTkZPX0xFTl07Cit9IGw0Y3RjbV9sYWRuX2luZm9fbGlzdF9zdHJ1Y3Q7CisKKyNlbmRpZiAKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0X2RlZnMuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0X2RlZnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmEwYjcyCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRfZGVmcy5oCkBAIC0wLDAgKzEsODkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqCWw0X2RlZnMuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNQVVJCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgVGhpcyBmaWxlIGlzIGludGVuZHMgZm9yIHR5cGUgZGVmaW5pdGlvbiB1c2VkIGluIENTTShDQykgbW9kdWxlLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqICBUaGlzIHByb2R1Y3QgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nIGEgcHJvdG9jb2wgc3RhY2sKKyogIGRldmVsb3BlZCBieSBTYXNrZW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgTGltaXRlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworCisjaWZuZGVmIF9MNF9ERUZTX0gKKyNkZWZpbmUgX0w0X0RFRlNfSAorCisvLyNpbmNsdWRlICJrYWxfbm9uX3NwZWNpZmljX2dlbmVyYWxfdHlwZXMuaCIKKy8vI2luY2x1ZGUgInN0YWNrX2NvbmZpZy5oIgorLy8jaW5jbHVkZSAic3RhY2tfbXNncy5oIgorLy8jaW5jbHVkZSAiYXBwX2x0bGNvbS5oIgorCisjaWZkZWYgX19MNF9NQVhfTkFNRV82MF9fCisjZGVmaW5lIEw0X01BWF9OQU1FICAgICAgICAgICAgICAgKDYyKQorI2Vsc2UKKyNkZWZpbmUgTDRfTUFYX05BTUUgICAgICAgICAgICAgICAoMzIpCisjZW5kaWYKKworI2RlZmluZSBNQVhfTU1JX05BTUVfTEVOICAgICAgICAgICgxMCkKKyNkZWZpbmUgTUFYX0NBTExFRF9CQ0RfTlVNX0xFTiAgICAoNDApCisvKmJ5IFl1Y2h1YW4qLworI2RlZmluZSBMNF9NQVhfQUREUl9CQ0QgICAgICAgICAgICAgICAgICAgIDQxCisKKworI2VuZGlmIC8qIF9MNF9ERUZTX0ggKi8KKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRfdHJjLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNF90cmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmQzYWNhCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRfdHJjLmgKQEAgLTAsMCArMSwxMDggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKglsNF90cmMuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNVDYyMDgKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBUaGlzIGlzIHRyYWNlIG1hcCBkZWZpbml0aW9uLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiAgVGhpcyBwcm9kdWN0IGhhcyBiZWVuIGRldmVsb3BlZCB1c2luZyBhIHByb3RvY29sIHN0YWNrCisqICBkZXZlbG9wZWQgYnkgU2Fza2VuIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIExpbWl0ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpZm5kZWYgX0w0X1RSQ19ICisjZGVmaW5lIF9MNF9UUkNfSAorI2lmIDAgLy9yaHIKKyNpZm5kZWYgR0VOX0ZPUl9QQworICAgI2lmbmRlZiBfU1RBQ0tfQ09ORklHX0gKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyAgICNlbmRpZgorI2Vsc2UKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZiAvKiBHRU5fRk9SX1BDICovCisjaWZuZGVmIF9LQUxfVFJBQ0VfSAorLyogdW5kZXIgY29uc3RydWN0aW9uICEqLworI2VuZGlmCisjZW5kaWYKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIgLy9NU0JCIGNoYW5nZSAjaW5jbHVkZSAic3RhY2tfY29uZmlnLmgiCisjaW5jbHVkZSAia2FsX3RyYWNlLmgiCisjaWYgIWRlZmluZWQoR0VOX0ZPUl9QQykKKyNpZiBkZWZpbmVkKF9fVFNUX01PRFVMRV9fKSB8fCBkZWZpbmVkKF9fQ1VTVE9NX1JFTEVBU0VfXykKKyNlbmRpZiAvKiBUU1QgVHJhY2UgRGVmaW50aW9uICovCisjZW5kaWYKKy8qIFRSQUNFX0dST1VQXzEgZm9yIENDL1NTL0NUTSAqLworI2RlZmluZSBMNENfQ0NTU19UUkMgVFJBQ0VfR1JPVVBfMSAgIAorI2RlZmluZSBMNENfQ1RNX1RSQyAgVFJBQ0VfR1JPVVBfMQorLyogVFJBQ0VfR1JPVVBfMiBmb3IgR1BSUyAqLworI2RlZmluZSBMNENfR1BSU19UUkMgVFJBQ0VfR1JPVVBfMiAgIAorLyogVFJBQ0VfR1JPVVBfMyBmb3IgRVEvRU0gKi8KKyNkZWZpbmUgTDRDX0VRX1RSQyAgIFRSQUNFX0dST1VQXzMgICAKKyNkZWZpbmUgTDRDX0VNX1RSQyAgIFRSQUNFX0dST1VQXzMKKy8qIFRSQUNFX0dST1VQXzQgZm9yIFNNUy9QSEIgKi8KKyNkZWZpbmUgTDRDX1NNU19UUkMgIFRSQUNFX0dST1VQXzQgICAKKyNkZWZpbmUgTDRDX1BIQl9UUkMgIFRSQUNFX0dST1VQXzQKKy8qIFRSQUNFX0dST1VQXzUgZm9yIE5XL1NNVS9Ib21lWm9uZSAqLworI2RlZmluZSBMNENfTldfVFJDICAgVFJBQ0VfR1JPVVBfNQorI2RlZmluZSBMNENfU01VX1RSQyAgVFJBQ0VfR1JPVVBfNQorI2RlZmluZSBMNENfSFpfVFJDICAgVFJBQ0VfR1JPVVBfNQorLyogVFJBQ0VfR1JPVVBfNiBmb3IgTWlzYy4qLyAgCisjZGVmaW5lIEw0Q19NSVNDX1RSQyBUUkFDRV9HUk9VUF82CisvKiBUUkFDRV9HUk9VUF83IGZvciBDSUQgYW5kIFBPUlQuICovCisjZGVmaW5lIEw0Q19DSURfVFJDICBUUkFDRV9HUk9VUF83CisvKiBUUkFDRV9HUk9VUF84IGZvciBFT05TICovCisjaWZkZWYgX19FT05TX1NVUFBPUlRfXworI2RlZmluZSBMNENfRU9OU19UUkMgIFRSQUNFX0dST1VQXzgKKyNlbmRpZgorI2lmICFkZWZpbmVkKEdFTl9GT1JfUEMpCisjaW5jbHVkZSJsNF90cmNfbW9kX2w0Y191dG1kLmgiCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRfdHJjX21vZF9sNGNfdXRtZC5qc29uIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRfdHJjX21vZF9sNGNfdXRtZC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YjBkNzcKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNF90cmNfbW9kX2w0Y191dG1kLmpzb24KQEAgLTAsMCArMSw1MTQ2IEBACit7CisgICJlbmRHZW4iOiAiLSIsIAorICAibGVnYWN5UGFyYW1ldGVycyI6IHt9LCAKKyAgIm1vZHVsZSI6ICJNT0RfTDRDIiwgCisgICJzdGFydEdlbiI6ICJMZWdhY3kiLCAKKyAgInRyYWNlQ2xhc3NEZWZzIjogWworICAgIHsKKyAgICAgICJUUkFDRV9JTkZPIjogeworICAgICAgICAiZGVidWdMZXZlbCI6ICJVbHRyYS1IaWdoIiwgCisgICAgICAgICJ0YWciOiBbCisgICAgICAgICAgIkJhc2VsaW5lIiwgCisgICAgICAgICAgIlRSQUNFX0lORk8iCisgICAgICAgIF0sIAorICAgICAgICAidHJhY2VUeXBlIjogIkRlc2lnbkluZm8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX1dBUk5JTkciOiB7CisgICAgICAgICJkZWJ1Z0xldmVsIjogIlVsdHJhLUhpZ2giLCAKKyAgICAgICAgInRhZyI6IFsKKyAgICAgICAgICAiQmFzZWxpbmUiLCAKKyAgICAgICAgICAiVFJBQ0VfV0FSTklORyIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiUHVibGljIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJUUkFDRV9FUlJPUiI6IHsKKyAgICAgICAgImRlYnVnTGV2ZWwiOiAiVWx0cmEtSGlnaCIsIAorICAgICAgICAidGFnIjogWworICAgICAgICAgICJCYXNlbGluZSIsIAorICAgICAgICAgICJUUkFDRV9FUlJPUiIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiUHVibGljIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJUUkFDRV9GVU5DIjogeworICAgICAgICAiZGVidWdMZXZlbCI6ICJMb3ciLCAKKyAgICAgICAgInRhZyI6IFsKKyAgICAgICAgICAiQmFzZWxpbmUiLCAKKyAgICAgICAgICAiVFJBQ0VfRlVOQyIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiSW50ZXJuYWxEZXNpZ24iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX1NUQVRFIjogeworICAgICAgICAiZGVidWdMZXZlbCI6ICJNZWRpdW0iLCAKKyAgICAgICAgInRhZyI6IFsKKyAgICAgICAgICAiQmFzZWxpbmUiLCAKKyAgICAgICAgICAiVFJBQ0VfU1RBVEUiCisgICAgICAgIF0sIAorICAgICAgICAidHJhY2VUeXBlIjogIkRlc2lnbkluZm8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX0dST1VQXzEiOiB7CisgICAgICAgICJkZWJ1Z0xldmVsIjogIlVsdHJhLUxvdyIsIAorICAgICAgICAidGFnIjogWworICAgICAgICAgICJCYXNlbGluZSIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiSW50ZXJuYWxEZXNpZ24iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX0dST1VQXzIiOiB7CisgICAgICAgICJkZWJ1Z0xldmVsIjogIlVsdHJhLUxvdyIsIAorICAgICAgICAidGFnIjogWworICAgICAgICAgICJCYXNlbGluZSIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiSW50ZXJuYWxEZXNpZ24iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX0dST1VQXzMiOiB7CisgICAgICAgICJkZWJ1Z0xldmVsIjogIlVsdHJhLUxvdyIsIAorICAgICAgICAidGFnIjogWworICAgICAgICAgICJCYXNlbGluZSIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiSW50ZXJuYWxEZXNpZ24iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX0dST1VQXzQiOiB7CisgICAgICAgICJkZWJ1Z0xldmVsIjogIlVsdHJhLUxvdyIsIAorICAgICAgICAidGFnIjogWworICAgICAgICAgICJCYXNlbGluZSIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiSW50ZXJuYWxEZXNpZ24iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX0dST1VQXzUiOiB7CisgICAgICAgICJkZWJ1Z0xldmVsIjogIlVsdHJhLUxvdyIsIAorICAgICAgICAidGFnIjogWworICAgICAgICAgICJCYXNlbGluZSIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiSW50ZXJuYWxEZXNpZ24iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX0dST1VQXzYiOiB7CisgICAgICAgICJkZWJ1Z0xldmVsIjogIlVsdHJhLUxvdyIsIAorICAgICAgICAidGFnIjogWworICAgICAgICAgICJCYXNlbGluZSIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiSW50ZXJuYWxEZXNpZ24iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX0dST1VQXzciOiB7CisgICAgICAgICJkZWJ1Z0xldmVsIjogIlVsdHJhLUxvdyIsIAorICAgICAgICAidGFnIjogWworICAgICAgICAgICJCYXNlbGluZSIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiSW50ZXJuYWxEZXNpZ24iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX0dST1VQXzgiOiB7CisgICAgICAgICJkZWJ1Z0xldmVsIjogIlVsdHJhLUxvdyIsIAorICAgICAgICAidGFnIjogWworICAgICAgICAgICJCYXNlbGluZSIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiSW50ZXJuYWxEZXNpZ24iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX0dST1VQXzkiOiB7CisgICAgICAgICJkZWJ1Z0xldmVsIjogIlVsdHJhLUxvdyIsIAorICAgICAgICAidGFnIjogWworICAgICAgICAgICJCYXNlbGluZSIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiSW50ZXJuYWxEZXNpZ24iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlRSQUNFX0dST1VQXzEwIjogeworICAgICAgICAiZGVidWdMZXZlbCI6ICJVbHRyYS1Mb3ciLCAKKyAgICAgICAgInRhZyI6IFsKKyAgICAgICAgICAiQmFzZWxpbmUiCisgICAgICAgIF0sIAorICAgICAgICAidHJhY2VUeXBlIjogIkludGVybmFsRGVzaWduIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIlRSQUNFX1NFTlNJVElWRV9VU0lSIjogeworICAgICAgICAiZGVidWdMZXZlbCI6ICJIaWdoIiwgCisgICAgICAgICJ0YWciOiBbCisgICAgICAgICAgIkJhc2VsaW5lIiwKKyAgICAgICAgICAiVVNJUiIKKyAgICAgICAgXSwgCisgICAgICAgICJ0cmFjZVR5cGUiOiAiUHVibGljIgorICAgICAgfQorICAgIH0KKyAgXSwgCisgICJ0cmFjZURlZnMiOiBbCisgICAgeworICAgICAgIkZVTkNfTDRDX0NDX0hBTkRGUkVFX0NBTExIRUxEX1JJTkQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX2NjX2hhbmRmcmVlX2NhbGxoZWxkX3JpbmQoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19ST09UX0dFVF9QRU5ESU5HX1BBU1NXT1JEX0lEX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19yb290X2dldF9wZW5kaW5nX3Bhc3N3b3JkX2lkKCksc2ltOiVoZCwlMDJYIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1JPT1RfVVBEQVRFX0xPQ0tfU1RBVFVTX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19yb290X3VwZGF0ZV9sb2NrX3N0YXR1c19pbmQoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19ST09UX0xPQ0tfU1RBVFVTX0lORCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcm9vdF9sb2NrX3N0YXR1c19pbmQoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19ST09UX0xJTktfU01MX1NVUEVSX1ZFUklGWV9SRVEiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3Jvb3Rfc21sX3N1cGVyX3ZlcmlmeV9yZXEoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19ST09UX0xJTktfU01MX1JFU1RPUkVfTE9DS19SRVEiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3Jvb3Rfc21sX3Jlc3RvcmVfbG9ja19yZXEoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19ST09UX0xJTktfU01MX1NFUlZJQ0VfTE9DS19FWEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3Jvb3RfbGlua19zbWxfc2VydmljZV9sb2NrX2V4ZSgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiRlVOQ19MNENfUk9PVF9VUERBVEVfUEVORElOR19QQVNTV09SRF9JRF9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcm9vdF91cGRhdGVfc2ltX3BsdWdpbl9sb2NrX3N0YXR1c19pbmQoKSwgU0lNIFNsb3Q6ICVoZCwgUGFzc3dvcmQ6ICUwMlgiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19TSU1fU0VDVVJJVFlfQ0hFQ0siOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NpbV9zZWN1cml0eV9jaGVjaygpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiRlVOQ19MNENfTUFJTl9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfbWFpbigpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTlZSQU1fU1RBUlRVUF9DTkZfSERMUl9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJudnJhbV9zdGFydHVwX2NuZl9oZGxyKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19OVlJBTV9SRUFEX0NORl9IRExSX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIm52cmFtX3JlYWRfY25mX2hkbHIoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX05WUkFNX1dSSVRFX0NORl9IRExSX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIm52cmFtX3dyaXRlX2NuZl9oZGxyKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19TSU1fUkVBRF9DTkZfSERMUl9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJzaW1fcmVhZF9jbmZfaGRscigpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfU0lNX1dSSVRFX0NORl9IRExSX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogInNpbV93cml0ZV9jbmZfaGRscigpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1NFTkRfTVNHX1RPX0NTTV9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfc2VuZF9tc2dfdG9fY3NtKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfU0VORF9NU0dfVE9fQ1NNX0NJU1NfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NlbmRfbXNnX3RvX2NzbV9jaXNzKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfU0VORF9NU0dfVE9fU01VX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19zZW5kX21zZ190b19zbXUoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19TRU5EX01TR19UT19SQUNfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NlbmRfbXNnX3RvX3JhYygpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1NFTkRfTVNHX1RPX1BTRE1fRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NlbmRfbXNnX3RvX3BzZG0oKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19TRU5EX01TR19UT19TTVNBTF9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfc2VuZF9tc2dfdG9fc21zYWwoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19TRU5EX01TR19UT19VRU1fRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NlbmRfbXNnX3RvX3VlbSgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1NFTkRfTVNHX1RPX1BIQl9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfc2VuZF9tc2dfdG9fcGhiKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfU0VORF9NU0dfVE9fVENNX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19zZW5kX21zZ190b190Y20oKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19TRU5EX01TR19UT19ESExfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NlbmRfbXNnX3RvX2RobCgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1NFTkRfTVNHX1RPX1NNX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19zZW5kX21zZ190b19zbSgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1NFTkRfTVNHX1RPX0VWQUxfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NlbmRfbXNnX3RvX2V2YWwoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19TRU5EX01TR19UT19FU01fRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NlbmRfbXNnX3RvX2VzbSgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1NFTkRfTVNHX1RPX1BQUF9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfc2VuZF9tc2dfdG9fcHBwKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfU0VORF9NU0dfVE9fV0FQX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19zZW5kX21zZ190b193YXAoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19TRU5EX01TR19UT19OVk1fRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NlbmRfbXNnX3RvX252bSgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1NFTkRfTVNHX1RPX1NJTV9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfc2VuZF9tc2dfdG9fc2ltKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfU0VORF9NU0dfVE9fUlNWQVNfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NlbmRfbXNnX3RvX3JzdmFzKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfU0VORF9NU0dfVE9fTUVEX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19zZW5kX21zZ190b19tZWQoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19GRF9DSEVDS19QRFBfU1RBVElTVElDU19FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRkRdbDRjX2ZkX2NoZWNrX3BkcF9zdGF0aXN0aWNzKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfTldfRU5EX1BTX0RBVEFfU0VTU0lPTl9SRVFfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0ZEXWw0Y19ud19lbmRfcHNfZGF0YV9zZXNzaW9uX3JlcSgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1BTX1VQREFURV9DVVJSRU5UX1JFR19SSU5EIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19wc191cGRhdGVfY3VycmVudF9yZWdfcmluZCgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX05PVElGWV9SQUNfQ0dBQ1RfRVZFTlQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX25vdGlmeV9yYWNfY2dhY3RfZXZlbnQoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19QT1dFUl9PRkZfTk9USUZZX09USEVSUyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcG93ZXJfb2ZmX25vdGlmeV9vdGhlcnMoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19ST09UX1JGX09GRl9SRVEiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3Jvb3RfcmZfb2ZmX3JlcSgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1BTX1NFVF9URlRfUkVRIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19wc19zZXRfdGZ0X3JlcSgpOiAlTWthbF9ib29sIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1BTX0dFVF9URlRfUkVRIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19wc19nZXRfdGZ0X3JlcSgpOiAlTWthbF9ib29sIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1BTRVVET19CU19ERVRFQ1RfSU5EX0hETFIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3JybV9ycm1zX3BzZXVkb19ic19kZXRlY3RfaW5kX2hkbHIoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19QU0VVRE9fQlNfUVVFUllfQ05GX0hETFIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3JybV9ycm1zX3BzZXVkb19ic19xdWVyeV9jbmZfaGRscigpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX1BTRVVET19CU19MSVNUX1JSU1BfSERMUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfbndfZ2V0X3BzZXVkb19ic19saXN0X3Jyc3AoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0FQQ19FWEVfQ05GIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogInJlY2VpdmUgYXBjIGV4ZSBjbmYgZnJvbSBhcywgZXhwZWN0ZWQgY25mIG51bWJlcjolZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19JTlRFUk5BTF9HTUNfUFJPQ0VTUyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfaW50ZXJuYWxfZ21jX3Byb2Nlc3MiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfRUdNQ19TRVRfUlJTUCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfZWdtY19zZXRfcnJzcCgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX0VHTUNfUVVFUllfUlJTUCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfZWdtY19xdWVyeV9ycnNwKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfU0VORF9NU0dfVE9fVDMwX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19zZW5kX21zZ190b190MzAoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19TRU5EX01TR19UT19JUkRBX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19zZW5kX21zZ190b19pcmRhKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfU1NfU1RSSU5HX1BBUlNJTkdfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NzX3N0cmluZ19wYXJzaW5nKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19JU19TSU1fU1RSSU5HX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImlzX3NpbV9zdHJpbmcoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX1NFVFVQX1NJTV9TVFJVQ1RfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAic2V0dXBfc2ltX3N0cnVjdCgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfSVNfR1BSU19TVFJJTkdfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiaXNfZ3Byc19zdHJpbmcoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX1NFVFVQX1BEUF9BQ1RfU1RSVUNUX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogInNldHVwX3BkcF9hY3Rfc3RydWN0KCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19TRVRVUF9JUF9QRFBfQUNUX1NUUlVDVF9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJzZXR1cF9pcF9wZHBfYWN0X3N0cnVjdCgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfSVNfQ0NfU1RSSU5HX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImlzX2NjX3N0cmluZygpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfU0VUVVBfTlVNQkVSX1NUUlVDVF9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJzZXR1cF9udW1iZXJfc3RydWN0KCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19HRVRfSU5UX0JFRk9SRV9TVEFSX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImdldF9pbnRfYmVmb3JlX3N0YXIoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0dFVF9VSU5UMzJfQkVGT1JFX1NUQVJfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiZ2V0X3VpbnQzMl9iZWZvcmVfc3RhcigpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfR0VUX1NUUklOR19CRUZPUkVfU1RBUl9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJnZXRfc3RyaW5nX2JlZm9yZV9zdGFyKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19HRVRfRE5fQkVGT1JFX1NUQVJfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiZ2V0X2RuX2JlZm9yZV9zdGFyKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19DT05WRVJUX1RPX0JDRF9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJjb252ZXJ0X3RvX2JjZCgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfQ09OVkVSVF9UT19CQ0RfV0lMRF9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJMNEM6IGNvbnZlcnRfdG9fYmNkX3dpbGQoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0NPTlZFUlRfVE9fRElHSVRfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiTDRDOiBjb252ZXJ0X3RvX2RpZ2l0KCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19DT05WRVJUX1RPX0RJR0lUX0VYVF9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJMNEM6IGNvbnZlcnRfdG9fZGlnaXRfZXh0KCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19DT05WRVJUX1RPX0RJR0lUXzI0MDA4X0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkw0QzogY29udmVydF90b19kaWdpdF8yNDAwOCgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfQ09OVkVSVF9UT19ESUdJVF9XSUxEX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkw0QzogY29udmVydF90b193aWxkKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19QTE1OX0NPTlZFUlRfVE9fQkNEX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogInBsbW5fY29udmVydF90b19iY2QoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX1BMTU5fQ09OVkVSVF9UT19TVFJVQ1RfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAicGxtbl9jb252ZXJ0X3RvX3N0cnVjdCgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfUExNTl9DT05WRVJUX1RPX0RJR0lUX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogInBsbW5fY29udmVydF90b19kaWdpdCgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfUExNTl9DT05WRVJUX0lOVF9UT19TVFJVQ1RfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAicGxtbl9jb252ZXJ0X2ludF90b19zdHJ1Y3QoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0lTX0NNRF9DT05GTElDVF9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJpc19jbWRfY29uZmxpY3QoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX1RTVF9JTkpFQ1RfU1RSSU5HX0hETFJfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAidHN0X2luamV4dF9zdHJpbmdfaGRscigpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX0VRX0ZTX0ZJTEVMSVNUX1JFUV9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfZXFfZnNfZmlsZWxpc3RfcmVxKCkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfRVFfRlNfQUNDRVNTX1JFUV9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfZXFfZnNfYWNjZXNzX3JlcSgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX0VRX0ZTX0ZPTERFUl9BQ1RJT05fUkVRX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19lcV9mc19mb2xkZXJfYWN0aW9uX3JlcSgpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZVTkNfTDRDX0VRX0ZTX0FWX0RJU0tfU0laRV9SRVFfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX2VxX2ZzX2F2X2Rpc2tfc2l6ZV9yZXEoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19OV19CQU5EX0lORk9fSERMUl9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNwc19ud19iYW5kX2luZm9faW5kX2hkbHIiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19DMktfU0VORF9NU0dfVE9fVkFMIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19zZW5kX21zZ190b192YWwoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0MyS19FR0NPTlRSRFBfUklORCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfZWdjb250cmRwX3JlcG9ydF9yaW5kKCksIGNpZDogJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRlVOQyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRlVOQ19MNENfU0VUX0RZTkFNSUNfU0JQX0lEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19zZXRfZHluYW1pY19zYnBfaWQoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19ST09UX0RZTkFNSUNfQ0ZHX1BST0NFU1NJTkciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3Jvb3RfZHluYW1pY19jZmdfcHJvY2Vzc2luZygpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQVRIX05PX0NBTExfSEFOR1VQIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImF0aDogbm8gY2FsbCB0byBoYW5ndXAiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19BVEhfUkVRX0FURF9BQk9SVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJhdGhfcmVxOiBBVEQgYWJvcnRlZCEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfTE9DQUxfRElTQ09OTkVDVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJMNEMgbG9jYWwgZGlzY29ubmVjdCBjYWxsOiVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1VDTV9FTkRfQ1NEX0NBTExfRElTQyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJVQ00gbWlnaHQgZW5kIGFsbCB3aGlsZSBwcmV2aW91cyBDU0QgY2FsbCBkaXNjb25uZWN0aW9uIGlzIHByb2Nlc3NpbmciLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DSExEX0NMRUFSX1JFVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkNITEQgY2xlYXIgcmV0cnkgY2FsbCxvcmlnbmFsIGNjX2FjdGlvblslTWw0Y19zb3VyY2VfaWRfZW51bV09ICVNbDRjX2FjdGlvbl9lbnVtLGZ1cnRoZXIgYWN0aW9uPSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX05PX0NBTExfRVhJU1QiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiYXRoX3JlcTogbm8gY2FsbCBleGlzdCEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQ0xFQVJfUVVFVUVEX0NITEQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiQ2xlYXIgcXVldWVkIGNobGQgaWYgZm9yY2UgcmVsZWFzZSBpcyByZWNlaXZlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX05PVF9QUklOVF9OT19DQVJSSUVSIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldlIGRvbid0IGhhdmUgdG8gcHJpbnQgVVJDIE5PX0NBUlJJRVIgd2hlbiBBVEggb3IgK2NobGQgdG8gaGFuZ3VwIGNhbGwiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19VUERBVEVfTU1JX0NBTExfSUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiVG8gdXBkYXRlIE1NSSBjYWxsX2lkIGJ5bCBESUFMX0lORCB3aXRoIGNhbGxfaWQgPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUkVUUllfRkxBRyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJyZXRyeV9zcz0laGQsIHJldHJ5X2NvdW50PSVoZCwgcmV0cnlfc3JjX2lkPSVNbDRjX3NvdXJjZV9pZF9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU1RPUF9SRVRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJzdG9wIHJldHJ5ICYgY2xlYXIgbXNnISwgY3VycmVudF9hY3Rpb249JU1sNGNfYWN0aW9uX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DRUxMX0xPQ0tfQ0FMTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJpc19jZWxsX2xvY2tfY2FsbD0gJWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU0hPUlRfU1RSSU5HX0lTX0VDQ19OVU1CRVIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiVGhpcyBzaG9ydCBzdHJpbmcgaXMgYSBFQ0MgbnVtYmVyIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQ1VTVE9NX1NIT1JUX1NUUklOR19BU19DQUxMX1JFVFVSTl9UUlVFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImN1c3RvbV9zaG9ydF9zdHJpbmdfYXNfY2FsbCgpIHJldHVybiBUUlVFISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0NVU1RPTV9JRExFX1NUUklOR19BU19DQUxMX1JFVFVSTl9UUlVFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImN1c3RvbV9pZGxlX3N0cmluZ19hc19jYWxsKCkgcmV0dXJuIFRSVUUhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUkVUUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAicmV0cnkhLCBzcmNfaWQ9JU1sNGNfc291cmNlX2lkX2VudW0sIGN1cnJlbnRfYWN0aW9uPSVNbDRjX2FjdGlvbl9lbnVtLCByZXRyeV9zcz0laGQsIHJldHJ5X2NvdW50PSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TVEFSVF9DSEFOR0VfUEhBU0VfUkVUUllfVElNRVJfSERMUl9TVEFSVF9USU1FUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfc3RhcnRfY2hhbmdlX3BoYXNlX3JldHJ5X3RpbWVyX2hkbHIoKSBzdGFydCBhIHRpbWVyIHdpdGggMiBzZWMiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfU1RBUlRfU0FUX1JFRElBTF9EVVJBVElPTl9USU1FUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJMNEMgc3RhcnQgc2F0IHJlZGlhbCBkdXJhdGlvbiB0aW1lciEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfU0VUX1NBVF9SRURJQUxfRkxBRyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJMNEMgc2V0IHNhdF9yZWRpYWxfZmxhZyA9JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQVREX01FTU9SWV9ESUFMIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkFURCBtZW1vcnkgZGlhbCA6IFBIQiByZXR1cm4gZW50cnkgd2l0aCBlbXB0eSBudW1iZXIiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DT05USU5HT1VTX0NBTExfRElTQ19SRVFVRVNUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkNvbnRpbmdvdXMgZGlzY29ubmVjdCByZXF1ZXN0LGNhbGxfaWQgPSAlaGQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19TV0lUQ0hfQ1NNX0NPTlRFWFQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU3dpdGNoIENTTSBjb250ZXh0IHRvIFNJTTolaGQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19NVF9DQUxMX0FQUFJPVkFMIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIm10X2NhbGxfYXBwcm92YWwgPSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0VOQUJMRV9NVF9DQUxMX0FQUFJPVkFMIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIk1UIGNhbGwgYXBwcm92YWwgbWVjaGFuaXNtIGlzIGFjdGl2YXRlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0NMRUFSX1JPVVRFX1RIUlVfTE1NSSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJDbGVhciByb3V0ZV90aHJ1X2xtbWkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19FQ0FMTF9UWVBFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImVDYWxsIFR5cGUgPSVNZWNhbGxfdHlwZV9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fRUNDX0NBTExfTk9fUkVUUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiRG8gbm90IGRvIGNoYW5nZSBSQVQgcmV0cnkgZm9yIGNhdXNlOiVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUFVSRV9BU0NJSSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfc3NfZXhlX3Vzc2RfcmVxKCk6IHB1cmVfYXNjaWk9JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQ0xFQVJfU0FUX1VTU1JfRkxBRyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJjbGVhciAgTDRDX1BUUi0+c2F0X3Vzc3JfZmxhZyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0FMUEhBQkVUX1RZUEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU0FUIFVTU0Q6IGFscGhhYmV0X3R5cGU9JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU0VUX1NBVF9VU1NSX0ZMQUciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAic2V0IEw0Q19QVFItPnNhdF91c3NyX2ZsYWc9JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fVVNTRF9DT05UQUlOU19TUyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJVU1NEIHJlcSBidXQgY29udGFpbnMgU1Mgc3RyaW5nIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU0FUX1VTU0QiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU0FUIFVTU1IiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfU0FUX1VTU0RfSU5GT1JNX1VTRVIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1NBVF0gc2F0X3Vzc2RfbmVlZF9pbmZvcm1fdXNlcjogJU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0tUX1RSQU5TRkVSX1NTX1NUQVRVUyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJLVCB0cmFuc2ZlciBTUyBzdGF1dHMgOiAleCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJMNENfUFNfRVhFX1NFTkRfREFUQSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICIlTWw0Y190Y21fZW1fcGRwX2NpZF9lbnVtLCBjaWQ9JWhkLCBwb29saWQ9JWQsIHNpemU9JWQsIHNyY19pZD0lTWw0Y19zb3VyY2VfaWRfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJMNENfUFNfR0VUX01BWF9IU1BBX1NVUFBPUlRfTU9ERSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfbndfZ2V0X21heF9oc3BhX3N1cHBvcnRfbW9kZSgpLCBVTDFfZHBhX2NhdD0lTUZERF9IU0RQQV9DQVRFR09SWV9FLCBVTDFfdXBhX2NhdD0lTUZERF9IU1VQQV9DQVRFR09SWV9FLCByZXR1cm49JU1sNGNfaHNwYV9wcmVmZXJlbmNlX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfR1BSU19ORElTX0ZETl9DSEVDS19SRVNVTFRfQU5EX0VOQUJMRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJQSEIgYXBwcm92ZSByZXN1bHQ9JWhkOyBjdXN0b21fbDRjX25kaXNfZmRuX2VuYWJsZSgpPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0dQUlNfSVBWNFY2X0FMUkVBRFlfMV9PTkdPSU5HX0FDVElWQVRJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0lQVjRWNl0gYWxyZWFkeSAxIG9uZ29pbmcgSVBWNFY2IGFjdGl2YXRpb246IGNpZD0laGQsIHNyY19pZD0laGQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfR1BSU19JUFY0VjZfQUNUX1RBQkxFX1NSQ19DSURfQ0FVU0UiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0lQVjRWNl1bQUNUIFRBQkxFXSBzcmNfaWQ9JWhkLCBpbml0X2NpZD0laGQsIGNhdXNlPSVNcHNfY2F1c2VfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19HUFJTX0lQVjRWNl9BQ1RfVEFCTEVfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0lQVjRWNl1bQUNUIFRBQkxFXVslZF0gVHlwZT0lTXBkcF9hZGRyX3R5cGVfZW51bSwgQ2lkPSVoZCwgU3RhdGU9JU1sNGNfaXB2NHY2X3N0YXRlX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfR1BSU19JUFY0VjZfQUNUX1RBQkxFX0NPTlNUUlVDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbSVBWNFY2XSBsNGNfZ3Byc19pcHY0djZfYWN0X3RhYmxlX2NvbnN0cnVjdCgpLCBpbml0X2NpZD0laGQsIHNyY19pZD0laGQsIHY0X2ZpcnN0PSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19HUFJTX0lQVjRWNl9BQ1RfVEFCTEVfRlJFRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbSVBWNFY2XSBsNGNfZ3Byc19pcHY0djZfYWN0X3RhYmxlX2ZyZWUoKSwgaW5pdF9jaWQ9JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0dQUlNfSVBWNFY2X0NIRUNLX0NJRF9JTl9BQ1RfVEFCTEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0lQVjRWNl0gbDRjX2dwcnNfaXB2NHY2X2NoZWNrX2NpZF9leGlzdGVuY2UoKSwgY2lkPSVoZCwgcmV0dXJuICVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorCXsKKyAgICAgICJJTkZPX0w0Q19TSU1fT1BFUkFUT1JfQ0hFQ0siOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiQ2hlY2sgT3BlcmF0b3IgQ2FyZCAoUFMlZCk6ICVNc2ltX29wZXJhdG9yX3R5cGVfZW51bSAtIGZvdW5kOiVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfU0lNX0FSUkVBUkFHRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJTSU0gYXJyZWFyYWdlIGluZm8gKFBTJWQpOiBzaW1fYXJyZWFyYWdlPSVNbDRjX3NpbV9jYXJkX2FycmVhcnNfZW51bSwgc2ltX2FycmVhcmFnZV9yZXBvcnRlZD0lTWw0Y19zaW1fY2FyZF9hcnJlYXJzX2VudW0sIGNvdW50PSVkLCBhcnJlYXJhZ2VfZmxhZz0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX0dQUlNfSVBWNFY2X0dFVF9USEVfT1RIRVJfQ0lEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltJUFY0VjZdIGw0Y19ncHJzX2lwdjR2Nl9nZXRfdGhlX290aGVyX2NpZCgpLCBjaWQ9JWhkLCByZXN1bHQgY2lkPSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19HUFJTX0lQVjRWNl9VUERBVEVfU1RBVEVfQllfUERQX1RZUEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0lQVjRWNl0gbDRjX2dwcnNfaXB2NHY2X3VwZGF0ZV9zdGF0ZV9ieV90eXBlKCksIHR5cGU9JU1wZHBfYWRkcl90eXBlX2VudW0sIG5ld19zdGF0ZT0lTWw0Y19pcHY0djZfc3RhdGVfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19HUFJTX0lQVjRWNl9VUERBVEVfQ0lEX0JZX1BEUF9UWVBFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltJUFY0VjZdIGw0Y19ncHJzX2lwdjR2Nl91cGRhdGVfY2lkX2J5X3R5cGUoKSwgdHlwZT0lTXBkcF9hZGRyX3R5cGVfZW51bSwgbmV3X2NpZD0laGQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfR1BSU19JUFY0VjZfUFJFUEFSRV9ORVdfQ0lEX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltJUFY0VjZdIGw0Y19ncHJzX2lwdjR2Nl9wcmVwYXJlX25ld19jaWQoKSBmb3IgJU1wZHBfYWRkcl90eXBlX2VudW0sIGluaXRfY2lkPSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19HUFJTX0lQVjRWNl9QUkVQQVJFX05FV19DSURfQ09NUExFVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0lQVjRWNl0gbDRjX2dwcnNfaXB2NHY2X3ByZXBhcmVfbmV3X2NpZCgpIGNvbXBsZXRlcywgbmV3X2NpZD0laGQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfR1BSU19JUFY0VjZfUlVOX0FDVElWQVRJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0lQVjRWNl0gbDRjX2dwcnNfaXB2NHY2X3J1bl9hY3RpdmF0aW9uKCksIGluaXRfY2lkPSVoZCwgbWF4X2FjdGl2YXRpb25fY291bnQ9JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0dQUlNfSVBWNFY2X0ZBTExCQUNLX09GRiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbSVBWNFY2XSBmYWxsYmFjayBpcyBkaXNhYmxlZCEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0dQUlNfSVBWNFY2X0NIRUNLX0lGX0lQVjRWNl9GQUxMQkFDS19ORUVERUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0lQVjRWNl0gbDRjX2NoZWNrX2lmX2lwdjR2Nl9mYWxsYmFja19uZWVkZWQodGNtX2FjdF9yZWpfY2F1c2U6JU1wc19jYXVzZV9lbnVtKSwgcmVzdWx0OiAlTWthbF9ib29sIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0dQUlNfREVCVUdfU0VUXzdfU0VHTUVOVF9MRUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1RDTSBIIEljb25dIFN0YXR1czolTWw0Y19yYWNfcmVzcG9uc2VfZW51bSwgRnJvbVJBQzolTWw0Y19kYXRhX3NwZWVkX3N1cHBvcnRfZW51bSwgRnJvbVRDTTolTWw0Y19kYXRhX2JlYXJlcl9jYXBhYmxpbGl0eV9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1BTX1NXSVRDSF9PTkdPSU5HIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltJUFY0VjZdIEZhbGxiYWNrIGRpc2FibGVkIGR1ZSB0byBQUyBzd2l0Y2ggb25nb2luZy4iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfR1BSU19DSEFOR0VfUkVRX1RZUEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiUmVzZXQgY2lkICVkIHJlcXVlc3RfdHlwZSBmcm9tICVNdGNtX3JlcXVlc3RfdHlwZV9lbnVtIHRvIFJFUVVFU1RfVFlQRV9JTklUSUFMX1JFUVVFU1QiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfVDMzOTZfREVURUNURUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAidGNtX3BkcF9hY3RpdmF0ZV9yZWpfaGRscigpOiBUMzM5NiBkZXRlY3RlZC4iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfVVNFX0NJRF9BVFRBQ0giOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gVXNlIENJRCAlZCBwcm9maWxlIHRvIGVzdGFibGlzaCBhdHRhY2ggUEROIG9uIENJRCAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19HRVRfQUNUSU9OX0JZX0NJRF9OX1NSQyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBsNGNfcHNfZ2V0X2FjdGlvbl9ieV9jaWRfbl9zcmMoKTogW2NpZDolZCwgc3JjX2lkOiVkXSA9PiBhY3Rpb246JU1sNGNfYWN0aW9uX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfR0VUX0FDVElPTl9CWV9DSUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gbDRjX3BzX2dldF9hY3Rpb25fYnlfY2lkKCk6IGNpZDolZCA9PiBhY3Rpb246JU1sNGNfYWN0aW9uX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfR0VUX0FDVElPTl9CWV9TUkMiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gbDRjX3BzX2dldF9hY3Rpb25fYnlfc3JjKCk6IHNyY19pZDolZCA9PiBhY3Rpb246JU1sNGNfYWN0aW9uX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfR0VUX1NSQ19CWV9DSURfTl9BQ1RJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gbDRjX3BzX2dldF9zcmNfYnlfY2lkX25fYWN0aW9uKCk6IFtjaWQ6JWQgYWN0aW9uOiVNbDRjX2FjdGlvbl9lbnVtXSA9PiBzcmNfaWQ6JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfR0VUX1NSQ19GT1JfU0VUX0NNRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBsNGNfcHNfZ2V0X3NyY19mb3Jfc2V0X2NtZCgpOiBbY2lkOiVkIHNyY19pZDolZF0gPT4gYWN0aW9uOiVNbDRjX2FjdGlvbl9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1BTX0NIRUNLX0lTX1NSQ19GUkVFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIGw0Y19wc19jaGVja19pc19zcmNfZnJlZSgpOiBzcmNfaWQ6JWQgPT4gaXNfc3JjX2ZyZWU6JU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19DSEVDS19JU19DSURfRlJFRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBsNGNfcHNfY2hlY2tfaXNfY2lkX2ZyZWUoKTogY2lkOiVkID0+IGlzX3NyY19mcmVlOiVNa2FsX2Jvb2wiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfQ0hFQ0tfSVNfVEFCTEVfRlJFRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBsNGNfcHNfY2hlY2tfaXNfdGFibGVfZnJlZSgpOiBpc190YWJsZV9mcmVlOiVNa2FsX2Jvb2wiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfR0VUX1NUQVRFX0JZX0NJRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBsNGNfcHNfZ2V0X3N0YXRlX2J5X2NpZCgpOiBjaWQ6JWQgPT4gc3RhdGU6JU1sNGNfdGNtX2ludGVybmFsX2NpZF9zdGF0ZSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19TRVRfQUNUSU9OIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIGw0Y19wc19zZXRfYWN0aW9uKCk6W2NpZDolZCwgc3JjX2lkOiVkXTogJU1sNGNfYWN0aW9uX2VudW0gPj4gJU1sNGNfYWN0aW9uX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfQ0xFQU5fQ0lEX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBsNGNfcHNfY2xlYW5fY2lkX2FjdGlvbigpOiBjaWQ6JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfQ0xFQU5fU1JDX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBsNGNfcHNfY2xlYW5fc3JjX2FjdGlvbigpOiBzcmM6JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfUFJJTlRfQUNUSU9OX1RBQkxFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNEMgQWN0aW9uIFRhYmxlXSBbY2lkOiVkLCBzcmNfaWQ6JWRdID0+IGFjdGlvbjolTWw0Y19hY3Rpb25fZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19QUklOVF9BQ1RJT05fVEFCTEVfRU5EIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNEMgQWN0aW9uIFRhYmxlXSBwcmludCBkb25lLiIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19VUERBVEVfU1RBVFVTX1RPX1NJTSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcHNfdXBkYXRlX292ZXJhbGxfcGRwX3N0YXR1c190b19zaW0oKTogJU1sNGNfZ3Byc19zdGF0dXNfZW51bSA+PiAlTWw0Y19ncHJzX3N0YXR1c19lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1BTX1BETl9BQ1RJVkVfQlVUX05PVF9CSU5EIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImNpZCAlZCBhY3RpdmUgYnV0IG5vdCBiaW5kLCBubyBuZWVkIHRvIHRyYW5zZmVyIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1BTX0NNRF9DT05GTElDVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICIgTDRDX1BTIGNtZCBjb25mbGljdCA6ICVNbDRjX2dwcnNfY21kX2NvbmZsaWN0X2NhdXNlX2VudW0sIGNoZWNrOjB4JXgiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfQ0hFQ0tfTkVFRF9UT19UUkFOU0ZFUl9QRE4iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3BzX2NoZWNrX25lZWRfdG9fdHJhbnNmZXJfcGRuX3RvX2VocnBkIDogJU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19TRVRfVlpXX0FQTl9FTkFCTEVfQklUTUFQIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19wc19zZXRfdnp3X2Fwbl9lbmFibGVfYml0bWFwOiBjbGFzcyAlZCwgaXNfZW5hYmxlICVNa2FsX2Jvb2wsIGJpdG1hcCAweCV4IC0+IDB4JXgiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfQ0hFQ0tfQ0xBU1MxX0NMQVNTMl9CT1RIX0VOQUJMRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcHNfY2hlY2tfaWZfYm90aF9jbGFzc18xX2FuZF9jbGFzc18yX2FyZV9lbmFibGU6IGJpdG1hcCAweCV4LCByZXR1cm4gJU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19DTEVBUl9WWldfQVBOX0VOQUJMRV9CSVRNQVAiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3BzX2NsZWFyX3Z6d19hcG5fZW5hYmxlX2JpdG1hcDogYml0bWFwIDB4JXggLT4gMHhGRkZGRkZGRiIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1BTX0lOVEVSTkVUX0NJRF9WQUxVRV9TRVRfVE9fQ09OVEVYVF9JRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBJbnRlcm5ldCBBUE4gYWN0aXZhdGVkIGlzIHN0b3JlZCBpbiBJTlRFUk5FVF9DSUQ6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfQUNUSVZBVEVfUkVKRUNUX0hBTkRMRVJfRk9SX0FERElUSU9OQUxfQ0lEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIEFjdGl2YXRlIHJlamVjdCBoYW5kbGVyIGZvciBFUE5XQ0FVU0Ugd2hlbiBJTlRFUk5FVCBDSUQgaXM6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfQUNUSVZBVEVfUkVKRUNUX0hBTkRMRVJfRk9SX0lOVEVSTkVUX0NJRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBBY3RpdmF0ZSByZWplY3Qsd2hlbiBJTlRFUk5FVCBDSUQgaXM6ICVkLCBFUE5XQ0FVU0Ugbm90IHJlcG9ydGVkIGhlcmUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19ERUFDVElWQVRFX0lORF9IQU5ETEVSX0ZPUl9JTlRFUk5FVF9DSUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gRGVhY3QgSW5kaWNhdGlvbiBoYW5kbGVyIGZvciBFUE5XQ0FVU0Ugd2hlbiBJTlRFUk5FVCBDSUQgaXM6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfQVRUQUNIX1JFSkVDVF9IQU5ETEVSX0ZPUl9JTlRFUk5FVF9DSUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gSUEgcmVqZWN0IGhhbmRsZXIgZm9yIEVQTldDQVVTRSB3aGVuIElOVEVSTkVUIENJRCBpczogJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19ERUJVR19FTlVNIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIiVNbDRjX3BzX2RlYnVnX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfREVCVUdfUEFSU0VfUkVTVUxUX0VSUk9SIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkw0Q19QU19ERUJVRyAlc19wYXJzZV9yZXN1bHQgRXJyb3IiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfTUFQX0w0Q19TUkNfSURfVE9fRERNX1NSQ19JRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcHNfbWFwIGw0Y19zcmNfaWQ6ICVkIHRvIGRkbV9zcmNfaWQ6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1BTX01BUF9ERE1fU1JDX0lEX1RPX0w0Q19TUkNfSUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3BzX21hcCBkZG1fc3JjX2lkOiAlZCB0byBsNGNfc3JjX2lkOiAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19DTURfQ05GX0VSUk9SIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkFUIEVycm9yOiVkLT4lZCwgJU1wc19jYXVzZV9lbnVtIG9yICVNcm1taV9lcnJfaWRfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19FR0FDVF9DTURfU1RBVFVTIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIEVHQUNUIGNvbW1hbmQgc3RhdHVzOiAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19TSU1fU0xPVF9UT19QU19JRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJzaW0gc2xvdCBpZDogJWQgcHMgaWQgJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfT05HT0lOR19JTVNfUEROX0FDVElWQVRJT05fTlVNIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19wc19vbmdvaW5nX2ltc19wZG5fYWN0aXZhdGlvbl9udW06ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0NVUlJFTlRfUExNTl9JRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBDdXJyZW50IFBsbW4gSWQ6IG1jYzE6ICV4IG1jYzI6ICV4IG1jYzM6ICV4IG1uYzE6ICV4IG1uYzI6ICV4IG1uYzM6ICV4ICIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1BTX0VOUERDUF9EQVRBX1VTQUdFX05URiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcHNfZXBkY3BfZGF0YV91c2FnZV9udGYoKSB0eF9ieXRlczogJWQgIHR4X3BhY2tldHM6ICVkICByeF9ieXRlczogJWQgIHJ4X3BhY2tldHM6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfSUFfUEROX0lORk8iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3BzX3NlbmRfaWFfcGRuX2luZm9fdG9fbDRjX253KCkgOiBpc19zdWNjZXNzIDogJU1rYWxfYm9vbCwgY2F1c2UgOiAlTXBzX2NhdXNlX2VudW0sIGlzX2ltc19wZG4gOiAlTWthbF9ib29sIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfSVNfRkROX0NIRUNLX05PVF9ORUVERURfU0lNX1BMTU4iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiZmRuX2NoZWNrIGF0dHJpYnV0ZTogc2ltLXBsbW46ICVzIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfSVNfRkROX0NIRUNLX05PVF9ORUVERURfRk9SX1BMTU4iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiZmRuX2NoZWNrIGF0dHJpYnV0ZTogcGxtbiBpbiBwbG1uX2xpc3Q6ICVzIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfSVNfRkROX0NIRUNLX05PVF9ORUVERURfUkVTVUxUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19wc19pc19mZG5fY2hlY2tfbm90X25lZWRlZF9mb3JfcGxtbigpOiBmZG5fY2hlY2tfbm90X25lZWRlZDogJU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1BTX0lNU19QRE5fQUNUSVZBVElPTl9TVUNDRVNTIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19wc19zZW5kX2ltc19wZG5fc3RhdHVzX3N1Y2Nlc3MiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QU19JTVNfUEROX0FDVElWQVRJT05fRkFJTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcHNfc2VuZF9pbXNfcGRuX3N0YXR1c19mYWlsIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19DMktfVFJBTlNGRVJfSU5JVF9BVFRBQ0hfUEROX0NJRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJUcmFuc2ZlciBpbml0aWFsX2F0dGFjaCBQRE4gY2lkIGZyb20gJWQgdG8gMCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0MyS19UUkFOU0ZFUl9TRUNPTkRBUllfTElOS0VEX1BEUF9DSUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiVHJhbnNmZXIgc2Vjb25kYXJ5IFBEUFtjaWQ6JWRdJ3MgcHJpbWFyeV9jb250ZXh0X2lkIGNpZCB0byAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0MyS19DT05GSUdfREVBQ1RfUkVUUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX2Mya19jb25maWdfZGVhY3RfcmV0cnkoKSBkZWFjdF9yZXRyeVslZF0gb2xkICVNa2FsX2Jvb2wgLT4gbmV3ICVNa2FsX2Jvb2wiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DMktfQ09ORklHX1dBSVRfRUkzR1BQSVJBVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfYzJrX2NvbmZpZ193YWl0aW5nX2VpM2dwcGlyYXQoKSBvbGQgJWQgLT4gbmV3ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQzJLX0NPTkZJR19UT19MVEVfU1JDX1JBVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfYzJrX2NvbmZpZ19jMmtfdG9fbHRlX3NyY19yYXQoKSBvbGQgJU1pcmF0X3BzX3R5cGVfZW51bSAtPiBuZXcgJU1pcmF0X3BzX3R5cGVfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0MyS19DT05GSUdfSVJBVF9TVEFURSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfYzJrX2NvbmZpZ19pcmF0X3N0YXRlKCkgb2xkICVNbDRjX2Mya19pcmF0X3N0YXRlX2VudW0gLT4gbmV3ICVNbDRjX2Mya19pcmF0X3N0YXRlX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DMktfQ09ORklHX1BETl9FU1RBQkxJU0hfU1RBVFVTIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19jMmtfY29uZmlnX3Bkbl9lc3RhYmxpc2hpbmdfc3RhdHVzKCksYWN0aW9uICVNbDRjX2Mya19mdW5jX2FjdGlvbl9lbnVtLCBjaWQgJWQsIGMya19pcmF0X3Bkbl9lc3RhYmxpc2hpbmdfc3RhdHVzICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQzJLX05PUk1BTF9DT05GTElDVF9DT05ESVRJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW05vIFByb2xiZW1dIHVuZGVyIEMySyB0byBMVEUgaW50ZXItUkFUIGluaXRpYWwgYXR0YWNoIHByb2NlZHVyZSwgd2UgcGFzcyB0aGlzIGNvbmZsaWN0ICIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0MyS19DT05GSUdfQVRUQUNIRURfUkFUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19jMmtfY29uZmlnIGF0dGFjaGVkX3JhdCBmcm9tICVNaXJhdF9wc190eXBlX2VudW0gdG8gJU1pcmF0X3BzX3R5cGVfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0MyS19DT05GSUdfTk9XX1NFQVJDSElOR19SQVQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX2Mya19jb25maWcgbm93X3NlYXJjaGluZ19yYXQgZnJvbSAlTWdtc3NfcmF0X2VudW0gdG8gJU1nbXNzX3JhdF9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQzJLX0NPTkZJR19QRE5fVFJBTlNGRVJfU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU2V0IHBkbl90cmFuc2Zlcl9zdGF0ZSAlTWw0Y19jMmtfbHdjZ19wZG5fY29udGV4dF90cmFuc2Zlcl9zdGF0ZV9lbnVtIC0+ICVNbDRjX2Mya19sd2NnX3Bkbl9jb250ZXh0X3RyYW5zZmVyX3N0YXRlX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DMktfSUFfUEROX1FVRVJZX0NORl9NT1ZFX0NJRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfbHRlX2Mya19pYV9wZG5fcXVlcnlfY25mX2hkbHIgbW92ZSBJQSBjb250ZXh0IGlkICVkIHRvIDAiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DMktfQ0hFQ0tfTk9XX1JBVF9NT0RFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkN1cnJlbnQgcmVwb3J0ZWQgUkFUOiAlTXJhdF9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQzJLX1NFVF9TVVBQT1JUX0VQRE5DVFJBTlMiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU2V0IGVuYWJsZV9wZG5fY29udGV4dF90cmFuc2Zlcl9pbl9sd2NnIDogJU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0MyS19ORUVEX1BETl9DT05URVhUX1RSQU5TRkVSX0lOX0xXQ0ciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiTmVlZCBQRE4gY29udGV4dCB0cmFuc2ZlciBpbiBsd2NnIDogJU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0MyS19GSU5EX1JFUExBQ0VfVEFSR0VUX0NJRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfYzJrX2ZpbmRfcmVwbGFjZV90YXJnZXRfY2lkIDogJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DMktfQURKVVNUX0NPTlRFTlRfT0ZfVFJBTlNGRVJSRURfUEROIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19jMmtfYWRqdXN0X2NvbnRlbnRfb2ZfdHJhbnNmZXJyZWRfcGRuIDogSGl0IGNvbmRpdGlvbiAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0MyS19BTFJFQURZX0ZFVENIX0lBIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImFscmVhZHlfZmV0Y2hlZF9pYSA6ICVNa2FsX2Jvb2wiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DMktfQUxSRUFEWV9UUkFOU0ZFUlJFRF9QRE5fVE9fQzJLIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImFscmVhZHlfdHJhbnNmZXJyZWRfcGRuX3RvX2MyayA6ICVNa2FsX2Jvb2wiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DMktfTENfREVCVUdfVFJBQ0UiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0RlYnVnIFRyYWNlXTogJU1sNGNfYzJrX2xjX2lyYXRfZGVidWdfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0MyS19MQ19GSU5EX1VTRUxFU1NfQ0lEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkZJTkQgVVNFTEVTUyBDSUQgOiAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0MyS19MQ19TRVRfQ0lEX09GX1JBVF9DSEFOR0VfUkVRIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlNldCBjMmtfbHRlX3JhdF9jaGFuZ2VfcmVxIGNpZCBmcm9tICVkIHRvICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQ0FMX0RBVEFfRExfU1RBVFVTIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImNhbF9kYXRhX3ZhbGlkOiVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1RYX1BPV0VSIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltUaGVybWFsXXR4X3B3cjolaGQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfQk9PVF9NT0RFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltLQUxdIEJvb3QgbW9kZSA9ICVNYm9vdF9tb2RlX3R5cGUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19QU19DT05GX1RFU1RfTU9ERSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbVGVzdCBNb2RlXSAlTXBzX2NvbmZfdGVzdF9tb2RlX2VudW0sIFtQcm9maWxlXSAweCVYIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUk1NSV9DQl9JTkZPIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltSTU1JXVtDQl1ybW1pX2NiX2luZm8sIGNiX29uX29mZiA9ICVkLCBtaWRfbnVtID0gJWQsIG1pcl9udW0gPSAlZCwgZGNzX251bSA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fVVNFX05FV19DQk1JX0NCTUlSX0NPTkZJRyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbUk1NSV1bQ0Jdcm1taV9lY3NjYmNmZygpLCB1c2UgbmV3IG1pZCwgbWlyIGNvbmZpZyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1VTRV9PTERfQ0JNSV9DQk1JUl9DT05GSUciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1JNTUldW0NCXXJtbWlfZWNzY2JjZmcoKSwgdXNlIG9sZCBtaWQsIG1pciBjb25maWciLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19VU0VfTkVXX0RDU19DT05GSUciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1JNTUldW0NCXXJtbWlfZWNzY2JjZmcoKSwgdXNlIG5ldyBkY3MgY29uZmlnIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fVVNFX09MRF9EQ1NfQ09ORklHIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltSTU1JXVtDQl1ybW1pX2Vjc2NiY2ZnKCksIHVzZSBvbGQgZGNzIGNvbmZpZyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TTVNfUkVJTklUX0RTUyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDX1NNU10gcmUtaW5pdCBTTVNBTCBhZnRlciBEU1MoZHluYW1pYyBTSU0gc3dpdGNoKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TTVNfQ09OVEVYVF9TV0lUQ0giOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q19TTVNdIGw0Y19zbXNfY29udGV4dF9zd2l0Y2g6IHJlY29uZmlnX3R5cGU6ICVNbDRjX21lX3JlY29uZmlnX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICAgeworICAgICAgIklORk9fTDRDX0NVU1RPTV9TTVNBTF9HRVRfV0VBX1RFU1RfREFUQSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbV0VBX1RFU1RdVGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBXQUMgZGF0YSBtZXNzYWdlIGluIGN1c3RvbSBmaWxlIGZvciB0aGlzIG1vZGUgPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgICB7CisgICAgICAiSU5GT19MNENfQ1VTVE9NX1NNU0FMX0dFVF9DQl9URVNUX0RBVEEiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1dFQV9URVNUXVRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgQ0IgbWVzc2FnZSBpbiBjdXN0b20gZmlsZSBmb3IgdGhpcyBtb2RlIHZhbHVlID0gJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUEhCX1JFSU5JVF9EU1MiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAicmUtaW5pdCBMNEMgUEhCIGFmdGVyIERTUyhkeW5hbWljIFNJTSBzd2l0Y2gpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUEhCX1NFTkRfUkVBRFkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q19QSEJdIGNoZWNrIFBIQiByZWFkeSBpbmRpY2F0aW9uOiBpc19hbGxvd2VkOiVNa2FsX2Jvb2wsIHJ0bl92YWx1ZTolTWthbF9ib29sLCB0eXBlOiVNc211X3BlbmRpbmdfcGFzc3dvcmRfaWRfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1BIQl9JU19DRE1BX0NBUkQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q19QSEJdIGlzIENETUEgY2FyZDolTWthbF9ib29sIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUEhCX1dBSVRfQ0RNQV9SRUFEWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDX1BIQl0gbmVlZCB3YWl0IENETUEgY2FyZCByZWFkeTogJU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QSEJfQ09OVEVYVF9TV0lUQ0giOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q19QSEJdIGw0Y19waGJfY29udGV4dF9zd2l0Y2g6IHJlY29uZmlnX3R5cGU6ICVNbDRjX21lX3JlY29uZmlnX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19GRF9TVEFSVF9NT05JVE9SIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltGRF1zdGFydCBGRCBtb25pdG9yIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fRkRfUERQX1NUQVRJU1RJQ1NfQ0hBTkdFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltGRF1QRFAgc3RhdGlzdGljcyBjaGFuZ2VkLCByZXNldCBmZF90aW1lcjolZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0ZEX1BEUF9TVEFUSVNUSUNTX1VOQ0hBTkdFRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRkRdUERQIG5vdCBjaGFuZ2VkISBjb3VudGVyOiVkLCBpbmFjdGl2aXR5X3RpbWVbJWRdcjolZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fRkRfSU5BQ1RJVklUWV9USU1FT1VUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltGRF1JbmFjdGl2aXR5IHRpbWUtb3V0LCBmZF9tb2RlOiVoZCwgc2NyaV9zZW50OiVoZCwgZmRfY291bnRlcjolZCwgcGRwOiVoZCwgYmVhcmVyOiVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0ZEX0JFQVJFUl9DQVBBQklMSVRZX0lORCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRkRdYmVhcmVyIGNhcGFiaWxpdHksIHN0YXR1czolaGQsIGZkOiVoZCwgcHJlOiVoZCwgbmV4dDolaGQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19CTE9DS19QTE1OX0xJU1RfV0hFTl9SUkNfU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiUExNTiBsaXN0IGZhaWwgZHVlIHRvIHJyYyBzdGF0ZTolTXVtdHNfcnJjX3N0YXRlX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19CTE9DS19QTE1OX0xJU1RfV0hFTl9FUlJDX1NUQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlBMTU4gbGlzdCBmYWlsIGR1ZSB0byBlcnJjIHN0YXRlOiVNZW1fZXJyY19zdGF0ZV9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQ0hFQ0tfTU9ERU1fQ0FQQUJJTElUWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJzdXBwb3J0ZWQgY2FwYWJpbGl0eToweCV4ICwgY2hlY2sgY2FwYWJpbGl0eTolTWw0Y19tb2RlbV9jYXBhYmlsaXR5X2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19FRl9SQVRfTU9ERSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtOV10gRUYgUkFUIHZhbGlkOiVkLCBlZl9yYXRfbW9kZTolZCwgcmF0X21vZGU6JU1sNGNfcmF0X2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19EVUFMX1BTX0FUVEFDSF9DT05GTElDVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtTaW5nbGUgUFNdIEFub3RoZXIgU0lNIFBTIGRldGFjaCBhY3Rpb24gaXMgbm90IGNvbXBsZXRlIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fRFVBTF9BTFdBWVNfQVRUQUNIX0NPTkZMSUNUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdW1NpbmdsZSBQU10gQm90aCBTSU0gY2Fubm90IGRvIFBTIGF0dGFjaCBhdCB0aGUgc2FtZSB0aW1lIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fVUJJTl9TQU1FX0NTUkFfUEFSQU0iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1VCSU5dVGhlIHNhbWUgQ1NSQSBwYXJhbSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19USU1FX0lORk8iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiVGltZSBJbmZvOiB1dGMoJWQpLCBkYXlsaWdodCBzYXZpbmcgdGltZSAoJWQpLCBsZWFwIHNlY29uZHMgKCVkKSwgbG9jYWwgdGltZSBvZmZzZXQgKCVkKSwgY3VycmVudCB0aWNrICglZCkgIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0VSQVRfTE9DS0VEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlRoZSArRVJBVCBpcyBsb2NrZWQgKGVyYXRfbG9jazolZCksIHNlbnQgQVQrRVJBVD08cmF0X21vZGU+LCwwIHRvIHVubG9jayEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRVJBVF9OT19TQVZFRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICIgK0VSQVQgOjxpc19ub19zYXZlZD46JWQsIDE6IFJhdCBNb2RlIG5vIHNhdmVkIHRvIE5WUkFNISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1JBVF9CQUxBTkNJTkciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiY2hhbmdlIFJBVCBmb3IgUkFUIGJhbGFuY2luZywgcmF0X21vZGU6JU1sNGNfcmF0X2VudW0sIGw0Y3JhY19nZXRfcmF0X21vZGUoKTolTWw0Y19yYXRfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0VOV0JESU5GT19NT0RFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlJNTUlfUFRSLT5lbndiZGluZm9fbW9kZSA9IDA7IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1NFTEVDVF9BVVRPX01PREVfRlJPTV9NQU5VQUwiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU2VsZWN0IEFVVE8gbW9kZSBmcm9tIE1BTlVBTCBpZiBSZWZyZXNoIHR5cGUgcmVzZXQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUk9PVF9BQ1RJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gcm9vdF9hY3Rpb24gPSAlTWw0Y19yb290X2FjdGlvbl9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX09TVERfSU5GSU5JVEVfU0xFRVBfT05HT0lORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBPU1REX01EX0luZmluaXRlX1NsZWVwKCkgaXMgT25nb2luZyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19PU1REX0lORklOSVRFX1NMRUVQX0RPTkUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gT1NURF9NRF9JbmZpbml0ZV9TbGVlcCgpIERvbmUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRUdNQ19QQVJTRV9QQVJBTV9FTVBUWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRUdNQ10gcGFyc2UgcGFyYW0gJTJkIHJlc3VsdDogZW1wdHkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRUdNQ19QQVJTRV9QQVJBTV9JTlRFR0VSIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltFR01DXSBwYXJzZSBwYXJhbSAlMmQgcmVzdWx0OiB1bnNpZ24gaW50ZWdlcjogJXUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRUdNQ19QQVJTRV9QQVJBTV9TSUdOX0lOVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRUdNQ10gcGFyc2UgcGFyYW0gJTJkIHJlc3VsdDogc2lnbiBpbnRlZ2VyOiAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19FR01DX1BBUlNFX1BBUkFNX1NUUklORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRUdNQ10gcGFyc2UgcGFyYW0gJTJkIHJlc3VsdDogc21hbGwgc3RyaW5nOiBcXFwiJXNcXFwiIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0VHTUNfUEFSU0VfUEFSQU1fVU5LTk9XTl9TVFIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0VHTUNdIHBhcnNlIHBhcmFtICUyZCByZXN1bHQ6IHVua25vd24gc3RyaW5nOiAlcyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19FR01DX0NPTlNUUlVDVF9QQVJBTV9FTVBUWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRUdNQ10gY29uc3RydWN0IHBhcmFtICUyZDogZW1wdHkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRUdNQ19DT05TVFJVQ1RfUEFSQU1fSU5URUdFUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRUdNQ10gY29uc3RydWN0IHBhcmFtICUyZDogdW5zaWduIGludGVnZXI6ICV1IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0VHTUNfQ09OU1RSVUNUX1BBUkFNX1NJR05fSU5UIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltFR01DXSBjb25zdHJ1Y3QgcGFyYW0gJTJkOiBzaWduIGludGVnZXI6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0VHTUNfQ09OU1RSVUNUX1BBUkFNX1NUUklORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRUdNQ10gY29uc3RydWN0IHBhcmFtICUyZDogc21hbGwgc3RyaW5nOiBcXFwiJXNcXFwiIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0lOVEVSTkFMX0dNQ19QUk9DRVNTX01BVENIX1JMVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfaW50ZXJuYWxfZ21jX3Byb2Nlc3M6ICVNbDRjX2F0X2NtZF9wcm9jZXNzX3R5cGVfZW51bSwgbWF0Y2ggJWQgd2l0aCBNQVggdGFibGUgc2l6ZSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19FUFNOTFRFX01SU19JTkZPIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkVQU05MVEU6IGlzX3ZhbGlkOiVkLCBhc19yZWFzb246JWQsIG5hc19yZWFzb246JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfQ1NfUFNfUkVHX1NUQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkNTIHJlZyBzdGF0ZSBpcyA6ICVNcm1taV9yZWdfc3RhdGVfZW51bSwgUFMgcmVnIHN0YXRlIGlzIDogJU1ybW1pX3JlZ19zdGF0ZV9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX09QMDFfU0VUX1JBVF9NT0RFX0ZBSUwiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjIG9wMDEgc2V0IHJhdCBtb2RlIGZhaWwiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRU5RVUVfT1AwMV9QRU5ESU5HX0FDVElPTl9SRVNVTFQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjIGVucXVlIG9wMDEgcGVuZGluZyBhY3Rpb24sYWN0aW9uOiVNbDRjX3BlbmRpbmdfYWN0aW9uX2VudW0scmVzdWx0OiVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX09QMDFfTE9DS19GSUxURVJfRVJBVF9UT19HU00iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX29wMDFfbG9ja19maWx0ZXJfcmF0X3RvX2dzbSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19PUDAxX0xPQ0tfRklMVEVSX0VSQVRfVE9fV0ciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX29wMDFfbG9ja19maWx0ZXJfcmF0X3RvX3dnIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX09QMDFfTE9DS19GSUxURVJfUkFUX01PREVfVE9fR1NNIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19vcDAxX2ZpbHRlcl9yYXRfbW9kZV90b19nc20sb2xkOiVNbDRjX3JhdF9lbnVtLG5ldzolTWw0Y19yYXRfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19PUDAxX0xPQ0tfRklMVEVSX1JBVF9NT0RFX1RPX1dHIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19vcDAxX2ZpbHRlcl9yYXRfbW9kZV90b193ZyxvbGQ6JU1sNGNfcmF0X2VudW0sbmV3OiVNbDRjX3JhdF9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX09QMDFfTE9DS19GSUxURVJfRVJBVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfb3AwMV9sb2NrX2ZpbHRlcl9lcmF0LHJhdF9tb2RlOiVNbDRjX3JhdF9lbnVtLHByZWZlcl9yYXQ6JU1sNGNfcmF0X2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfQkVBUkVSX1VQREFURUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bUFNdIEw0QyBQUyBiZWFyZXIgdXBkYXRlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJMNENfUFNfQ0xFQVJfUExNTl9MSVNUX0JMT0NLX0FQTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtQU10gbDRjIHBzIGNsZWFyIHBsbW4gbGlzdCBibG9jayBhcG4sIGNhdXNlID0gJU1wc19jYXVzZV9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDU01VX1NUQVJUX0NORl9JTkZPIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogInNpbV9wb3dlcl9zdGF0ZT0lTWw0Y19zaW1fc3RhdGVfZW51bSwgc211X2FjdGl2YXRlZD0lZCwgc2ltX3JlZnJlc2g9JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENTTVVfVlNJTV9SQVRfQ09ORkxJQ1QiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1ZTSU1dIFZTSU0oJXMpIGNhbiBub3QgZW5hYmxlIGluIGN1cnJlbnQgUkFUIE1PREU6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUEVORElOR19QQVNTV0RfT0ZfT1RIRVIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1NNTF0gc2xvdFslZF0gcm9vdCBwZW5kaW5nIHBhc3N3b3JkIDogJU1zbXVfcGVuZGluZ19wYXNzd29yZF9pZF9lbnVtIHNpbV9pbnNlcnRlZCA6ICVNbDRjX3NpbmdsZV9zaW1faW5zZXJ0ZWRfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19FUE9GX0FVRElPX1dBSVRJTkciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gV2FpdCBmb3IgQVVESU8gQUNLIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0VQT0ZfQVVESU9fQUNLIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIEFVRElPIEFDSyBmb3IgYXVkaW8gcG93ZXItb2ZmIGRvbmUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRVJUVFNUUl9BVURJT19JTkQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiQVVESU8gaW5kaWNhdGlvbiBmb3IgcnR0IHN0cmluZyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1NCUF9QU19JRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJQUyBJRCA9ICVNcHJvdG9jb2xfaWRfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1NCUF9JRF9JTkZPIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIiVNcHJvdG9jb2xfaWRfZW51bSBTQlAgSUQgPSAlZCwgU0JQIFN1YklEPSAlZCwgTUQgQ0NDSSBTQlAgPSAlZCwgTUQgQ0NDSSBTdWJJRCA9ICVkLCBPTERfU0JQX0lEID0gJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19TQlBfRFNCUF9JRF9JTkZPIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkN1cnJlbnQgU0lNIFNCUCBJRCA9ICVkLCBELVNCUCBNb2RlIDEgU0JQIElEOiAlZCwgRC1TQlAgTW9kZSAyIFNCUCBJRDogJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19TQlBfSURfQ1VSUkVOVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJTQlAgSUQgW2N1cnJlbnRdID0gJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19TQlBfSURfVE9fQ0hBTkdFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlNCUCBJRCBbdG8gY2hhbmdlXSA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU0JQX01DQ19NTkMiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU0JQIFtNQ0MgTU5DXSA9ICVzIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU0JQX0lEX0ZST01fTUNDX01OQyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJTQlAgSUQgW2Zyb20gbWNjIG1uY10gPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1NCUF9SRUNPTkdJR1VSRV9SRVEiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU2VuZCBSRVEgdG8gU0JQIHRhYmxlWyVkXT0lTW1vZHVsZV90eXBlLCBnZW1pbmlfY2hlY2s6IDB4JTAyeCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1NCUF9SRUNPTkdJR1VSRV9DTkYiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiUmVjZWl2ZSBDTkYgZnJvbSBTQlAgdGFibGVbJWRdPSVNbW9kdWxlX3R5cGUsIGdlbWluaV9jaGVjazogMHglMDJ4IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU0JQX1dBSVRfUkVDT05HSUdVUkVfQ05GIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhaXQgZm9yIENORiBmcm9tIFNCUCB0YWJsZVslZF09JU1tb2R1bGVfdHlwZSwgZ2VtaW5pX2NoZWNrOiAweCUwMngiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19TQlBfUkVDT05GSUdVUkVfVEJMIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltTQlBdIGNhbGwgY3VzdG9tIGZ1bmN0aW9uIGZyb20gU0JQIHRhYmxlWyVkXT0lTW1vZHVsZV90eXBlLCByZWNvbmZpZ3VyZSB0eXBlOiAweCUwMngsIGdlbWluaV9jaGVjazogMHglMDJ4IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU0JQX0w0Q19GRUFUVVJFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltTQlBdJU1zYnBfbWRfZmVhdHVyZV9lbnVtOiVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1NCUF9MNENfREFUQSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbU0JQIGRhdGFdJU1zYnBfbWRfZmVhdHVyZV9kYXRhX2VudW06JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU0JQX0RTU19PTkdPSU5HIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltTQlBdIERTUyBvbmdvaW5nISBOb3QgYWxsb3cgRFNCUCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1NCUF9OT1RfQUxMT1dFRF9SRUNPTkZJR19UWVBFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltTQlBdIFVuZXhwZWN0ZWQgUmVjb25maWcgdHlwZSEgTm90IGFsbG93IERTQlAiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19TQlBfRFNCUF9PTkdPSU5HIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltTQlBdIERTQlAgb2YgUFMlZCBvbmdvaW5nIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU0JQX1RYSURfTDRDX1NFVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbU0JQXSBzZXQgbDRjIHRyYW5zX2lkICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU0JQX1VORVhQRUNURURfUkVDT05GSUdfVFlQRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbU0JQXSBVbmV4cGVjdGVkIFJlY29uZmlnIHR5cGUgJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19QQVJBIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogInBhcmFtZXRlclslTWw0Y19zb3VyY2VfaWRfZW51bV0ubGVuZ3RoPSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19VQVJUX0NUUkxEQ0QiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiVUFSVF9DdHJsRENEKCksIHBvcnQgPSVoZCx2YWx1ZT0laGQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19OT19HUFJTX0RJQUxVUF9FWElTVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJBbHJlYWR5IG5vIEdQUlMgZGlhbHVwIGV4aXN0IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUkVUVVJOX0RVRV9UT19VQVJUX0lOX0RBVEFfTU9ERSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJybW1pX3dyaXRlX3RvX3VhcnQoKTogcmV0dXJuIGR1ZSB0byB1YXJ0IGluIGRhdGEgbW9kZSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1NUQVJUX1RJTUVSIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIFN0YXJ0IHRpbWVyOiAlTWw0Y190aW1lcl9pZF9lbnVtLCBsZW5ndGg6JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19TVE9QX1RJTUVSIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIFN0b3AgdGltZXI6ICVNbDRjX3RpbWVyX2lkX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19USU1FUl9FWFBJUkVEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIHRpbWVyIGV4cGlyZWQ6ICVNbDRjX3RpbWVyX2lkX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DQU5DRUxfRVZFTlQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiY2FuY2VsIEw0QyB0aW1lciEsIGV2ZW50X2lkPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fVElNRVJPVVRfRVZFTlQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiTDRDIHRpbWVyIHRpbWVvdXQhLCBldmVudF9pZD0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1NUQVJUX0VWRU5UIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogInN0YXJ0IEw0QyB0aW1lciEsIGV2ZW50X2lkPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1NUQVJUVVAiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAicG93ZXJvbiwgY3VycmVudCBhY3Rpb249JU1sNGNfYWN0aW9uX2VudW0sIHNtdV9hY3RpdmF0ZWQ9JWhkLCBpc19yYWNfYWN0aXZhdGVkKCk9JU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TRVJWSUNFX01PREVfQ0hBTkdFX0VYRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtTZXJ2aWNlIE1vZGUgQ2hhbmdlXSBTa2lwIFBTICVkIGF0IGxpbmUgJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRlVOQ1RJT05fTkFNRV9BTkRfUkVUVVJOX0xJTkUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gRnVuY3Rpb24gJXMgcmV0dXJuICVNa2FsX2Jvb2wgYXQgbGluZSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX0FOVEVOTkFfU1RBVEVfUEVORElOR19SQVQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gZ2V0X2FudGVubmFfc3RhdGVfcGVuZGluZ19yYXQ6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiUk1NSV9QUk9DRVNTX01VTFRJX0NNRF9BRlRFUl9QUk9DRVNTX01NSV9NU0ciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiQ2hlY2sgbXVsdGktY21kIGFmdGVyIHByb2Nlc3NpbmcgTU1JIG1lc3NhZ2UsaXNfdWNtX2FjdGlvbiA9ICVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0hWT0xURV9NT0RFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImhWb0xURV9lbmFibGU9JU1odm9sdGVfZW5hYmxlX3N0YXR1c19lbnVtLCBoVm9MVEVfbW9kZT0lTWh2b2x0ZV9tb2RlX2VudW0sIGltc192b2ljZV9yYXQ9JU1pbXNfY2FwX3JhdF9lbnVtLCBoVm9MVEVfZW5hYmxlX2Zvcl9yb2FtaW5nPSVNaHZvbHRlX2VuYWJsZV9zdGF0dXNfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0lTX0lNU19TVVBQT1JUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImlzX2ltc190dXJuZWRfb249JU1rYWxfYm9vbCwgaW1zX3ZvaWNlX3JhdD0lTWltc19jYXBfcmF0X2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19OT1RfU0VORF9DSUVWX0RFRkFVTFQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiZG8gbm90IHNlbmQgK2NpZXY6MiwwIHdoZW4gY3Jzc19jbmYsIGR1ZSB0byB0aGVyZSBpcyBzdGlsbCBob2xkIGNhbGwgZXhpc3QiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DQUxMX0RJU0NfQ05GX0hETFJfQVREX0FCT1JUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImNhbGxfZGlzY19jbmZfaGRscjogQVREIGFib3J0ZWQhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQVRIX0ZPUl9EQVRBX0NBTEwiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiY2FsbF9kaXNjX2NuZl9oZGxyOiBBVEggZm9yIGRhdGEgY2FsbCEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19SRVRVUk5fTk9fQ0FSUklFUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJyZXRydW4gTk8gQ0FSUklFUiBmb3IgYXRhIHdoZW4gYW5zd2VyaW5nIGRhdGEgY2FsbCBmYWlsIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUkVUVVJOX09LX0ZPUl9BVEEiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAicmV0cnVuIE9LIGZvciBhdGEgd2hlbiBhbnN3ZXJpbmcgZGF0YSBjYWxsIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTk9UX1NFTkRfQ0lFVl9TVEFUVVMiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiK2NpZXYgc3RhdHVzIHNob3VsZCBub3QgYmUgc2VudCBiZWZvcmUgZmluYWwgcmVzdWx0IG9mIEFUSCBvciBDSExEIGlzIGdpdmVuIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fQ0xFQVJfRkQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiQ2xlYXIgcHJldmlvdXMgZmRbMl0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19FSU1HX0VNRFlfUkVUVVJOX09LIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkVJTUcvRU1EWSByZXR1cm4gT0sgZGlyZWN0bHkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19DTEVBUl9QUkVWSU9VU19QQVRIIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImNsZWFyIHByZXZpb3VzIHBhdGgiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19ESVNLIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImRpc2s9JXgsJWMiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRVFfVVNCVUFSVF9TV0lUQ0hfUE9SVF9SRVFfQ0FMTF9VQVJUX1NXSVRDSFBPUlQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX2VxX3VzYnVhcnRfc3dpdGNoX3BvcnRfcmVxKCkgY2FsbCBVQVJUX1N3aXRjaFBvcnQoKTpQU19VQVJUX1BPUlQ9JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRVFfVVNCVUFSVDJfVFNUX1VTQUdFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlRTVF9QT1JUPSVkLCBUU1RfUE9SVF9MMT0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19GUkVFX0NIQU5ORUxfSVNfRk9VTkQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiRnJlZSBybW1pIGNoYW5uZWwgaXMgZm91bmQsIGNpZD0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19VU0JVQVJUMl9JU19GT1VORF9PUl9OT1QiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAidWFydF9wb3J0X3VzYjIgaXMgZm91bmQ9JWQsIGNpZD0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1BPV0VSX09OX0FMQVJNIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlBPV0VSX09OX0FMQVJNIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fVVNCX0NBQkxFX1BMVUdPVVQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiVVNCIGNhYmxlIHBsdWdvdXQgd2hlbiBlaW1nL2VtZHkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19TRVRfUEVORElOR19BVFRBQ0hfU0VUVElORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJTZXQgcGVuZGluZyBhdHRhY2ggc2V0dGluZz0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1NNU19GRE5fQ0hFQ0tfREFfQUREUkVTUyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJTTVMgRkROIGNoZWNrIERBIGFkZHJlc3Mgb25seSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0RJU0FMTE9XX0RJQUxVUF9EVVRfVE9fQ0FNRVJBX1JVTlVORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJEaXNhbGxvdyBkaWFsdXAgc2VydmljZSBkdWUgdG8gY2FtZXJhIHJ1bmluZyx0ZW1wX3NyYz0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0NQSFNfTE9DS19CTE9DS0VEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkNQSFMgbG9jayBibG9ja2VkISEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19JTl9MNENTTVNBTF9ERUxFVEVfQ05GX0hETFIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiRVJST1I6SW4gbDRjc21zYWxfZGVsZXRlX2NuZl9oZGxyICxpbmRleCA9JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19JTlZBTElEX09BX0FERFJfTEVOR1RIIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkw0Q1NNU0FMX05FV19NU0dfSU5ERVg6IEludmFsaWQgT0EgYWRkcmVzcyBsZW5ndGggPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fSU5fTDRDU01TQUxfU1RBVFVTX0NORl9IRExSIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkVSUk9SOkluIGw0Y3Ntc2FsX3NldF9zdGF0dXNfY25mX2hkbHIgLGluZGV4ID0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19PQlRBSU5fVUFSVF9DT05UUk9MX0NBTExfVUFSVF9TV0lUQ0hQT1JUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19vYnRhaW5fdWFydF9jb250cm9sKCkgY2FsbCBVQVJUX1N3aXRjaFBvcnQoKTpQU19VQVJUX1BPUlQ9JWQsdWFydF9wb3J0X3ZhbHVlPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fRFVBTF9TSU1fVE9fRkxJR0hUX01PREUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiZHVhbCBTSU0gdG8gZmxpZ3QgbW9kZSB3aGVuIFNJTTIgaXMgZG9pbmcgJU1sNGNfYWN0aW9uX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19QTE1OX1NFTEVDVElPTl9GT1JfRUNDX0NBTExfUkVUUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiUExNTiBTRUxFQ1RJT04gZm9yIEVDQyBjYWxsIHJldHJ5IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUkFDX0NVUlJFTlRfQUNUSU9OX0lTX0NPUFNfVEVTVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcHJldmlvdXNfcmFjX2FjdGlvbl9yc3AoKSwgcmFjX2N1cnJlbnRfYWN0aW9uPUNPUFNfVEVTVCxyYWNfdXNlcj0laGQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19ERVZJQ0VfQU5EX09OX09GRiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJkZXZpY2U9JWQsIG9uX29mZj0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1VQREFURV9DQUxMX0lEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlRvIHVwZGF0ZSBjYWxsX2lkPSVkIGZvciBtbyBkYXRhIGNhbGwiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19GQyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJGQyA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fVEVNUF9WQUxVRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJ0ZW1wX3ZhbHVlPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTk9fTEVOR0hfSU5QVVQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibm8gbGVuZ3RoIGlucHV0IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fSU5WQUxJRF9MRU5HSF9JTlBVVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJpbnZhbGlkIGxlbmd0aCBpbnB1dCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0ZJTkRDTE9TRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJGaW5kQ2xvc2UiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19GSU5ERklSU1QiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiRmluZEZpcnN0IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fT05MSU5FX1NUQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIm9ubGluZSBzdGF0ZSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0NMUlRYQlVGRkVSIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkNsclR4QnVmZmVyIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fU0VORF9TRUxfSU5EIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogInNlbmQgc2VsX2luZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0xNTUlfU1RBVEVfQU5EX0NVUlJFTlRfQUNUSU9OIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkxNTUk6IHN0YXRlID0gJWhkLCBjdXJyZW50X2FjdGlvbiA9ICVoZFxcbiIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1NUQVRFX0FORF9DVVJSRU5UX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJSTU1NSTogc3RhdGUgPSAlaGQsIGN1cnJlbnRfYWN0aW9uID0gJWhkXFxuIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUk1NSV9LRVlQUkVTUyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJrZXkgcHJlc3MsIGtleWNvZGU9JWQsIGtleWNvZGUgaWR4ID0gJWQsIHdpbmRleCA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUk1NSV9LRVlSRUxFQVNFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImtleSByZWxlYXNlLCBrZXljb2RlPSVkLCBrZXljb2RlIGlkeCA9ICVkLCB3aW5kZXggPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1JNTUlfS0VZTE9OR1BSRVNTIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImtleSBsb25nIHByZXNzLCBrZXljb2RlPSVkLCBrZXljb2RlIGlkeCA9ICVkLCB3aW5kZXggPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX1JNTUlfS0VZUkVQRUFUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImtleSByZXBlYXQsIGtleWNvZGU9JWQsIGtleWNvZGUgaWR4ID0gJWQsIHdpbmRleCA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0tCREdFVEtFWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfa2JkX2dldGtleWRhdGEoKSwga2V5ZXZlbnQgPSAlTWtiZF9ldmVudCwga2V5Y29kZT0lZCwgcmluZGV4ID0gJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19BQk9SVF9QTE1OX1NFTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJhYm9ydCBwbG1uIHNlbCEsIG9wY29kZT0lZCwgcGxtbl9pZD0lZCVkJWQlZCVkJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19QUkVWRU5UX1NFTkRfQ1BJX0ZPUl9SRVRSWV9DQUxMIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlByZXZlbnQgdG8gc2VuZCBDUEkgcmVsYXRlZCB0byByZXRyeSBjYWxsKGNhbGxfaWQ9JWQpIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDVUVNX1VTQkRFVEVDVF9JTkQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjdWVtX3VzYmRldGVjdF9pbmQoKSAsYWN0aW9uPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fVVNCVUFSVF9TV0lUQ0hfUE9SVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfZXFfdXNidWFydF9zd2l0Y2hfcG9ydF9yZXEoKSAsc3JjX2lkPSVkLGFwcD0lZCxuZXdfcG9ydD0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TVEFSVF9TQVRfUkVESUFMIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkw0QyBzdGFydCBzYXQgcmVkaWFsISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19DVVJSRU5UX1NJTV9NQVBQSU5HX0ZPUl8zR19TV0lUQ0giOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiY3VyX3NpbV9tYXA6ICVNc2ltX2ludGVyZmFjZV9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1BTX0lTX0RBVEFfU0lNIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkN1cnJlbnQgcHJvdG9jb2wgaXMgZGF0YSBzaW06ICVNa2FsX2Jvb2wiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUk9PVF9QRU5ESU5HX1BBU1NXRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTElOS19TTUxdIHBlbmRpbmdfcGFzc3dkW3Nsb3QlZF06JU1zbXVfcGVuZGluZ19wYXNzd29yZF9pZF9lbnVtLCBuZWVkX3VubG9ja190YWJsZTolTWthbF9ib29sIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1BSRUZFUl9QTE1OX0ZJTEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiUExNTiBmaWxlOiAlTXNpbV9maWxlX2luZGV4X2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfQUNUSVZFX1JBVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJBY3RpdmUgUkFUOiAlTXJhdF9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0FDVElWRV8zR1BQX1JBVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJBY3RpdmUgM0dQUF9SQVQ6ICVNcmF0X2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19TRU5EX0lQQ19NU0ciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU2VuZCBJUEMgbXNnX2lkPSV4IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUkVDX0lQQ19NU0ciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiUmVjZWl2ZSBJUEMgbXNnX2lkPSV4IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTUNDTU5DX1VTSVIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1JlZ2lvbmFsIFBob25lXW1jY19tbmM6ICVTIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1NFTlNJVElWRV9VU0lSIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fUkVHSU9OQUxfUEhPTkVfTU9ERSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbUmVnaW9uYWwgUGhvbmVdbW9kZTolZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0RJU0FMTE9XX0lSQVQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiRGlzYWxsb3cgSVJBVCBkdWUgdG8gUlNWQSBzdXNwZW5kIG9yIGFib3J0IHNlcnZpY2UiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19SRUNPTkdJR1VSRV9SRVEiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU2VuZCBSRVEgdG8gbW9kdWxlX3RibFslZF0sIGdlbWluaV9jaGVjazogJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19SRUNPTkdJR1VSRV9DTkYiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiUmVjZWl2ZSBDTkYgZnJvbSBtb2R1bGVfdGJsWyVkXSBnZW1pbmlfY2hlY2s6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1JFU0VORF9BRlIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU3RhcnQgdG8gcmV0cnkgQUZSIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUFdTX0lHTk9SRV9JTl9IUExNTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbUFdTXSBJZ25vcmUgUFdTIG1lc3NhZ2VzIGluIEhQTE1OIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fUFdTX0lHTk9SRV9JTl9WUExNTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbUFdTXSBJZ25vcmUgUFdTIG1lc3NhZ2VzIGluIFZQTE1OIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fV09STERfTU9ERSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXT1JMRF9NT0RFOiAweCV4IChGb3JtYXQ6IDB8TnxMZnxMdHxXfEN8VHxHKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TQVRfQ1VTQVREX0VSUk9SIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltDVVNBVEQgRVJST1JdIFVJQ0MgU1RBVEU6ICVNY3VzYXRzX3VpY2Nfc3RhdGVfZW51bSwgVUZDIHN1cHBvcnQ6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0NVUlJFTlRfUk9PVF9BQ1RJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bUk9PVF1DdXJyZW50IHJvb3RfYWN0aW9uPSVNbDRjX3Jvb3RfYWN0aW9uX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfU0lNX1BPV0VST0ZGX1NUQVRFX0NIQU5HRUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gc2ltX3Bvd2VyX3N0YXRlIGlzIGNoYW5nZWQgZnJvbSAlTWw0Y19zaW1fc3RhdGVfZW51bSB0byAlTWw0Y19zaW1fc3RhdGVfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TSU1fUE9XRVJPRkZfU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gbW9kIGlkIDogJU1tb2R1bGVfdHlwZSwgc2ltX3Bvd2VyX3N0YXRlID0gJU1sNGNfc2ltX3N0YXRlX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfU0lNX1BPV0VST0ZGX1JFTEFURURfU1RBVFVTIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImN1cnJlbnQgbW9kOiAlTW1vZHVsZV90eXBlLCBzaW1fcG93ZXJfc3RhdGUgcmVsYXRlZCBzdGF0dXM6IGNmdW5fc3RhdGUgOiAldSwgcG93ZXJvbl9tb2RlID0gJU1wb3dlcl9vbl9zdGF0dXNfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TSU1fUE9XRVJPRkZfUkVUUllfVElNRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBwb3dlcm9mZl9yZXRyeSA9ICV1IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1NJTV9QT1dFUk9GRl9DTEVBUl9SRVRSWV9USU1FIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIGNsZWFyIHBvd2Vyb2ZmX3JldHJ5ID0gJXUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfU0lNX1BPV0VST0ZGX05PVF9SRUFEWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBTSU0gUG93ZXIgb2ZmIG5vdCByZWFkeSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TSU1fU1RBVFVTX0JJVE1BU0siOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAic2ltX3N0YXR1c19iaXRtYXNrOiAweCV4IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1NJTV9EU1NfT05HT0lORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJTSU0gc3dpdGNoIG9uZ29pbmchIElnbm9yZSBTSU1fRVJST1IiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfU0lNX1ZFUklGSUVEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlNJTSBpcyByZWFkeSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19ERUxBWV9TV0lUQ0hfVE9fU1JMVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiZGVsYXlfc3dpdGNoX3RvX1NSTFRFX21vZGU9JU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19ERUxBWV9TV0lUQ0hfVE9fVk9QUyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJkZWxheV9zd2l0Y2hfdG9fVk9QU19tb2RlPSVNa2FsX2Jvb2wiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRElBTF9DMktfU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3B0ci0+bDRjX2RpYWxfYzJrX3N0YXRlID0gJU1sNGNfZGlhbF9jMmtfc3RhdGVfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19HTE9CQUxfUkFUX01PREUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiQVAgZ2xvYmFsIFJBVCBtb2RlPSVNbDRjX3JhdF9lbnVtLCBWYWxpZCBnbG9iYWwgUkFUIG1vZGU9JU1sNGNfcmF0X2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfQUtBX0FVVEhfQUJPUlRfUkVDRUlWRUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiQUtBIEFVVEggQWJvcnQgcmVjZWl2ZWQgZnJvbSBSU0lNIFN0YWNrIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1JTSU1fUEVORElOR19BQ1RJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiUlNJTSBwZW5kaW5nIGFjdGlvbiA9JU1sNGNfcnNpbV9wZW5kaW5nX2FjdGlvbl9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1NFVF9PUDAxX0xPQ0tfU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NldF9vcDAxX2xvY2tfc3RhdGU6JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfU0VUX09QMTJfTE9DS19TVEFURSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICIgbDRjX29wMTJfbG9ja19yZWdfYnlfdnp3X2FkbV9hcG46ICVkIC0+ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1NFVF9PUDEyX0xPQ0tfU1RBVEVfUkVTRVQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiIHNpbV9lcnJvcl9pbmRfaGRscjogb3AxMiByZWcgdW5sb2NrOiVkIGJ5ICVNc2ltX2Vycm9yX2NhdXNlX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfQ0hBTkdFX1JBVF9NT0RFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkNoYW5naW5nIFJBVCBNT0RFIHRvIDRHIG9ubHkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUkVWRVJUX1JBVF9NT0RFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlJldmVydGluZyBSQVQgTU9ERSBmcm9tIDRHIG9ubHkgdG8gQVAgUkFUIE1PREUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfSU5WQUxJRF9SQVRfTU9ERSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJUcnlpbmcgdG8gc2V0IGludmFsaWQgUkFUIG1vZGUuIFJldHVybiBFUlJPUiIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TSU1fRFVQTEVYX01PREVfUkVTRVRfU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gbW9kIGlkIDogJU1tb2R1bGVfdHlwZSwgZHVwbGV4X21vZGVfcmVzZXRfc3RhdGUgPSAlTWw0Y19zaW1fZHVwbGV4X21vZGVfcmVzZXRfc3RhdGVfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TSU1fQ1VSUkVOVF9EVVBMRVhfTU9ERV9SRVNFVF9TVEFURSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBkdXBsZXhfbW9kZV9yZXNldF9zdGF0ZSA9ICVNbDRjX3NpbV9kdXBsZXhfbW9kZV9yZXNldF9zdGF0ZV9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0RFTEVURV9QRU5ESU5HX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBEZWxldGUgcGVuZGluZyBhY3Rpb246ICVNbDRjX3BlbmRpbmdfYWN0aW9uX2VudW0sIGluZGV4OlsldV0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfRU5RVUVVRV9QRU5ESU5HX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBFbnF1ZXVlIHBlbmRpbmcgYWN0aW9uOiAlTWw0Y19wZW5kaW5nX2FjdGlvbl9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX0RFUVVFVUVfUEVORElOR19BQ1RJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gRGVxdWV1ZSBwZW5kaW5nIGFjdGlvbjogJU1sNGNfcGVuZGluZ19hY3Rpb25fZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19QRU5ESU5HX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBQZW5kaW5nIGFjdGlvblslZF06ICVNbDRjX3BlbmRpbmdfYWN0aW9uX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfUEVORElOR19BQ1RJT05fQUxSRUFEWV9JTl9RVUVVRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBXYXJuaW5nOiBUaGUgcGVuZGluZyBhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBpbiB0aGUgcXVldWUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfTk9fTDRTVUJfSU5JVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBubyByZS1pbml0IGw0IHN1Ym1vZHVsZSBpbiAlcyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TRU5EX0FUVEFDSF9SRVNVTFQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gU2VuZCBQUyBhdHRhY2ggcmVxdWVzdCByZXN1bHQgPSAlTWthbF9ib29sIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIklORk9fTDRDX1JPT1RfVVBEQVRFX0xPQ0tfU1RBVFVTX0lTX0lOVkFMSURfU0lNIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMSU5LX1NNTF0gQ3VycmVudCBTSU0gKHNsb3QlZCkgaXMgbm90IHZhbGlkIFNJTSwgc2tpcCBMSU5LIFNNTCB1cGRhdGUgcHJvY2VzcyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19ST09UX1VQREFURV9MT0NLX1NUQVRVU19DVVJfSVNfQ1RSTF9TSU0iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0xJTktfU01MXSBDdXJyZW50IFNJTSAoc2xvdCVkKSBpcyBDdHJsIFNJTSwgcnVuIExJTksgU01MIHVwZGF0ZSBwcm9jZXNzIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUk9PVF9VUERBVEVfTE9DS19TVEFUVVNfSU5WQUxJRF9TSU0iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0xJTktfU01MXSBTSU0lZCBpcyB2YWxpZCBTSU0sIG5vIG5lZWQgdG8gdXBkYXRlIFNNTCBzdGF0dXMiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19ST09UX1VQREFURV9MT0NLX1NUQVRVU19WQUxJRF9TSU1fSU5fU1JWIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMSU5LX1NNTF0gU0lNJWQgaXMgdmFsaWQgU0lNIGFuZCBzdGlsbCBpbiBzZXJ2aWNlLCBubyBuZWVkIHRvIHVwZ3JhZGUvZG93bmdyYWRlIFNNTCBzdGF0dXMiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19ST09UX1VQREFURV9MT0NLX1NUQVRVU19JTlZBTElEX1RPX1ZBTElEX1NJTSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTElOS19TTUxdIERldGVjdCBTSU0lZCBpcyBpbnZhbGlkIFNJTSBidXQgU1VQRVJfVkVSSUZJRUQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19ST09UX1VQREFURV9MT0NLX1NUQVRVU19WQUxJRF9UT19JTlZBTElEX1NJTSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTElOS19TTUxdIERldGVjdCBTSU0lZCBpcyB2YWxpZCBTSU0gYnV0IFNVUEVSX0xPQ0tFRCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1JPT1RfVVBEQVRFX0xPQ0tfU1RBVFVTIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMSU5LX1NNTF0gQ2hlY2tpbmcgUmVzdWx0OiBObyB2YWxpZCBTSU0gaW4gdGhlIHNsb3QsIHJlLWNoZWNrIGFuZCB1cGRhdGUgU01MIHN0YXR1cyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1JPT1RfVVBEQVRFX0xPQ0tfU1RBVFVTX1RBQkxFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMSU5LX1NNTF0gU0lNJWQgOiAlTWxpbmtfc21sX3ZhbGlkX3NpbV9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUk9PVF9SRUFMX1NJTV9WRVJJRllfU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0xJTktfU01MXSByZWFsX3NpbV92ZXJpZnlfc3RhdGVbc2xvdCVkXTolTWxpbmtfc21sX3ZhbGlkX3NpbV9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUk9PVF9VUERBVEVfTE9DS19TVEFUVVNfTk9UX0NUUkxfU0xPVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTElOS19TTUxdIHNraXAgcHJvY2VzcywgU0lNJWQgaXMgbm90IGN0cmwgc2xvdCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1JPT1RfU0tJUF9VUEdSQURFX0FORF9ET1dOR1JBREVfUFJPQ0VTUyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTElOS19TTUxdIHNraXAgcHJvY2Vzcywgbm90IHZhbGlkIHNpbSBvciBydWxlIDkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19ST09UX1NLSVBfVVBHUkFERV9BTkRfRE9XTkdSQURFX1BST0NFU1NfVU5LTk9XTl9PUCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTElOS19TTUxdIHNraXAgcHJvY2VzcywgdW5rbm93biBvcGVyYXRpb24iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJFUlJPUl9MNENfRVdTRUNNT0RFX05WTV9GQUlMX1JBQyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtFV1NFQ01PREVdTlZSQU0gd3JpdGUgdG8gUkFDIGZhaWxlZCAhISEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRVJST1IiCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfRVdTRUNNT0RFX0NGVU5fMSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtFV1NFQ01PREVdQ29tbWFuZCBmYWlsZWQgZHVlIHRvIFJGIE9OLiBDRlVOIFN0YXRlID0gMSAhISEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0VPTlNfU0VUX1NUQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltFT05TXSBzZXRfc3RhdGU6JU1lb25zX3N0YXRlX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0VPTlNfSU5JVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRU9OU10gRU9OUyBJbml0IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19FT05TX0RVTVBfQUNUX1JBVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRU9OU10gYWN0OiAlZCByYXQ6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfTVJTX0VCQ0VMTF9OVU0iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bRUJDRUxMXSBudW0gPSAldSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0VHTUNfREVUQUNIX1JFUSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJWb0xURSBFbGVtZW50IGNoYW5nZWQuIFBlcmZvcm0gREVUQUNIICYgUkVBVFRBQ0giLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSU5GT19MNENfU0FSX1NUQVRFX0lOREVYIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdW1NBUl0gZ19zYXJfc2Vuc29yX3N0YXRlPSAlZCwgc2NlbmFyaW9faW5kZXggPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfU0FSX0FOVF9DTkZfUEVORCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtTQVJdIGdfc2FyX3R4X2FudF9jbmZfcGVuZGluZyA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfU0FSX1RYQU5fVVBEQVRFX05FRURFRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtTQVJdIGdfc2FyX3R4YW50X3VwZGF0ZV9uZWVkZWQgPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1NBUl9NRF9QUk9EVUNUX0lEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdW1NBUl0gbWRfcHJvZHVjdF9tb2RlbF9pZCA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfU0FSX0RBVEFfTURfdG9fQVAiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bU0FSXSBEQVRBIHNlbnQgdG8gVFRZIHBvcnQgZnJvbSBNT0RFTSB0byBBUCBuZWVkX3Nhcl9lbmFibGUgPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX0NBTUVSQV9VUkNfUkVQT1JUSU5HIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdW0NBTUVSQV0gVVJDOiAlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCwlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX0NBTUVSQV9VUkNfUkVQT1JUSU5HX1NUQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkNhbWVyYSByZXBvcnRpbmc6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfQ0hFQ0tfRVVfVVNfWk9ORV9XSVRIX1NJTV9TTE9UIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkNoZWNrX0V1cm9wZVpvbmUgY2FsbGVkIFslZF0sIFslZF0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19JU19FVV9VU19NQ0NfRk9VTkQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiRXVyb3BlL1VTIE1DQyBmb3VuZDogJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX1BPV0VSX09OX0lNRUlfVkVSSUZZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlBvd2VyIG9uIElNRUkgdmVyaWZpY2F0aW9uOiAlcyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX0lNRUlfVkVSSUZJQ0FUSU9OX1dIRU5fQVRUQUNIIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlNlYXJjaCBBTlkgZHVlIHRvIElNRUkgdmVyaWZpY2F0aW9uIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfTklUWl9DQUxMQkFDS19SRVNVTFQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gTklUWiBDQiByZXN1bHQgPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fUE9XRVJfTEVWRUxfVEhSRVNIT0xEU19WQUxVRV9DSEFOR0UiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiRGlmZmVyZW50IHRocmVzaG9sZHMuIFN0b3AgdGltZXIiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX1BPV0VSX0xFVkVMX1RIUkVTSE9MRFNfTlVNQkVSX0NIQU5HRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJOdW1iZXIgb2YgdGhyZXNob2xkcyBhcmUgZGlmZmVyZW50LiBTdG9wIHRpbWVyIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19QT1dFUl9MRVZFTF9USFJFU0hPTERTX1NJTkdOQUxfUkFOR0UiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAic2lnbmFsIHZhbHVlIHJhbmdlIGlzID0gJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX1BPV0VSX0xFVkVMX1RIUkVTSE9MRFNfU0lOR05BTF9SQU5HRV9XSVRIX1BSRVZJT1VTX1JBTkdFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIm9sZCByYW5nZSA9ICVkLCBuZXcgcmFuZ2UgPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fUE9XRVJfTEVWRUxfVEhSRVNIT0xEU19QUkVWSU9VU19SRVBPUlQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAicHJldmlvdXMgcmVwb3J0ZWQgcmFuZ2UgPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTlNTQUlfREFUQV9JU19JTlZBTElEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIk5TU0FJIGRhdGEgZm9ybWF0IGlzIGludmFsaWQgOiAlcyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX0lDRF9GSUxURVJfTk9UX0VOQUJMRUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bSUNEXSBmaWx0ZXIgaXMgbm90IGVuYWJsZSwgcHJvdG9jb2w6ICVkLCBldmVudCBjb2RlOiAlTWljZF9ldmVudF9jb2RlIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfSUNEX1NFTkRfRVZFTlRfRkFJTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtJQ0RdIHNlbmQgZmFpbCwgZXZlbnQgY29kZTogJU1pY2RfZXZlbnRfY29kZSwgZXJyb3IgY29kZTogJU1pY2RfZXJyb3JfY29kZSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX05XU0VMX1NVU1AiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibndzZWwgc3VzcGVuZGVkIGJ5IEw0Qy4gUmVzdW1lIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUkFUX0NIQU5HRV9ET05FIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkw0QyByYXQgY2hhbmdlIGNvbXBsZXRlIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUkFUX0NIQU5HRV9ORUVERUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiTDRDIE5XIC0gUExNTjogJXMsIElzIHJhdCBjaGFuZ2UgbmVlZGVkICVkLCBpcyBsdGUgc2V0ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19SQVRfTU9ERV9OT1RfUkVWRVJUX0RVRV9UT19JTlZBTElEX1BMTU4iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0QyBOV11SQVQgbW9kZSBub3QgcmV2ZXJ0ZWQgdG8gZW5hYmxlIDJHIGJlY2F1c2Ugb2YgaW52YWxpZCBQTE1OLiIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1RJVEFOX0w0Q19VVElMX0tPUl9TRVRUSU5HIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdW2w0Y19jdXN0b21fcmF0X3NldHRpbmdfbmVlZGVkXUlNU0kgPSAlcywgc2ltX2NhcmQgPSAlTWw0Y19zaW1fb3Blcl9lbnVtLCBpc19rb3JfbWNjID0gJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19USVRBTl9MNENfVVRJTF9DVVJfQ1VTVE9NX1NFVFRJTkciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bbDRjX2N1c3RvbV9yYXRfc2V0dGluZ19uZWVkZWRdbDRjX3B0ci0+cmF0X21vZGVfc2V0dGluZyA9ICVNbDRjX3JhdF9tb2RlX2N1c3RvbV90eXBlX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19USVRBTl9MNENfVVRJTF9SQUNfUkFUX1NFVFRJTkciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bbDRjX2N1c3RvbV9yYXRfc2V0dGluZ19uZWVkZWRdUkFUIG1vZGUgc2V0dGluZ3MgTlZSQU0gUkFUIG1vZGUgPSAlTXJhdF9lbnVtLCBDdXIgUkFUIG1vZGUgPSAlTXJhdF9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfVElUQU5fU0VUX1JBVF9GQUlMRUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11TZXQgUkFUIG1vZGUgRmFpbGVkICEhISEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfVElUQU5fU0VUX1JBVF9DVVJfQ1VTVE9NX1NFVFRJTkciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bVElUQU5dW2w0Y19ud19zZXRfcmF0X21vZGVfZXh0X3JlcV1sNGNfcHRyLT5yYXRfbW9kZV9zZXR0aW5nID0gJU1sNGNfcmF0X21vZGVfY3VzdG9tX3R5cGVfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX0NIQU5HRV9SQVRfTU9ERV9GT1JfRENNIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkRDTSBTQlAgZW5hYmxlZC5JbnNpZGUgbDRjX253X2NoZWNrX3JhdF9jaGFuZ2VfbmVlZGVkX2Zvcl9kb2NvbW8oKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX0NPTU1BTkRfVVNJUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXWNvbW1hbmQ6JVMiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfU0VOU0lUSVZFX1VTSVIiCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUEFSVElBTF9TRU5TSVRJVkVfQ01EX1VTSVIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11TZW5zaXRpdmUgY29tbWFuZDolUyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9TRU5TSVRJVkVfVVNJUiIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TSU1fVFJBWV9JTkZPIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdU0lNIHRyYXkgaW5mbyA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfTldfUEhZX0NGR19SRVBPUlQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bTlddIHJlcG9ydCBwaHlzaWNhbCBjb25maWcgaW5mbywgNHg0TUlNTzogJWQsIERMMjU2UUFNOiAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX0VNQ19PTkdPSU5HIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIEVNQyBvbmdvaW5nLiBwc19pZD0lZCwgZW1jPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfQ0hFQ0tfVk9QU19TRVRUSU5HX0ZPUl9TRUFSQ0hfVFlQRV9TS0lQIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIFNraXAgVk9QUyBzZXR0aW5nIGNoZWNrIGZvciBzZWFyY2ggdHlwZSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fU0FUX1RVUk5fRkROX09GRiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbU0FUXSBOZXh0IGNvbW1hbmQgc2hvdWxkIGNvbWUgZnJvbSBTVEssIG5vIEZETiBuZWVkZWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX1NBVF9DSEVDS19GT1JfRkROIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltTQVRdIENoZWNrIGlmIEZETiBub3QgbmVlZGVkLCBleHBlY3RlZCBTVEsgY21kOiAlTXNhdF9jYWxsX2N0cmxfdHlwZV9ub3RpX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX1NBVF9OT19GRE4iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1NBVF0gTm8gRkROIG5lZWRlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fU0FUX0FMUkVBRFlfQ0FMTF9DT05UUk9MIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltTQVRdIFRoaXMgcmVxdWVzdCBhbHJlYWR5IGNvbnRyb2xsZWQgYnkgU0lNIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfQ0lEX0lTX05PVF9QUklNQVJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNEMgUFNdIENJRCBpcyBub3QgcHJpbWFyeSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1NFVF9TTVNfQ0FQX1BBUkFNX1RZUEVfRVJST1IiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gc2V0IFNNUyBjYXBhYmlsaXR5IHBhcmFtIHR5cGUgZXJyb3I6IHR5cGUxOiAlTWw0Y19hdF9jbWRfcGFyYW1fdHlwZSwgdHlwZTI6ICVNbDRjX2F0X2NtZF9wYXJhbV90eXBlIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfU0VUX1NNU19DQVBfUEFSQU0iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gc2V0IFNNUyBjYXBhYmlsaXR5IHBhcmFtOiByYXRfbW9kZTogJU1yYXRfZW51bSwgc21zX2NhcDogJU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1NFVF9TTVNfQ0FQX1BFUkZPUk1fUkVBVFRBQ0giOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gc2V0IFNNUyBjYXBhYmlsaXR5IGFuZCBwZXJmb3JtIHJlIGF0dGFjaCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1FVRVJZX05SX0JBTkRfQ09NQiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBpbmRleDogJWQsIGRhdGE6ICVzIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiU1RBVEVfTDRDX0NDX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfY2M6IHNyY19pZD0lTWw0Y19zb3VyY2VfaWRfZW51bSwgc3RhdGU9JU1sNGNfc3RhdGVfZW51bSwgY2NfY3VycmVudF9hY3Rpb249JU1sNGNfYWN0aW9uX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfU1RBVEUiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIlNUQVRFX0w0Q19TU19BQ1RJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX3NzOiBzc191c2VyPSVNbDRjX3NvdXJjZV9pZF9lbnVtLCBzc19jdXJyZW50X2FjdGlvbj0lTWw0Y19hY3Rpb25fZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9TVEFURSIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiU1RBVEVfTDRDX1NNUyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfc21zOiBzcmNfaWQ9JU1sNGNfc291cmNlX2lkX2VudW0sIHNtc19jdXJyZW50X2FjdGlvbj0lTWw0Y19hY3Rpb25fZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9TVEFURSIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiU1RBVEVfTDRDX1BTX0FCTSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcHNfYWJtOiBjdXJyZW50X2FjdGlvbj0lTWw0Y19hY3Rpb25fZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9TVEFURSIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiU1RBVEVfTDRDX0VRX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfZXE6IGVxX3VzZXI9JU1sNGNfc291cmNlX2lkX2VudW0sIGVxX2N1cnJlbnRfYWN0aW9uPSVNbDRjX2FjdGlvbl9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1NUQVRFIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJTVEFURV9MNENfUkFDX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcmFjOiByYWNfdXNlcj0lTWw0Y19zb3VyY2VfaWRfZW51bSwgcmFjX2N1cnJlbnRfYWN0aW9uPSVNbDRjX2FjdGlvbl9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1NUQVRFIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJTVEFURV9MNENfU01VX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfc211OiBzbXVfdXNlcj0lTWw0Y19zb3VyY2VfaWRfZW51bSwgc211X2N1cnJlbnRfYWN0aW9uPSVNbDRjX2FjdGlvbl9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1NUQVRFIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJTVEFURV9MNENfVENNX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfdGNtOiB0Y21fdXNlcj0lTWw0Y19zb3VyY2VfaWRfZW51bSwgdGNtX2N1cnJlbnRfYWN0aW9uPSVNbDRjX2FjdGlvbl9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1NUQVRFIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJTVEFURV9MNENfVENNX0NPTlRFWFRfQUNUSU9OIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y190Y206IGNvbnRleHRfaWQ9JWQsIHRjbV9jdXJyZW50X2FjdGlvbj0lTWw0Y19hY3Rpb25fZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJTVEFURV9MNENfUEhCX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfcGhiOiBwaGJfdXNlcj0lTWw0Y19zb3VyY2VfaWRfZW51bSwgcGhiX2N1cnJlbnRfYWN0aW9uPSVNbDRjX2FjdGlvbl9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1NUQVRFIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJTVEFURV9MNENfQ0ZVTl9TVEFURSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJjZnVuX3N0YXRlOiAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9TVEFURSIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiU1RBVEVfQzJLX0NGVU5fU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiYzJrX2NmdW5fc3RhdGU6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1NUQVRFIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJTVEFURV9BVEhfRElTQyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJhdGggZGlzYyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJTVEFURV9DTEVBUl9JU19VQ01fQUNUSU9OIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImNsZWFyIGlzX3VjbV9hY3Rpb24iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfU1RBVEUiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfSU5WQUxJRF9OVU1CRVIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibnVtYmVyIGNvbnRhaW5pbmcgaW52YWxpZCBjaGFyICVjIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX0VSUk9SX09VVEdPSU5HX0NBTExfRkFJTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBnZXRfb3V0Z29pbmdfY2FsbCBmYWlsIGluIGw0Y19jY19leGVfYXRoX3JlcSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX01PX0NBTExfRkFJTF9EVUVfVE9fSU5fQ0FMTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBNTyBjYWxsIGZhaWwgZHVlIHRvIGluIGNhbGwiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DQUxMU0VUVVBfRkFJTF9EVUVfVE9fUFJFU0VOVF9DQUxMIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IE1PIGNhbGxzZXR1cCBmYWlsIGR1ZSB0byBhIGV4aXN0aW5nIE1UIHByZXNlbnQgY2FsbCxjYWxsX2lkPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfQVRBX05PVF9BTExPV19CRUZPUkVfU0VORF9TRVRVUF9JTkQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiYWxlcnRpbmd+IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfVVNTRF9VU0VEX1VTU1JfU1RBR0UiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogVVNTRCB3aXRoIGRjcz1VQ1MyIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBVU1NSIHN0YWdlIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfQ01EX0NPTkZMSUNUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkVycm9yOiBjbWQgY29uZmxpY3QgZXJyb3IsIGN1cnJlbnRfYWN0aW9uPSVNbDRjX2FjdGlvbl9lbnVtLCBuZXdfYWN0aW9uPSAlTWw0Y19hY3Rpb25fZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1NTX0NNRF9DT05GTElDVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBzcyBjbWQgY29uZmxpY3Qgd2hlbiBhY3Rpb249UEFSU0VfU1NfRVhFIGFuZCBzcmNfaWQ9Uk1NSV9TUkMgISEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19TU19DT01NQU5EX0NPTkZMSUNUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IHNzIGNtZCBjb25mbGljdCAhISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0NNRF9DT05GTElDVF9JTkNMVURFX0FDVElPTl9BTkRfSVNfQ1RNX0NPTk5FQ1RFRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBjb21hbmQgY29uZmxpY3QgOiBhY3Rpb24gPSBBVERfQVBQICwgaXNfY3RtX2Nvbm5lY3RlZD0gVFJVRSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0NNRF9DT05GTElDVF9JTkNMVURFX0FDVElPTl9BTkRfQUNUSVZFX0NBTExfVFlQRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBjb21hbmQgY29uZmxpY3QgOiBhY3Rpb24gPSBDSExEX0VYRSAsIGFjdGl2ZSBjYWxsIHR5cGU9Q1NNQ0NfQ1NEX0NBTEwiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DTURfQ09ORkxJQ1RfSU5DTFVERV9BQ1RJT05fQU5EX1JFVFJZX0ZMQUciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogY29tYW5kIGNvbmZsaWN0IDogYWN0aW9uID0gQVREX0FQUCAsIHJldHJ5X2ZsYWc9IFRSVUUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19NVVRVQUxfQ01EX0NPTkZMSUNUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IGNvbWFuZCBjb25mbGljdCA6IG11dHVhbCBjb25mbGljdCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0NNRF9DT05GTElDVF9DR0RBVEFfRFVSSU5HX0NIQU5HRV9SQVRfUkVUUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogY29tYW5kIGNvbmZsaWN0IDogQ0dEQVRBX0VYRSBkdXJpbmcgRUNDIGNoYW5nZSBSQVQgUmV0cnkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19OT19FQ0FMTF9OVU1CRVJfQVZBSUxBQkxFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IFNJTSBFY2FsbCBudW1iZXIgbm90IGF2YWlsYWJsZSB1c2UgQVRFTVNEVE5VTSBvciBBVEVNU0RSTlVNIHRvIHNldCBudW1iZXIiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19QSEJfQVBQUk9WRV9GQUlMIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IFBob25lIGJvb2sgYXBwcm92ZSBmYWlsIGJlY2F1c2UgJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19UQ01fQ01EX0NPTkZMSUNUX0RVRV9UT19DRlVOX1NUQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IHRjbSBjbWQgY29uZmxpY3QgZHVlIHRvIGNmdW5fc3RhdGUhISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1RDTV9DTURfQ09ORkxJQ1RfRFVFX1RPX1NFVF9SQVRfTU9ERV9ERVRBQ0giOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogdGNtIGNtZCBjb25mbGljdCBkdWUgdG8gU0VUX1JBVF9NT0RFX0RFVEFDSCEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfVENNX0NNRF9DT05GTElDVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiB0Y20gY21kIGNvbmZsaWN0ICEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfQUJPUlRfUERQX0FDVElWQVRJT05fV0lUSF9DSUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiY2lkKCVkKSBpcyBhY3RpdmF0aW5nLCBsZXQgQ0dBQ1Q9MCBwYXNzIHRvIGFib3J0IGl0ISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0FCT1JUX1BEUF9BQ1RJVkFUSU9OX1NUQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImNpZCglZCk6IGV4dF9wZHBfYWN0aXZhdGluZ1tdPSVkLCBleHRfcGRwX3NyY19pZFtdPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfR1BSU19TVFJJTkdfVkFMSURfQ01EX05PVF9BTExPV0VEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IGdwcnMgc3RyaW5nIHZhbGlkICxidXQgY21kIG5vdCBhbGxvd2VkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDVVBTX1BPUlRfQUNUSVZBVEVfQ05GX0ZBSUxVUkUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjdXBzX3BvcnRfYWN0aXZhdGVfY25mX2hkbHIgLSBmYWlsISEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDVVBTX1BPUlRfTUFZQkVfTk9UX0FWQUxJQUJMRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJwb3J0PSVkIGlzIG5vdCBvd25lZCBieSBMNEMsIHJlYWxfb3duZXI9JU1tb2R1bGVfdHlwZSwgcm1taV9jdXJyZW50PSVNbW9kdWxlX3R5cGUsIFBTX1VBUlRfUE9SVD0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1BIQl9BUFBST1ZFX0JZX01NSV9GQUlMVVJFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImN1c3RvbV9waGJfeG1nbnRfYXBwcm92ZV9mZG4obDRjX29wZXJhdGlvbj1kLCBjYXVzZT0lZCkgcmV0dXJuIEtBTF9GQUxTRSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1NQRUNJQUxfQ0FVU0VfSERMUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJTUEVDSUFMIENBVVNFIEhBTkRMRVIgOiBjaWQ6JWQsIGNhdXNlOiAlTXBzX2NhdXNlX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19JTlZBTElEX0JJTkRJTkdfSUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1dBUk5JTkddIElOVkFMSUQgYmluZGluZ19pZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0lOVkFMSURfT1BfV0hFTl9GQUxMQkFDSyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbV0FSTklOR10gSU5WQUxJRCBvcGVyYXRpb24sIElQdjR2NiBmYWxsYmFjayBpcyBvbmdvaW5nLCBjYW4ndCBkZWFjdCBmYWxsYmFjayB0YXJnZXQgJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19ISVRfRVJST1JfSEFORExJTkciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1dBUk5JTkddIEhpdCBFcnJvciBIYW5kbGluZyBDYXNlLCBQbGVhc2UgQ2hlY2sgVGhpcyAhISEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DSURfSVNfSU5BQ1RJVkVfT1JfTk9UX1NFQ09OREFSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbV0FSTklOR10gQ0lEIGlzIGluYWN0aXZlIG9yIG5vdCBzZWNvbmRhcnkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENQU19DQU5OT1RfR0VUX1FDSV9CWV9DT05URVhUX0lEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltXQVJOSU5HXSBMNEM6IGw0Y19wc19nZXRfcWNpX2J5X2NvbnRleHRfaWQgcmV0dXJucyBOVUxMLCBQbGVhc2UgQ2hlY2sgVGhpcyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0MyS19JTlZBTElEX0lSQVRfUkVTVUxUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltXQVJOSU5HXSBJTlZBTElEIEktUkFUIFJlc3VsdCAlTWlyYXRfcmVzdWx0X2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DMktfSU5WQUxJRF9DT05URVhUX1RZUEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1dBUk5JTkddIEMySyBicmluZyB3cm9uZyBjb250ZXh0X3R5cGUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DMktfV1JPTkdfSVBfQUREUl9MRU4iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1dBUk5JTkddIHdyb25nIElQX0FERFJfTEVOIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfQzJLX0VJM0dQUElSQVRfSU5fV09STkdfU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1dBUk5JTkddIEVJM0dQUElSQVQgaW4gbm9uLWlSQVQgc3RhdGUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DMktfRk9SQ0VfUEVSRk9STV9JUkFUX1dJVEhPVVRfV0FJVF9FSTNHUFBJUkFUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltXQVJOSU5HXSBGb3JjZSBwZXJmb3JtIEwyQyBJUkFUIHdpdGhvdXQgd2FpdGluZyBBVCtFSTNHUFBJUkFUPTEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DMktfR0VUX05XX0FQUExJRURfUERQX0FERFJfRkFJTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbV0FSTklOR10gbDRjdGNtX2dldF9ud19hcHBsaWVkX3BkcF9hZGRyIGZhaWwiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DMktfR0VUX0JJTkRJTkdfQ0hfRkFJTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbV0FSTklOR10gbDRjdGNtX2dldF9iaW5kaW5nX2NoYW5uZWwgZmFpbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0MyS19JTlZBTElEX0NPTlRFWFRfSUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1dBUk5JTkddIEw0Q19DT05URVhUX0lEX0lTX0lOVkFMSUQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DTURfQ09ORkxJQ1RfQzJLX0lSQVQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW1dBUk5JTkddIEMySyA8LT4gTFRFIGludGVyLVJBVCBvbmdvaW5nICIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0w0Q19FUV9GU19SRVRVUk5fRVJST1IiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogRVEgZnMgYWN0aW9uOiAlZCByZXR1cm46ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfU01TQUxfVU5FWFBFQ1RFRF9NVEkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogdGhlIE1USSBpcyBub3QgdGhlIGV4cGVjdGVkIHZhbHVlIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfRkRfSU5WQUxJRF9JTkFDVElWSVRZX1RJTUVSX0lEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltGRF1XYXJuaW5nOiBJbnZhbGlkIEluYWN0aXZpdHkgVElEOiAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1JGX09OX0ZBSUwiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bTlddV2FybmluZzogUkYgb24gZmFpbCwgUkFDIFJBVDogJU1yYXRfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0w0Q19ST09UX1NSQ19JRF9JTlRFUlJVUFQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bUk9PVF1DdXJyZW50IHJvb3Rfc3JjX2lkPSVkLCBpbnRlcnJ1cHQgc2NyX2lkPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX1JPT1RfQUNUSU9OX0lOVEVSUlVQVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtST09UXUN1cnJlbnQgcm9vdF9hY3Rpb249JU1sNGNfcm9vdF9hY3Rpb25fZW51bSwgaW50ZXJydXB0IHJvb3RfYWN0aW9uPSVNbDRjX3Jvb3RfYWN0aW9uX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19JTlZBTElEX0RVUExFWF9NT0RFX0NIQU5HRV9SRVFVRVNUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IHJlcXVlc3RlZCBkdXBsZXggbW9kZSBpcyBub3Qgc3VwcG9ydGVkISBXT1JMRF9NT0RFOiAweCV4IChGb3JtYXQ6IDB8MHxMZnxMdHxXfEN8VHxHKSwgcmVxdWVzdCBtb2RlOiAweCV4IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfUkZfT05fRkFJTF9EVUVfVE9fTUQzX0VQT0YiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bTlddV2FybmluZzogUkYgb24gZmFpbCBkdWUgdG8gTUQzIEVQT0YhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfQ0ZVTjBfRFVSSU5HX1BPV0VST05fRVhFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdW05XXVdhcm5pbmc6IENGVU49MCBpcyBwcm9jZXNzaW5nIGR1cmluZyBQT1dFUk9OX0VYRSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0NTUkFfQ09ORkxJQ1QiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bTlddV2FybmluZzogY2hhbmdlIGNmdW4gZmFpbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX05PX01BVENIX0NGVU5fU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bTlddV2FybmluZzogbm8gbWF0Y2ggc3RhdGUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DQ19BQ1RJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11bTlddV2FybmluZzogY2MgYWN0aW9uIG5vdCBudWxsIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfUkFUX01PREVfTk9ORSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtOV11XYXJuaW5nOiBSQVQgbW9kZSBpcyBub25lIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX1NJTV9QT1dFUk9GRl9SRVRSWV9SRUFDSF9NQVgiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11XYXJuaW5nOiBwb3dlcm9mZl9yZXRyeSByZWFjaCBtYXhpbXVtLCB0dXJuIG9mZiBtb2RlbSBkaXJlY3RseSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0NMRUFSX1BSRVZJT1VTX1JBQ19BQ1RJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gQ2xlYXIgcHJldmlvdXMgUkFDIGFjdGlvbjogJU1sNGNfYWN0aW9uX2VudW0iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19SU0lNX0FVVEhfT05HT0lORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtSU0lNXVtOV11XYXJuaW5nOiBSU0lNIEF1dGhlbnRpY2F0aW9uIGlzIG9uZ29pbmciLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfVVBEQVRFX0FVVE9fQVRUQUNIX0ZBSUwiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gRmFpbGVkIHRvIHVwZGF0ZSBhdXRvX2F0dGFjaCBmbGFnIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfU0FUX0NBTExfQ1RSTF9XUk9OR19TVEFURSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbU0FUXSBDYWxsIENvbnRyb2wgU3RhdGUgV2FybmluZzogJU1zYXRfY2FsbF9jdHJsX3R5cGVfbm90aV9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfQ0dEQVRBX0dQUlNfRElBTFVQX0lTX05PVF9BTExPV0VEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IGw0YyBjbWRfY29uZmxpY3Q6IENHREFUQSBHUFJTIGRpYWx1cCBpcyBub3QgYWxsb3dlZCB3aGVuIFJGT0ZGL1JBVF9NT0RFX0RFVEFDSCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0NHREFUQV9DTURfQ09ORkxJQ1QiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogbDRjIGNtZF9jb25mbGljdDogQ0dEQVRBIHRjbSBvciByYWMgY21kIGNvbmZsaWN0IiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTk9fR1BSU19ESUFMVVBfQ0FOX0JFX0RJQ09OTkVDVEVEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IE5vIEdQUlMgZGlhbHVwIGNhbiBiZSBkaXNjb25uZWN0ZWQgZnJvbSBSTU1JISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0w0Q19FUlJPUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBlcnJvciIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0w0Q19VU0JVQVJUMl9JU19BTFJFQURZX09QRU5FRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJ1YXJ0X3BvcnRfdXNiMiBpcyBhbHJlYWR5IG9wZW5lZCBieSBBVCwgY2lkPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX05PX0ZSRUVfQ0hBTk5FTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJObyBmcmVlIHJtbWkgY2hhbm5lbCBpcyBmb3VuZCEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX01NU19GT0xERVJfU1RBVFVTX09VVFBVVF9SRVFfRFJPUF9SRVNVTFRfQ09ERSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBsNGNfbW1zX2ZvbGRlcl9zdGF0dXNfb3V0cHV0X3JlcSBkcm9wIHJlc3VsdCBjb2RlIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX01NU19VUExPQURfTVNHX09VVFBVVF9SRVFfRFJPUF9SRVNVTFRfQ09ERSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBsNGNfbW1zX3VwbG9hZF9tc2dfb3V0cHV0X3JlcSBkcm9wIHJlc3VsdCBjb2RlIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX01NU19ERUxFVEVfTVNHX1JFUV9EUk9QX1JFU1VMVF9DT0RFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IGw0Y19tbXNfZGVsZXRlX21zZ19vdXRwdXRfcmVxIGRyb3AgcmVzdWx0IGNvZGUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfTU1TX1JFQURfTVNHX1BBVEhfUkVRX0RST1BfUkVTVUxUX0NPREUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogbDRjX21tc19yZWFkX21zZ19wYXRoX3Jlc19yZXEgZHJvcCByZXN1bHQgY29kZSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0w0Q19NTUlfSkFWQV9MT0NBTF9JTlNUQUxMX1JFU19SRVFfRFJPUF9SRVNVTFRfQ09ERSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBsNGNfbW1pX2phdmFfbG9jYWxfaW5zdGFsbF9yZXNfcmVxIGRyb3AgcmVzdWx0IGNvZGUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19TT01FVEhJTkdfU1RJTExfSU5fTDRDX0tCRF9CVUZGRVIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogU29tZXRoaW5nIHN0aWxsIGluIGw0Y19rYmRfYnVmZmVyLiB3aW5kZXg9JWQgLHJpbmRleD0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1VBUlRfT1dORVJfSVNfTk9UX0w0QyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBsNGNfZXFfdXNidWFydF9zd2l0Y2hfcG9ydF9yZXEoKTogRVJST1IhISBVQVJUIG93bmVyIGlzIG5vdCBMNEMgLG93bmVyIGlzICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfSU5WQUxJRF9LRVkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogaW52YWxpZCBrZXkiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19BQk9SVF9QTE1OX0xJU1RfUkVRX0NNRF9DT05GTElDVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBhYm9ydF9wbG1uX2xpc3RfcmVxIGNtZCBjb25mbGljdCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0VGUFVDVF9JU19OT1RfVkFMSUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogRUZwdWN0IGlzIG5vdCB2YWxpZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX05PVF9WQUxJRF9TSU1fT1BFUkFUSU9OX1NUUklORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBub3QgYSB2YWxpZCBzaW0gb3BlcmF0aW9uIHN0cmluZyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1BIQl9DTURfQ09ORkxJQ1QiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogcGhiIGNtZCBjb25mbGljdCAhISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1NNU19DTURfQ09ORkxJQ1QiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogc21zX2NtZF9jb25mbGljdCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1NNU19DTURfQ09ORkxJQ1RfU01TX0FDVElPTl9JU19OT1RfQUxMT1dFRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBzbXNfY21kX2NvbmZsaWN0ICwgc21zIGFjdGlvbiBpcyBub3QgYWxsb3dlZCB3aGlsZSBiYWNrZ3JvdW5kIGFjdGlvbiIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1NNU19DTURfQ09ORkxJQ1RfQ1VGTl9TVEFURV9JU19OT1RfRVFVQUxfVE9fMSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBzbXMgY21kIGNvbmZsaWN0IDogY3Vmbl9zdGF0ZSBpcyBub3QgZXF1YWwgdG8gMSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1JBQ19DTURfQ09ORkxJQ1RfRFVFX1RPX0NGVU5fU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogcmFjIGNtZCBjb25mbGljdCBkdWUgdG8gY2Z1bl9zdGF0ZSEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfUkFDX0NNRF9DT05GTElDVF9EVUVfVE9fQ0FMTF9FWElTVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiByYWMgY21kIGNvbmZsaWN0IGR1ZSB0byBjYWxsIGV4aXN0ISEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19SQUNfQ01EX0NPTkZMSUNUX0RVRV9UT19JTVNfQ0FMTF9FWElTVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiByYWMgY21kIGNvbmZsaWN0IGR1ZSB0byBJTVMgY2FsbCBleGlzdCEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfUkFDX0NNRF9DT05GTElDVF9EVUVfVE9fTk9UX0FDVElWQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IHJhYyBjbWQgY29uZmxpY3QgZHVlIHRvIHJhYyBub3QgYWN0aXZhdGVkISEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19SQUNfQ01EX0NPTkZMSUNUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IHJhYyBjbWQgY29uZmxpY3QgISEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19TTVVfQ01EX0NPTkZMSUNUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IHNtdSBjbWQgY29uZmxpY3QgISEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DTURfQ09ORkxJQ1RfSU5DTFVERV9BQ1RJT05fQU5EX1JBQ19DVVJSRU5UX0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBjb21hbmQgY29uZmxpY3QgOiBhY3Rpb24gPSBBQk1fQUNUX0FQUCAsIHJhY19jdXJyZW50X2FjdGlvbj0gUFdST0ZGX0RFVEFDSCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0NNRF9DT05GTElDVF9JTkNMVURFX0FDRlVOX1NUQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IGNvbWFuZCBjb25mbGljdCA6IGNmdW5fc3RhdGU9JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfQ01EX0NPTkZMSUNUX0lOQ0xVREVfU0lNX1JFRlJFU0giOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogY29tYW5kIGNvbmZsaWN0IDogc2ltX3JlZnJlc2g9IFRSVUUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DTURfQ09ORkxJQ1RfSU5DTFVERV9DUlNTX09QQ09ERV9BTkRfU0lNX1JFRlJFU0giOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogY29tbWFuZCBjb25saWN0IDogTDRDX1BUUi0+Y3Jzc19vcGNvZGU9JU1jc21jY19jcnNzX3JlcV9lbnVtICwgTDRDX1BUUi0+c2ltX3JlZnJlc2g9JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfRklMRV9FUlJPUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBmaWxlIGVycm9yIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfV1JPTkdfRlVOQ1RJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogV1JPTkcgRlVOQ1RJT04gISFcXG4iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19XUklURV9GSUxFX0ZBSUwiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogV3JpdGUgRklMRSBGYWlsISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX1VBUlRfSU5QVVRfUVVFVUVfRlVMTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBSTU1JIHVhcnRfaW5wdXRfcXVldWUgRnVsbCEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19DTVVYX05PVF9FTkFCTEVfQ1VSUkVOVF9TUkNfU0hPVUxEX0JFX1JNTUlfU1JDIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IENNVVggbm90IGVuYWJsZSwgY3VycmVudF9zcmMgc2hvdWxkIGJlIFJNTUlfU1JDIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTEdfREJfT1BFTl9GQUlMIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IGxvZy5kYiBvcGVuIGZhaWwiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19UU1RfTE9TVF9PTkVfQ01EIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IHRzdCBsb3N0IG9uZSBjb21tYW5kICEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfREFUQV9DQUxMX0lOVkFMSURfQ0lEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IGRhdGEgY2FsbCBjaWQgaXMgaW52YWxpZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0VRX0NNRF9DT05GTElDVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBFUSBjbWQgY29uZmxpY3QhICIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0VRX1NSTlRDSF9GQUlMRUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogRVEgc2NyZWVuIHRvdWNoIHJldHVybjogJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19FUV9TQ1JOX1BBUkFfR0VUX0ZBSUxFRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBFUSBzY3JlZW4gcGFyYW1ldGVyIHF1ZXJ5IHJldHVybjogJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19QTFVHT1VUX1NSQ0lEX0lTX05PVF9NQVRDSCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBwbHVnb3V0X3NyY2lkKCVkKSBpcyBub3QgbWF0Y2ggY2lkKCVkKSAiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfQVRDSV9TVEFURV9XUk9ORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBzdGF0ZSB3cm9uZywgQVRDSSBzdGF0ZT0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0w0Q19BVENJMl9TVEFURV9XUk9ORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBzdGF0ZSB3cm9uZywgQVRDSTIgc3RhdGU9JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfU0NSSV9SRVFfTk9UX1NFTlQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogRW5kIFBTIGRhdGEgc2Vuc3Npb24gcmVxIG5vdCBzZW50IChkZWJ1ZyBpZHg6ICVkLCBBRlIgcmV0cnk6ICVkKSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0w0Q19DRUxMX0lORk9fVU5SRUciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogZGVyZWcgbm9uLXJlZyBtb2R1bGU6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX05VTExfUE9JTlRFUl9DSEVDSyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBnZXQgTlVMTCBwb2ludGVyIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX1NJTV9ET1VCTEVfUE9XRVJPRkYiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiVHJ5aW5nIHRvIFBPV0VSIE9GRiBTSU0gd2hpbGUgTDRDIGlzIGp1c3QgdHVybmluZyBvZmYgU0lNIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX1NJTV9TVEFSVF9JTl9QT1dFUk9GRl9TVEFURSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJTSU0gaXMgc3RhcnRlZCBkdXJpbmcgTDRDIHBvd2Vyb2ZmIFNJTSwgTVNHIGlzIGlnbm9yZWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfRFJPUF9NU0dfT05fV1JPTkdfQUNUSU9OX1NUQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIk1TRyBpcyBkcm9wZWQgZHVlIHRvIGluY29uc2lzdGVuY3kgYWN0aW9uIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX0lOVkFMSURfU1JDSURfQ0hFQ0siOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogTDRDIHNyY19pZCBjaGVjayB3aXRoIGFuIGludmFsaWQgdmFsdWU9JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfVlNJTV9FRl9NRVRBX09WRVJTSVpFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IHRoZSBWU0lNIEVGIG1ldGEgb3ZlcnNpemUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfVlNJTV9FRl9EQVRBX09WRVJTSVpFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IHRoZSBWU0lNIEVGIG1ldGEgb3ZlcnNpemUiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfU0lNX1JFU0VUX0RVUklOR19NT0RFTV9QT1dFUk9GRiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBTa2lwIFNJTSByZXNldCBkdXJpbmcgbW9kZW0gcG93ZXJvZmYiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfU0lNX0NBUkRfVFlQRV9TV0lUQ0hJTkciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogU0lNIGNhcmQgdHlwZSBzd2l0Y2hpbmcgaXMgcnVubmluZyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0w0Q19TRVRfUkFUX01PREVfQ09ORkxJQ1RfRFVFX1RPX0lSQVRfTk9UX0ZJTklTSEVEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IHNldCByYXQgbW9kZSBjb25mbGljdCBkdWUgdG8gSVJBVCBpcyBub3QgZmluaXNoZWQhISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0w0Q19JR05PUkVfUkVHSU9OQUxfUEhPTkVfUkVRIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IFJlZ2lvbmFsIHBob25lIG1vZGUgaXMgdXBkYXRpbmciLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfQ0hFQ0tfQUtBX0FVVEhfUkVTT1VSQ0UiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogY2hlY2sgQUtBIEFVVEggc3RhdGU6IGF1dGhfYWthX3N0YXRlID0gJWQsIGN1cnJlbnQgYWN0aW9uID0gJU1sNGNfcnNpbV9wZW5kaW5nX2FjdGlvbl9lbnVtLCBjZnVuX3N0YXRlPSVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX0VOUVVFVUVfRkFJTEVEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIldhcm5pbmc6IEw0QyBmYWlsZWQgdG8gZW5xdWV1ZSBwZW5kaW5nIGFjdGlvbjogJU1sNGNfcGVuZGluZ19hY3Rpb25fZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJXQVJOSU5HX0w0Q19PTUlUX1JFUEVBVF9BQ1RJT04iOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogb21pdCByZXBlYXRlZCBhY3Rpb24iLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfUFJPVE9DT0xfTk9UX1NVUFBPUlRFRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBXYXJuaW5nOiBQUyAlZCBpcyBub3Qgc3VwcG9ydGVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiV0FSTklOR19BQk9SVF9TRVJWSUNFX01PREVfQ0hBTkdFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIEFib3J0IHNlcnZpY2UgbW9kZSBjaGFuZ2UgYmVjYXVzZSBvZiBjdXJyZW50IGFjdGlvbjogJU1sNGNfYWN0aW9uX2VudW0sIHNpbV9zdGF0dXM6ICVNc211X3NpbV9pbnNlcnRlZF9lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX0NPX0RFQ0tfUFJPRFVDVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBjby1kZWNrIHByb2R1Y3QiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfQVBEVV9MRU5fRVJST1IiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiQ01EIERBVEEgTEVOR1RIIEluY29uc2lzdGVudCBjdXJyX2xlbmd0aCA9ICVkIG9mZnNldCA9ICVkIHRvdGFsX2xlbmd0aCA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisJeworICAgICAgIldBUk5JTkdfTDRDX1VORVhQRUNURURfU0lNX1BBUkFfREFUQSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJVbmV4cGVjdGVkIFNJTSBQYXJhbWV0ZXIgZGF0YSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIldBUk5JTkdfVUVfQ0FQQUJJTElUWV9JTkRfUFJPQ0VEVVJFX0NPTkZMSUNUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogVUUgQ2FwYWJpbGl0eSBBY3Rpb24gY29uZmxpY3QgISEiLAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIldBUk5JTkdfVUVfQ0FQQUJJTElUWV9JTkRfUFJPQ0VEVVJFX09OR09JTkciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwKKyAgICAgICAgImZvcm1hdCI6ICJXYXJuaW5nOiBVRSBDYXBhYmlsaXR5IEFjdGlvbiBvbmdvaW5nICEhIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJXQVJOSU5HX0VPTlNfRlJFRV9FWElTVElOR19UQUJMRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbRU9OU11FeGlzdGluZyBFT05TIHRhYmxlICglTWVvbnNfZmlsZV9pZHhfZW51bSkgZnJlZSBidWZmZXIhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfRE9XTkdSQURFX1NFUlZJQ0VfU1RBUlQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gTGF1bmNoIGRvd25ncmFkZSBzZXJ2aWNlIHByb2NlZHVyZSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIldBUk5JTkdfTDRDX1JFQ09WRVJZX1NFUlZJQ0VfU1RBUlQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gTGF1bmNoIHJlY292ZXJ5IHNlcnZpY2UgcHJvY2VkdXJlIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiV0FSTklOR19MNENfTk9fRUNBTExfTlVNQkVSX0FWQUlMQUJMRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBXYXJuaW5nOiBObyBlQ2FsbCBudW1iZXIgYXZhaWxhYmxlIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiV0FSTklOR19FT05TX1NUQVJUX09OR09JTkciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0VPTlNdIFN0YXJ0IGFscmVhZHkgT25nb2luZyEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJXQVJOSU5HX0VPTlNfSU5JVF9PTkdPSU5HIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltFT05TXUluaXQgYWxyZWFkeSBPbmdvaW5nISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIkVSUk9SX0w0X1NOUFJJTlRGX0ZBSUwiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0XSBsNF9zbnByaW50ZiBmYWlsISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9FUlJPUiIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJFUlJPUl9QSEJfQVBQUk9WRV9TVFJJTkdfRVhDRUVESU5HIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkVycm9yOiBDb25zdHJ1Y3QgUEhCIGFwcHJvdmUgc3RyaW5nPSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9FUlJPUiIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRVJST1JfTDRDX1BIQl9TVEFSVFVQX0ZBSUwiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiUEhCIHN0YXJ0dXAgRkFJTCEgcmVzdWx0IGNhdXNlOiAlTXBoYl9lcnJub19lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0VSUk9SIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJFUlJPUl9MNENfU0VUX1BTX0RJQUxVUF9QT1JUX1dJVEhfSU5WQUxJRF9DSUQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiTDRDIEVSUk9SISEgbDRjX3BzX2RpYWx1cF9zZXRfcG9ydDJjaWQoKSB3aXRoIGludmFsaWQgY2lkPSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9FUlJPUiIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRVJST1JfTDRDX0dFVF9QU19ESUFMVVBfUE9SVF9XSVRIX0lOVkFMSURfQ0lEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkw0QyBFUlJPUiEhIGw0Y19wc19kaWFsdXBfZ2V0X3BvcnQoKSB3aXRoIGludmFsaWQgY2lkPSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9FUlJPUiIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRVJST1JfTDRDX0ZSRUVfUERQX0NPTlRFWFRfV0lUSF9JTlZBTElEX0NJRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJMNEMgRVJST1IhISBsNGNfZnJlZV9wZHBfY29udGV4dCgpIHdpdGggaW52YWxpZCBjaWQ9JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkVSUk9SX0w0Q19FUV9OVlJBTV9OVUxMX1BPSU5URVIiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiTDRDIEVSUk9SISEgR2V0IG51bGwgcG9pbnRlciIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9FUlJPUiIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRVJST1JfTDRDX0VRX05WUkFNX09WRVJGTE9XIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkw0QyBFUlJPUiEhIExlbmd0aCBvdmVyZmxvdyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9FUlJPUiIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRVJST1JfTDRDX1NNU19TTVNBTF9JTklUX0ZBSUwiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU01TQUwgaW5pdCBGQUlMISByZXN1bHQgY2F1c2U6ICVNc21zYWxfZXJybm9fZW51bSwgU01TIGZ1bmN0aW9uIHdpbGwgaGF2ZSBwcm9ibGVtcyIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9FUlJPUiIKKyAgICAgIH0KKyAgICB9LCAKKwl7CisgICAgICAiRVJST1JfTDRDX1NNU19HRU5FUkFMX0VSUk9SIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkw0QyBTTVMgRVJST1IhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0VSUk9SIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJFUlJPUl9MNENfSU5WQUxJRF9QT1JUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkludmFsaWQgcG9ydCAhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0VSUk9SIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJFUlJPUl9MNENfR0VUX1NXSVRDSEVEX1NJTV9JRF9JTlZBTElEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkw0QyBFUlJPUiEhIGw0Y19nZW1pbmlfZ2V0X3N3aXRjaGVkX3NpbV9pZChzaW1JZD0lZCkgZ290IGludmFsaWQgcHNfaWQ9JWQsIGNhbGxlcj0lTW1vZHVsZV90eXBlIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0VSUk9SIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJFUlJPUl9MNENfTlZSQU1fU1RBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiRXJyb3I6IFN0YXRlIGVycm9yIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0VSUk9SIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJFUlJPUl9STU1JX0NDX05PVF9TVEFSVFVQIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkVycm9yOiBDU01DQyBub3Qgc3RhcnR1cCB5ZXQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRVJST1IiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkVSUk9SX0NLUERfSU5QVVRfRk9STUFUX0VSUk9SIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIlRoZXJlIGFyZSBzb21ldGhpbmcgd3JvbmcgaW4gdGhlIEFUK0NLUEQgaW5wdXQgc3RyaW5nIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0VSUk9SIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJFUlJPUl9DTUdMX05PVF9FTkRfQlVUX0VSUk9SIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkVycm9yOiBjbWdsIG5vdCBlbmQgYnV0IGVycm9yIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0VSUk9SIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJFUlJPUl9TQlBfR1VBUkRfVElNRVJfRVhQSVJFRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJFcnJvcjogU0JQIGd1YXJkIHRpbWVyIGlzIGV4cGlyZWQsIGZvcmNlIHRvIG5leHQgc3RlcCAhISEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRVJST1IiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkVSUk9SX1NCUF9NT0RfV0lUSE9VVF9DTkYiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiRXJyb3I6IG5vIEw0Q19NRV9EU0JQX1JFQ09ORklHVVJFX0NORiBmcm9tIG1vZHVsZSAlTW1vZHVsZV90eXBlICEhISIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9FUlJPUiIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiRVJST1JfU0JQX01PRF9VTkVYUEVDVEVEX0NORiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJFcnJvcjogcmVjZWl2ZWQgdW5leHBlY3RlZCBMNENfTUVfRFNCUF9SRUNPTkZJR1VSRV9DTkYgZnJvbSBtb2R1bGUgJU1tb2R1bGVfdHlwZSAhISEiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRVJST1IiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkw0Q19DQ19QQVJBIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImNjX3BhcmFtZXRlclslTWw0Y19zb3VyY2VfaWRfZW51bV0ubGVuZ3RoPSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9HUk9VUF8xIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJMNENfU1NfUEFSQSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJzc19wYXJhbWV0ZXIubGVuZ3RoPSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9HUk9VUF8xIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJDQ19QRUVSX0JVRiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJjY19wZWVyX2J1Zi5sZW5ndGg9JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0dST1VQXzEiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkZBWF9TUkNfSURfSU5GTyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJMNENfUFRSLT5mYXhfc3JjX2lkID0gJWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkNQSV9JTkZPX1RZUEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiK0VDUEk6ICVNY3NtY2NfY3BpX21zZ190eXBlX2VudW0gLGNhbGxfaWQ9JWhkLHJldHJ5X29uZ29pbmdfZmxhZz0laGQsbW9fY2FsbF9pZD0laGQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfR1JPVVBfMSIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiQ1RNX0NVUlJFTlQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0NUTSBjdXJyZW50XSBjdG1fY3VycmVudF9hY3Rpb24gPSAlTWw0Y19hY3Rpb25fZW51bSwgY3RtX3VzZXIgPSAlTWw0Y19zb3VyY2VfaWRfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9HUk9VUF80IgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJDVE1fQ09OVEVYVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbQ1RNIGNvbnRleHRdIGlzX2N0bV9jb25uZWN0ZWQgPSAlZCwgY29ubmVjdGVkX3NyY19pZCA9ICVNbDRjX3NvdXJjZV9pZF9lbnVtLCBpc19ncGlvX3BsdWcgPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9HUk9VUF80IgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJMNENfTU1JX1VDTV9IRl9DSUVWX1JFUSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfbW1pX3VjbV9oZl9jaWV2X3JlcSgpLGluZF90eXBlPSVNcm1taV9jaW5kX2VudW0sZXZlbnQ9JWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfR1JPVVBfNCIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiTDRDX01NSV9VQ01fUkNPREVfUkVRIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19tbWlfdWNtX3Jjb2RlX3JlcSgpLHNvdXJjZV9pZD0lTWw0Y19zb3VyY2VfaWRfZW51bSx0eXBlPSVNcm1taV9yY29kZV90eXBlX2VudW0sY2FsbF9pZD0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9HUk9VUF80IgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJMNENfTU1JX1VDTV9BVF9SRVNfUkVRIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19tbWlfdWNtX2F0X3Jlc19yZXEoKSxzb3VyY2VfaWQ9JU1sNGNfc291cmNlX2lkX2VudW0scmVzdWx0PSVkLGNhdXNlPSVNcm1taV91Y21fY2F1c2VfZW51bSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9HUk9VUF80IgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJBVERfR1BSU19ESUFMVVBfQVRURU1QVF9CVVRfRkFJTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJBVEQgZ3BycyBkaWFsdXAgYXR0ZW1wdCBidXQgZmFpbCxzcmNfaWQgPSVoZCxwb3J0PSVoZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9HUk9VUF8yIgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJIWl9TVEFURSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbSFogc3RhdGVdIGh6X3NpbV9zdGF0dXMgPSAlTWh6X3NpbV9zdGF0dXNfZW51bSwgaXNfZGVkaWNhdGVkX21vZGUgPSAlZCwgaXNfaXNfcGt0X3RyYW5zZmVyX21vZGUgPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9HUk9VUF80IgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJIWl9DVVJSRU5UIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltIWiBjdXJyZW50XSBjdXJyZW50X2xhY1swXSA9ICVkLCBjdXJyZW50X2xhY1sxXSA9ICVkLCAgY3VycmVudF9jZWxsX2lkID0gJWQsIGN1cnJlbnRfZ3NtX3N0YXR1cyA9ICVkLCBjdXJyZW50X2h6X251bWJlciA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkhaX1BBUkEiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0haIHBhcmEgJWRdIGFfZmxhZyA9ICVkLCBpc19jeiA9ICVkLCB4aD0gJWQsIHloID0gJWQsIHIyaCA9ICVkLCBzaW1fY19zaXplID0gJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiSFpfQ0FDSEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0haIGNhY2hlICVkXSBzaW1fY2FjaGVbJWRdLmxhY1swXSA9ICVkLCBsYWNbMV0gPSAlZCwgY2VsbF9pZCA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkhaX09USEVSIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltIWiBvdGhlcl0gZHluYW1pY19jYWNoZV9sYXN0ZXN0ID0gJWQsIGR5bmFtaWNfY2FjaGVfc2l6ZSA9ICVkLCBxdWV1ZV9jYiA9ICVkLCBxdWV1ZV94YyA9ICVkLCBxdWV1ZV95YyA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkdQU19ERVNFTlNFX0lORk9fUkVRIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltHUFMgRGVzZW5zZV0gc2V0IG1vZGU9JWhkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0dST1VQXzUiCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkVNX0FERF9VUERBVEVfTElTVCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJBZGQgbW9kX2lkOiVkIGluIHRoZSB1cGRhdGVfbGlzdCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9HUk9VUF82IgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJFTV9FVkVOVF9GT1VORF9JTl9NQVBQSU5HX1RBQkxFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIkV2ZW50IGZvdW5kIGluIGVtX2luZm9fcmVxX21vZF90YmxbJWRdLG1vZF9pZD0lZCxldmVudD0lZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9HUk9VUF82IgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJFTV9OT19NT0RVTEVfTUFQX1RPX0VWRU5UIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIk5vIG1vZHVsZSBtYXBwZWQgdG8gZW0gZXZlbnQgOiVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwgCisgICAgeworICAgICAgIkw0X05WUkFNX0VYVEVSTkFMX1JFQURfREFUQSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJOVlJBTSBleHRlcm5hbCByZWFkIGRhdGE6MHglWCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9HUk9VUF80IgorICAgICAgfQorICAgIH0sIAorICAgIHsKKyAgICAgICJJTkZPX0FMQVJNX1JFQ1VSUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJybW1pX2NhbGFfaGRscigpLCBhbGFybS5yZWN1cnI9IDB4JVgiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LCAKKyAgICB7CisgICAgICAiQU5ZX0NNRF9BRlRFUl9DS1BEX0lOX01VTFRJX0NNRF9JU19OT1RfQUxMT1dFRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJSTU1JIEVSUk9SOiBBbnkgY29tbWFuZCBjb21pbmcgYWZ0ZXIgK0NLUEQgaW4gYSBtdWx0aXBsZSBjb21tYW5kIGxpbmUgaXMgbm90IGFsbG93ZWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfR1JPVVBfMyIKKyAgICAgIH0KKyAgICB9LAorCXsKKyAgICAgICJNQ0ZfRVRXU19DT05UUk9MX0JJVE1BUCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJCaXQgTWFwIFZhbHVlIGZvciBQcm90b2NvbCBTdGFjayAlZCBpcyAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisJeworICAgICAgIlNNU19EQVRBX05VTEwiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogU01TIERBVEEgaXMgTlVMTC4gTm8gSW5kaWNhdGlvbiB3aWxsIGJlIHNlbnQgdG8gQVAiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKyAgICAgIH0KKyAgICB9LAorCXsKKyAgICAgICJDQl9EQVRBX05VTEwiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiV2FybmluZzogQ0IgREFUQSBpcyBOVUxMLiBObyBJbmRpY2F0aW9uIHdpbGwgYmUgc2VudCB0byBBUCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9XQVJOSU5HIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIkxPQURfTlZSQU1fSFZPTFRFX0NPTkZJRyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsb2FkIG52cmFtIGh2b2x0ZSBjb25maWcsIG52cmFtX2h2b2x0ZV9lOTExX3B0ci0+aHZvbHRlX2VuYWJsZT0lTWh2b2x0ZV9lbmFibGVfc3RhdHVzX2VudW0sIGw0Y19wdHItPmh2b2x0ZV9lbmFibGU9JU1odm9sdGVfZW5hYmxlX3N0YXR1c19lbnVtIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisJfSwKKwl7CisgICAgICAiV0FSTklOR19MNENfVkRNX0ZSRUVfTDRCX1RSQU5TQUNUSU9OX0VSUk9SIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q19WRE1dIFdhcm5pbmc6IGZyZWUgTDRCIHRyYW5zYWN0aW9uIEVSUk9SIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfV0FSTklORyIKKwkgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19WRE1fR0VUX0w0Ql9UUkFOU0FDVElPTiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDX1ZETV1sNGNfdmRtX2dldF9sNGJfdHJhbnNhY3Rpb24oKSByZXN1bHQgaXMgJU1rYWxfYm9vbCIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwgICAgCisgICAgeworICAgICAgIkw0Q19WRE1fRlJFRV9MNEJfVFJBTlNBQ1RJT05fU1VDQ0VTUyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDX1ZETV1sNGNfdmRtX2ZyZWVfbDRiX3RyYW5zYWN0aW9uKCkgaXMgU1VDQ0VTUyIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX1dBUk5JTkciCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19DU19DQUxMX1NUQVRFX1RPX1NDUCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJDUyBjYWxsX3N0YXRlIHRvIHNjcCA9ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19TQ1BfTU9OSVRPUl9TVEFUVVMiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiU0NQIG1vbml0b3Igc3RhdHVzOiVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19TQlBfRUNTUkFfT05HT0lORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbU0JQXSBFQ1NSQSBpcyBvbmdvaW5nISBOb3QgYWxsb3cgRFNCUCIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19DQk1JX0RVUF9JTkZPIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltDU0NCXSVkIGlzIGlzIGFscmVhZHkgdGhlcmUgaW4gY29udGV4dCAsIG5vIG5lZWQgdG8gYWRkIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorCXsKKyAgICAgICJJTkZPX0NCTUlfTElNSVQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0NTQ0JdSGVyZSBDQiBjaGFubmVscyBmcm9tIEFQIGFuZCBDQiBjaGFubmVscyBpbiBjb250ZXh0IGV4Y2VlZHMgbWF4aW11bSBudW1iZXIiLAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisJeworICAgICAgIklORk9fQ0JNSV9SRU1PVkUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0NTQ0JdJWQgaXMgZXhpc3RzIGluIGNvbnRleHQgLFdlIGdvdCBhIHJlcXVlc3QgdG8gcmVtb3ZlIGl0IC0tPiAgbmVlZCB0byByZW1vdmUiLAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisJeworICAgICAgIklORk9fQ0JNSVJfUkVNT1ZFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltDU0NCXSVkIHRvICVkIHJhbmdlIGV4aXN0cyBpbiBjb250ZXh0ICxXZSBnb3QgYSByZXF1ZXN0IHRvIHJlbW92ZSBpdCAtLT4gIG5lZWQgdG8gcmVtb3ZlIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorCXsKKyAgICAgICJJTkZPX0NCQ0hfTU9ERSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbQ1NDQl1XZSBnb3QgYSByZXF1ZXN0IHRvIEFERC9SRU1PVkUgQ0IgY2hhbm5lbHMgIE1PREU6ICVkIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorCXsKKyAgICAgICJJTkZPX0NTQ0JfRVJST1IiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0NTQ0JdRXJyb3IgY2F1c2UgaXMgPSAlZCIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKwl7CisgICAgICAiSU5GT19MNENfTk9OXzNHUFBfUE9MSUNZX0lORElDQVRPUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtOM0VOXWw0Yz0lZCwgbXNnPSVkLCB1cmNfbW9kZT0lZCIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiRVJST1JfTDRDX0lOVkFMSURfU0lHX1RZUEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gSW52YWxpZCBTaWduYWwgVHlwZSA9ICVkIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfRVJST1IiCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19JTVNfUkVHX1RJTUVPVVRfVk9OUiI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNyYWNfaW1zX3JlZ190aW1lb3V0X2luZF9oZGxyOiBWb05SIHJlZ2lzdGVyIHRpbWVvdXQsIHN0aWxsIGtlZXAgaW4gVk9QUyBtb2RlIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0hWT0xURV9WT1BTX01PREVfQllfTlJfQ0VMTCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtoVm9sdGVdIHN3aXRjaCB0byBWT1BTIGJ5IGNhbXBpbmcgb24gTlIgY2VsbCIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfVUlDQ19OT1RfQUNUX05PVF9IVk9MVEVfTU9ERV9TV0lUQ0giOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiVUlDQyBub3QgYWN0aXZhdGVkIHlldCwgZG8gbm90IHN3dGljaCBodm9sdGUgbW9kZSIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiRlVOQ19MNENfTE9BRF9IVk9MVEVfRTkxMV9DT05GSUciOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjX2xvYWRfaHZvbHRlX2U5MTFfY29uZmlnKCkiLAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fSFZPTFRFX0NPTlRFWFQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0XVtoVm9sdGVdOiBlbmFibGU6JU1odm9sdGVfZW5hYmxlX3N0YXR1c19lbnVtLCBtb2RlOiVNaHZvbHRlX21vZGVfZW51bSwgY3Rfdm9sdGVfc3VwcG9ydDolZCIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19IVk9MVEVfQ09OVEVYVF9OT1RfTE9BREVEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNF1baFZvbHRlXTogbm90IGxvYWQgaFZvbHRlIGNvbnRleHQgeWV0IiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0NPTlNJREVSX01PX0RJU0NfQ0FVU0UiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiQ29uc2lkZXIgTU8gRElTQyBDQVVTRSIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fQ09OU0lERVJfQ0VFUl9SRVBfQ0FVU0UiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiQ29uc2lkZXIgQ0VFUiBSRVBPUlQgQ0FVU0UiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX1NBVkVfTU9fRElTQ19DQVVTRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJTQVZFIE1PIERJU0MgQ0FVU0UgPSAlZCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fQ0xFQVJfTU9fRElTQ19DQVVTRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJDTEVBUiBNTyBESVNDIENBVVNFID0gJWQiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0w0Q19TUlZDQ19VUERBVEVfQllfQ0VWRFBfRkFJTFVSRSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJGYWlsIHRvIHVwZGF0ZSBzcnZjYyBieSBBVCtDRVZEUCIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19NU19CTEFDS19DRUxMX0w0Q19TVEFURSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtCTEFDS0NFTExdIG1tcnJfcmVhZHlfZmxhZzogJWQsIHJhY19hY3RpdmU6ICVkLCBzbXVfYWN0aXZlOiAlZCwgY2Z1bl9zdGF0ZTogJWQiLAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fUE9SVExPQ0tfTlZSQU1fTElEX01JU01BVENIIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltQT1JUTE9DS11NaXNtYXRjaCBpbiBOVlJBTSBMSUQgdmFsdWUuIEV4cGVjdGVkOiAlZCBSZWNlaXZlZDogJWQiLAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTVNfQkxBQ0tfQ0VMTF9MNENfSU5JVF9TVEFURSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXVtCTEFDS0NFTExdIGN1cl90cmFuc2FjdGlvbl9pZDogJWQsIHJhY19hY3RpdmU6ICVkLCBibGFja19saXN0X2luaXRfc3RhdGU6ICVkIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0gICAgCisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19OUlJDX1NUQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdY3VycmVudCBucnJjIHN0YXRlOiAlTWluZGljYXRlZF9ucnJjX3N0YXRlX2VudW0iLAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfSAgICAKKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX0FGUl9SQVQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiQUZSIHJhdCBiaXRtYXAgPTB4JXgiLCAKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPXzVHVVdfVFVXX1NUQVRFIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIls1R1VXXSA1RyBVVyB0dXdfc3RhdGU6ICVNdHV3X3N0YXRlX2VudW0iLAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fNUdVV19VUERBVEVfU1RBVEVfRVJSQ19JMkNfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiWzVHVVddIGw0Y19ud191cGRhdGVfNWd1d19zdGF0ZV9lcnJjX2lkbGVfdG9fY29ubigpIDVHIFVXIHR1d19zdGF0ZTogJU10dXdfc3RhdGVfZW51bSIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT181R1VXX1VQREFURV9TVEFURV9FUlJDX0MySV9FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbNUdVV10gbDRjX253X3VwZGF0ZV81Z3V3X3N0YXRlX2VycmNfY29ubl90b19pZGxlKCkgNUcgVVcgdHV3X3N0YXRlOiAlTXR1d19zdGF0ZV9lbnVtIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPXzVHVVdfVVBEQVRFX1NUQVRFX1VMSV9EU1BSX0VOVFJZIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIls1R1VXXSBsNGNfbndfdXBkYXRlXzVndXdfc3RhdGVfdWxpX2Rpc2FwcGVhcigpIDVHIFVXIHR1d19zdGF0ZTogJU10dXdfc3RhdGVfZW51bSIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19TRVRfUENPXzVHVVdfQUxMT1dfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiWzVHVVddIGw0Y19ud19zZXRfcGNvXzVndXdfYWxsb3coKSB0dXdfc3RhdGU6ICVNdHV3X3N0YXRlX2VudW0sIG9sZF81Z3V3X2FsbG93ZWQ6ICVNa2FsX2Jvb2wsICBuZXdfNWd1d19hbGxvd2VkOiAlTWthbF9ib29sIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPXzVHVVdfU0VUX1VXX0NPTkZJR19FTlRSWSI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbNUdVV10gbDRjX253XzVndXdfc2V0X2lzX3VsdHJhX3diX2NvbmZpZ3VyZSgpIHR1d19zdGF0ZTogJU10dXdfc3RhdGVfZW51bSwgb2xkX2lzX29uX243NzogJU1rYWxfYm9vbCwgIG5ld19pc19vbl9uNzc6ICVNa2FsX2Jvb2wsIG9sZF9pc19vbl9mcjI6ICVNa2FsX2Jvb2wsICBuZXdfaXNfb25fZnIyOiAlTWthbF9ib29sIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJJTkZPX1JFQ0FMXzVHVVdfRFNQTF9SRVNVTFQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiWzVHVVddIGlzX2RzcGxfNWd1dzogJU1rYWxfYm9vbCIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19SRUNBTF81R1VXX0RTUExfRU5UUlkiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiWzVHVVddbDRjX253X3JlX2NhbGN1bGF0ZV9hbmRfdXBkYXRlXzVndXdfZGlzcGxheSgpdHV3X3N0YXRlOiAlTXR1d19zdGF0ZV9lbnVtLCBlcnJjX3N0YXRlOiAlTWVtX2VycmNfc3RhdGVfZW51bSwgaXNfZHNwbF81Z3V3OiAlTWthbF9ib29sLCA1Z3V3X2FsbG93ZWQ6ICVNa2FsX2Jvb2wsIGlzX29uX243NzogJU1rYWxfYm9vbCwgaXNfb25fZnIyOiAlTWthbF9ib29sIiwKKyAgICAgICAgInRyYWNlQ2xhc3MiOiAiVFJBQ0VfSU5GTyIKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICJGVU5DX0w0Q19OV19SRVNFVF81R1VXX0NOVFhUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19ud19yZXNldF81Z3V3X2NvbnRleHQoKSIsCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0ZVTkMiCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19FUFNGQl9WT05SX0NBTExfRVNUQUJMSVNIIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltFUFNGQl0gSU1TIGNhbGwgZXN0YWJsaXNobWVudDogJU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fSVNfRVBTRkJfTkVFREVEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltFUFNGQl0gbDRjX2lzX2Vwc2ZiX25lZWRlZDogcHNfaWQ6ICVNcHJvdG9jb2xfaWRfZW51bSwgc291cmNlX3JhdDogJU1yYXRfdHlwZV9lbnVtLCB0YXJnZXRfcmF0OiAlTXJhdF90eXBlX2VudW0sIGlyX3R5cGU6ICVNaXJhdF90eXBlX2VudW0sIHJlc3VsdDogJU1rYWxfYm9vbCIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIkZVTkNfTDRDX0NVU1RPTV9DT05GSUdfRkRfU0VUVElORyI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJsNGNfY3VzdG9tX2NvbmZpZ19mZF9zZXR0aW5nKCkiLAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9GVU5DIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1BTX0lTX0VEQUxMT1dfU0VUIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogImw0Y19wc19pc19kYXRhX2FsbG93ZWQ6IGlzX2RhdGFfYWxsb3dlZDogJU1rYWxfYm9vbCwgcHJvdG9jb2xfaWQ6ICVkIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUFNfQ09ORl9URVNUX1BST0ZJTEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q11wc19jb25mX3Rlc3RfcHJvZmlsZSA9IDB4JXgsIGlzX2N1c3RvbV9mZF9zZXR0aW5nID0gJU1rYWxfYm9vbCwgaXNfY3VzdG9tX2Z1bGxfZmRfc2V0dGluZyA9ICVNa2FsX2Jvb2wgIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfRFNCUF9QTE1OX0lEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIERTQlAgUExNTiBJRCA9ICVzIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfRkRfQUxSRUFEWV9ESVNBQkxFRCI6IHsKKyAgICAgICAgImFwaVR5cGUiOiAiaW5kZXgiLCAKKyAgICAgICAgImZvcm1hdCI6ICJbTDRDXSBGRCBpcyBhbHJlYWR5IGRpc2FibGVkLiBObyBOZWVkIGZvciBhbnkgbW9kaWZpY2F0aW9uLiIsIAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIklORk9fTDRDX1BMTU5fQ0hFQ0tfRkFJTF9GT1JfRkQiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAiW0w0Q10gUExNTiBDaGVjayBmYWlsZWQuIFJlbW92ZSBjdXN0b20gc2V0dGluZ3MgdG8gZW5hYmxlIEZEIGFnYWluISEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfUExNTl9DSEVDS19GQUlMX0ZPUl9GVUxMX0ZEIjogeworICAgICAgICAiYXBpVHlwZSI6ICJpbmRleCIsIAorICAgICAgICAiZm9ybWF0IjogIltMNENdIFBMTU4gQ2hlY2sgZmFpbGVkLiBSZW1vdmUgY3VzdG9tIHNldHRpbmdzIHRvIGVuYWJsZSBmdWxsIFI4IEZEIGFnYWluISEhIiwgCisgICAgICAgICJ0cmFjZUNsYXNzIjogIlRSQUNFX0lORk8iCisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAiSU5GT19MNENfRFJCX1NUQVRVU19VUERBVEUiOiB7CisgICAgICAgICJhcGlUeXBlIjogImluZGV4IiwgCisgICAgICAgICJmb3JtYXQiOiAibDRjIERSQiBzdGF0ZSBjaGFuZ2UgJWQgLT4gJWQsIHJlcG9ydF9tb2RlOiAlZChyYXQgYml0bWFzaykiLAorICAgICAgICAidHJhY2VDbGFzcyI6ICJUUkFDRV9JTkZPIgorICAgICAgfQorICAgIH0KKyAgXSwgCisgICJ0cmFjZUZhbWlseSI6ICJQUyIsIAorICAidXNlck1vZHVsZSI6ICIiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRhcHNfbDRicGRuX3N0cnVjdC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRhcHNfbDRicGRuX3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzYTk4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGFwc19sNGJwZG5fc3RydWN0LmgKQEAgLTAsMCArMSw3NzggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBsNGFwc19sNGJwZG5fc3RydWN0LmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogIAorICogICAKKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiAgX0w0QVBTX0w0QlBETl9TVFJVQ1RfSAorI2RlZmluZSAgX0w0QVBTX0w0QlBETl9TVFJVQ1RfSAorCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKworI2luY2x1ZGUgImRkbV9jb21tb25fc3RydWN0LmgiCisjaW5jbHVkZSAiYXRjbWRfc3RydWN0LmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKworI2luY2x1ZGUgInBzX3B1YmxpY19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJtY2RfbDNfaW5jX3N0cnVjdC5oIgorI2luY2x1ZGUgImwzX2luY19sb2NhbC5oIgorCisjaWYgMSAvKiBNU0c6IEw0QVBTIC0+IEw0QlBETiAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgIE1TRzogTDRBUFMgLT4gTDRCUEROOiBTdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9jbWRfY29tbW9uX2hlYWRlcl9yZXFfc3RydWN0IGNtZDsKK30gbDRhcHNfbDRicGRuX2NtZF9jb21tb25faGVhZGVyX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBrYWxfdWludDggICAgIAkJCQkJCQljaWQ7CisJYXRfdG9rZW5fcGFyc2VfcmVzdWx0X2VudW0gICAgICAgICAgICAgIGNhY2hlZF9mZjAzX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZF9mZjAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlZ2VyIHR5cGUgCit9IGw0YXBzX2w0YnBkbl9ud19hcHBsaWVkX2NhY2hlX2RhdGFfbm90aWZ5X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZGNvbnRfcmVxX3N0cnVjdCBjbWQ7IAorICAgIGthbF91aW50OCBwc2k7CisKKyAgICAvKiBVc2VkIGZvciBTU0MgTW9kZSAzIFBEVSBzZXNzaW9uIHJlLXJlc3RhYmxpc2htZW50IGluIDVHLiAqLworICAgIGthbF9ib29sICBvbGRfcHNpX3ByZXNlbnQ7IAorICAgIGthbF91aW50OCBvbGRfcHNpOyAgICAgCisKKyAgICAvKiBVc2VkIGZvciBMNCB0d28gcGFyYW1zIChVUlNQIHJlcXVpcmVtZW50KS4gCisgICAgICogQ29uZGl0aW9uOiAKKyAgICAgKiAtIElmIGN1cnJlbnQgaXMgNUctUkFUIGFuZCBWR1BEUC9WR0FQTiBpcyBwcmVzZW50IChBVF9UT0tFTl9QQVJTRV9SRVNVTFRfT0spIAorICAgICAgICAgLT4gVXNlIHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMgaW4gYmVsb3cgCisgICAgICogLSBPdGhlcndpc2U6IChub24tNUctUkFUIG9yIGluIDVHIGJ1dCBWR1BEUC9WR0FQTiBpcyBOT1QgQVRfVE9LRU5fUEFSU0VfUkVTVUxUX09LCisgICAgICAgICAtPiBVc2UgcGFyYW10ZXJzIGluIHRoZSBhYm92ZSBjbWQgKGkuZS4sIHRoZSBub3JtYWwgQ0dEQ09OVCBjb21tYW5kKSAuICovCisgICAgYXRfdG9rZW5fcGFyc2VfcmVzdWx0X2VudW0gICAgIFZHUERQX3R5cGVfcGFyc2VfcmVzdWx0OworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWR1BEUF90eXBlW1BEUF9UWVBFX1NUUklOR19MRU5dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyaW5nIHR5cGUKKyAgICBhdF90b2tlbl9wYXJzZV9yZXN1bHRfZW51bSAgICAgVkdBUE5fcGFyc2VfcmVzdWx0OworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWR0FQTltBUE5fU1RSSU5HX0xFTl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyaW5nIHR5cGUKKworICAgIC8qIHVzZSB0byBpbmRpY2F0ZSBpcyB0aGlzIGRubiBpbiBsYWRuIGxpc3QgKi8KKyAgICBhdF90b2tlbl9wYXJzZV9yZXN1bHRfZW51bSAgICAgICAgICAgICAgbGFkbl9kbm5fcHJlc2VudDsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFkbl9kbm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVnZXIgdHlwZQorICAgIAorfSBsNGFwc19sNGJwZG5fY2dkY29udF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dkc2NvbnRfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2dkc2NvbnRfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NndGZ0X3JlcV9zdHJ1Y3QgY21kOyAKKyAgICBrYWxfdWludDggcWZpOworfSBsNGFwc19sNGJwZG5fY2d0ZnRfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NncXJlcV9yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ3FyZXFfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NncW1pbl9yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ3FtaW5fcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXFyZXFfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2dlcXJlcV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dlcW1pbl9yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ2VxbWluX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2VxbmVnX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2NnZXFuZWdfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnYWN0X3JlcV9zdHJ1Y3QgY21kOyAKKyAgICBkZG1fYXBuX3R5cGVfZW51bSBhcG5fdHlwZTsKK30gbDRhcHNfbDRicGRuX2NnYWN0X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2Ntb2RfcmVxX3N0cnVjdCBjbWQ7IAorICAgIGthbF91aW50OCBxZmk7Cit9IGw0YXBzX2w0YnBkbl9jZ2Ntb2RfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NncGFkZHJfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2dwYWRkcl9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dhdXRvX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2NnYXV0b19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dhbnNfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2dhbnNfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXJlcF9yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ2VyZXBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnY29udHJkcF9yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ2NvbnRyZHBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2Nnc2NvbnRyZHBfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2dzY29udHJkcF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2d0ZnRyZHBfcmVxX3N0cnVjdCBjbWQ7IAorICAgIGthbF91aW50OCAgcWZpOworfSBsNGFwc19sNGJwZG5fY2d0ZnRyZHBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXFvc19yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ2Vxb3NfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXFvc3JkcF9yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ2Vxb3NyZHBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2M1Z3Fvc19yZXFfc3RydWN0IGNtZDsgCisgICAga2FsX3VpbnQ4IHFmaTsKK30gbDRhcHNfbDRicGRuX2M1Z3Fvc19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfYzVncW9zcmRwX3JlcV9zdHJ1Y3QgY21kOyAKKyAgICBrYWxfdWludDggcWZpOworfSBsNGFwc19sNGJwZG5fYzVncW9zcmRwX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2RlbF9yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ2RlbF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dhdXRoX3JlcV9zdHJ1Y3QgY21kOyAKKyAgICBrYWxfdWludDggcHNpOyAKK30gbDRhcHNfbDRicGRuX2NnYXV0aF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2xhZG5fcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2xhZG5fcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2VjbmNmZ19yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9lY25jZmdfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2VnZGNvbnRfcmVxX3N0cnVjdCBjbWQ7IAorICAgIGthbF91aW50OCBwc2k7Cit9IGw0YXBzX2w0YnBkbl9lZ2Rjb250X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF92endhcG5ldG1yX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX3Z6d2FwbmV0bXJfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X3Z6d2FwbmVfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fdnp3YXBuZV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfZWdwYXVfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fZWdwYXVfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2VnYWN0X3JlcV9zdHJ1Y3QgY21kOyAKKyAgICBkZG1fYXBuX3R5cGVfZW51bSBhcG5fdHlwZTsKK30gbDRhcHNfbDRicGRuX2VnYWN0X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ3NkYXRhX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2Nnc2RhdGFfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2FjdHRlc3RfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fYWN0dGVzdF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfcHNiZWFyZXJfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fcHNiZWFyZXJfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2VnZmJfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fZWdmYl9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfZWdkZWxwZl9yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9lZ2RlbHBmX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ2xua3BmX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2VnbG5rcGZfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2VncGNvcmRwX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2VncGNvcmRwX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisgCisgICAgYXRfZWdwY29fcmVxX3N0cnVjdCBjbWQ7IAorICAgIGthbF91aW50OCBwc2k7IAorfSBsNGFwc19sNGJwZG5fZWdwY29fcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZGF0YV9yZXFfc3RydWN0IGNtZDsKKyAgICBuZXR3b3JrX2ludGVyZmFjZV9pZF9pbmZvX3N0cnVjdCBzZWxlY3RlZF9uZXR3b3JrX2ludGVyZmFjZV9pZF9pbmZvOworICAgIGFwbl90eXBlX2luZm9fc3RydWN0IGFwbl90eXBlX2luZm87Cit9IGw0YXBzX2w0YnBkbl9jZ2RhdGFfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9lZ2xkX3JlcV9zdHJ1Y3QgY21kOworfSBsNGFwc19sNGJwZG5fZWdsZF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfZWRhbGxvd19yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9lZGFsbG93X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBrYWxfYm9vbCAgICAgIGlzX3N1Y2Nlc3M7CisgICAga2FsX3VpbnQ4ICAgICBsdGVfYXR0YWNoX2NpZDsgLyogdXNlZCBpZiAoaXNfc3VjY2VzcyA9PSBLQUxfVFJVRSkgICovCisgICAgcHNfY2F1c2VfZW51bSBlcnJfY2F1c2U7ICAgICAgLyogdXNlZCBpZiAoaXNfc3VjY2VzcyA9PSBLQUxfRkFMU0UpICovCit9IGw0YXBzX2w0YnBkbl9sdGVfYXR0YWNoX3Bkbl9kZWZpbmVfbmVlZGVkX3JzcF9zdHJ1Y3Q7IAorCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNpbV9zbG90X2lkOworfSBsNGFwc19sNGJwZG5fc2V0X2RlZmF1bHRfc2ltX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCBpc19pbXNfcm9hbWluZ19lbmFibGU7Cit9IGw0YXBzX2w0YnBkbl9zZXRfZWltc3JvYW1fY29uZmlnX3ZhbHVlX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIAorICAgIGF0X2NtZF9jb21tb25faGVhZGVyX3JlcV9zdHJ1Y3QgY21kOworICAgIGthbF91aW50MzIgICBkdW1teTsKK30gbDRhcHNfbDRicGRuX2NtZF9ub3RfeWV0X3N1cHBvcnRfcmVxX3N0cnVjdDsgLyogT25seSBmb3IgVVQgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9lYXBuc3luY19yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9lYXBuc3luY19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGF0X2V2endhcGZjaWFfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fZXZ6d2FwZmNpYV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGF0X2VnZ3JudHJzcHRfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fZWdncm50cnNwdF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGF0X2VncGNhcF9yZXFfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9lZ3BjYXBfcmVxX3N0cnVjdDsgCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICBjaWQ7CisgICAga2FsX3VpbnQzMiBhcG5fdHlwZTsgLyogYml0IG1hcCByZWZlciB0byBlbnVtIGRkbV9hcG5fdHlwZSAqLworfSBsNGFwc19sNGJwZG5fbm90aWZ5X3Bkbl90eXBlX3JlcV9zdHJ1Y3Q7IAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGF0X2VzY29udGluZF9pbmRfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9lc2NvbnRpbmRfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9lc2NvbnRpbmRfcmVxX3N0cnVjdCBjbWQ7Cit9IGw0YXBzX2w0YnBkbl9lc2NvbnRpbmRfcmVxX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgIE1TRzogTDRBUFMgLT4gTDRCUEROOiBFbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2VuZGlmIAorCisjaWYgMSAvKiBNU0c6IEw0QlBETiAtPiBMNEFQUyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgIE1TRzogTDRCUEROIC0+IEw0QVBTOiBTdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogQSBnZW5lcmFsIHB1cnBvc2UgQVQtQ01EIGNvbmZpcm0gbWVzc2FnZSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9jbWRfY25mX3N0cnVjdCBjbWQ7CisKKyAgICAvKiBJbiB0aGUgYWJvdmUgZmllbGQgKGNtZCksIAorICAgICAqIGlmIGNtZC5pc19zdWNjZXNzID09IEtBTF9GQUxTRSwgdGhlIGNtZC5lcnJfY2F1c2UgaXMgYSBjb252ZXJ0ZWQgY2F1c2UgYWNjb3JkaW5nIHRvIDI3LjAwNy4gCisgICAgICogVGhlIGJlbG93IG9yaWdpbmFsX2NhdXNlIGlzIGFuICJ1bmNvbnZlcnRlZCIgY291bnRlcnBhcnQgZm9yIHJlZmVyZW5jZS4gKi8KKyAgICBrYWxfYm9vbCAgICAgICAgICBpc19vcmlnaW5hbF9jYXVzZV9mcm9tXzNncHBfcHJlc2VudDsgIC8qIFRydWU6IElmIChjbWQuaXNfc3VjY2VzcyA9PSBLQUxfRkFMU0UpIEFORCAoaXMgZnJvbSAzR1BQIE1EKSAqLworICAgIHBzX2NhdXNlX2VudW0gICAgIG9yaWdpbmFsX2NhdXNlX2Zyb21fM2dwcDsgICAgICAgICAgICAgLyogVmFsaWQgaWYgaXNfb3JpZ2luYWxfY2F1c2VfZnJvbV8zZ3BwX3ByZXNlbnQgPT0gS0FMX1RSVUUgKi8KKworfSBsNGFwc19sNGJwZG5fY21kX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgYXRfY2dldl9pbmRfc3RydWN0IGNtZDsgCisKKyAgICAvKiBUcnVlOiAgSWYgKGV2ZW50IGlzIENHRVZfRVZFTlRfTldfUEROX0RFQUNUIG9yIENHRVZfRVZFTlRfTldfREVBQ1Qgb3IgQ0dFVl9FVkVOVF9OV19SRUFDVCkgQU5EICh0aGUgQ0dFViBpcyBmcm9tIDNHUFApIAorICAgICAqIEZhbHNlOiBJZiAoZXZlbnQgaXMgbm90IHRoZSBhYm92ZSkgT1IgKHRoZSBDR0VWIGlzIGZyb20gM0dQUDIpICovCisgICAga2FsX2Jvb2wgICAgICBpc19jZ2V2X2RlYWN0X2NhdXNlX2Zyb21fM2dwcDsKKyAgICBwc19jYXVzZV9lbnVtIGNnZXZfZGVhY3RfY2F1c2U7CisKKyAgICAvKiBUcnVlOiAgSWYgKGV2ZW50IGlzIENHRVZfRVZFTlRfTldfTU9ESUZZKSBBTkQgKHRoZSBDR0VWIGlzIGZyb20gM0dQUCkgCisgICAgICogRmFsc2U6IElmIChldmVudCBpcyBub3QgdGhlIGFib3ZlKSBPUiAodGhlIENHRVYgaXMgZnJvbSAzR1BQMikgKi8KKyAgICBrYWxfYm9vbCAgICAgIGlzX2NnZXZfbW9kaWZ5X2NhdXNlX2Zyb21fM2dwcDsgCisgICAgcHNfY2F1c2VfZW51bSBjZ2V2X21vZGlmeV9jYXVzZTsgCit9IGw0YXBzX2w0YnBkbl9jZ2V2X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2Rjb250X2luZF9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2NnZGNvbnRfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZHNjb250X2luZF9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2NnZHNjb250X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ3RmdF9pbmRfc3RydWN0IGNtZDsgCisgICAga2FsX3VpbnQ4IHFmaTsKK30gbDRhcHNfbDRicGRuX2NndGZ0X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ3FyZXFfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2dxcmVxX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ3FtaW5faW5kX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2dxbWluX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2VxcmVxX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2NnZXFyZXFfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXFtaW5faW5kX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2dlcW1pbl9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dlcW5lZ19pbmRfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ2VxbmVnX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2FjdF9pbmRfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ2FjdF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dwYWRkcl9pbmRfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ3BhZGRyX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2F1dG9faW5kX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2dhdXRvX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2VyZXBfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2dlcmVwX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2NvbnRyZHBfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fY2djb250cmRwX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ3Njb250cmRwX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2Nnc2NvbnRyZHBfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NndGZ0cmRwX2luZF9zdHJ1Y3QgY21kOyAKKyAgICBrYWxfdWludDggcWZpOworfSBsNGFwc19sNGJwZG5fY2d0ZnRyZHBfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXFvc19pbmRfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ2Vxb3NfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXFvc3JkcF9pbmRfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ2Vxb3NyZHBfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2M1Z3Fvc19pbmRfc3RydWN0IGNtZDsgCisgICAga2FsX3VpbnQ4IHFmaTsKK30gbDRhcHNfbDRicGRuX2M1Z3Fvc19pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfYzVncW9zcmRwX2luZF9zdHJ1Y3QgY21kOyAKKyAgICBrYWxfdWludDggcWZpOworfSBsNGFwc19sNGJwZG5fYzVncW9zcmRwX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2RlbF9pbmRfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9jZ2RlbF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dhdXRoX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2NnYXV0aF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2xhZG5faW5kX3N0cnVjdCBjbWQ7CisgICAga2FsX2Jvb2wgICAgICAgICBudW1fb2ZfbGFkbl9pbmZvX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4ICAgICAgICBudW1fb2ZfbGFkbl9pbmZvOworICAgIGthbF9ib29sICAgICAgICAgbGFkbl9pbmZvX3ByZXNlbnQ7CisgICAgbGFkbl9pbmZvX3N0cnVjdCBsYWRuX2luZm9bTUFYX0xBRE5fSU5GT107Cit9IGw0YXBzX2w0YnBkbl9jbGFkbl9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2xhZG51X2luZF9zdHJ1Y3QgY21kOworICAgIGthbF9ib29sICAgICAgICAgbnVtX29mX2xhZG5faW5mb19wcmVzZW50OworICAgIGthbF91aW50OCAgICAgICAgbnVtX29mX2xhZG5faW5mbzsKKyAgICBrYWxfYm9vbCAgICAgICAgIGxhZG5faW5mb19wcmVzZW50OworICAgIGxhZG5faW5mb19zdHJ1Y3QgbGFkbl9pbmZvW01BWF9MQUROX0lORk9dOworfSBsNGFwc19sNGJwZG5fY2xhZG51X2luZF9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X3BzYmVhcmVyX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX3BzYmVhcmVyX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ2ZiX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2VnZmJfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2VnZGVscGZfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fZWdkZWxwZl9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfZWdsbmtwZl9pbmRfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9lZ2xua3BmX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ3Bjb3JkcF9pbmRfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9lZ3Bjb3JkcF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgICBMT0NBTF9QQVJBX0hEUiAKKyAKKyAgICBhdF9lZ3Bjb19pbmRfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9lZ3Bjb19pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGF0X2NtZF9jbmZfc3RydWN0IGNtZDsKK30gbDRhcHNfbDRicGRuX2NnZGF0YV9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGF0X2NtZF9jbmZfc3RydWN0IGNtZDsKK30gbDRhcHNfbDRicGRuX2VnbGRfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9lZ2V2X2luZF9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX2VnZXZfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKK30gbDRhcHNfbDRicGRuX2x0ZV9hdHRhY2hfbmVlZGVkX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIC8qKgorICAgICAqIEtBTF9UUlVFOiBMNEJQRE4ga25vd3MgdGhlIGVIUlBEIHRvIExURSBpbnRlclJBVCwgCisgICAgICogc28gd2hlbiBMNEJQRE4gZGV0ZWN0cyBjdXJyZW50bHkgaXQgaXMgYW4gZUhSUEQgdG8gTFRFIGludGVyUkFUIHNjZW5hcmlvLCAKKyAgICAgKiBMNCB3aWxsIHN1Z2dlc3QgRERNIHRvIHNldCBoYW5kb3ZlciBmbGFnIAorICAgICAqIAorICAgICAqIE5vdGU6IEw0IG9ubHkgc3VnZ2VzdHMgRERNIHRvIHNldCBoYW5kb3ZlciBmbGFnLiAKKyAgICAgKiBERE0gaXMgdGhlIGZpbmFsIGRlY2lzaW9uIG1ha2VyIGFuZCBuZWVkcyB0byBjb25zaWRlciBvdGhlciBjb25kaXN0aW9ucy4gCisgICAgICoKKyAgICAgKiBFeC4gMTogTDQgc3VnZ2VzdHMgRERNIHRvIHNldCBoYW5kb3ZlciBmbGFnIGFuZCBERE0gZGVjaWRlcyB0byB1c2UgQVBOMSB0byBkbyBMVEUgQVRUQUNILiAKKyAgICAgKiBIb3dldmVyIEFQTjEgaXMgbm90IGN1cnJlbnRseSBhbGl2ZS4gSW4gdGhpcyBjYXNlLCBERE0gbmVlZCB0byBOT1QgU0VUIGhhbmRvdmVyIGZsYWcgCisgICAgICoKKyAgICAgKiBFeC4gMjogTDQgc3VnZ2VzdHMgRERNIHRvIHNldCBoYW5kb3ZlciBmbGFnIGFuZCBERE0gZGVjaWRlcyB0byB1c2UgQVBOMSB0byBkbyBMVEUgQVRUQUNILgorICAgICAqIElmIEFQTjEgZ2V0IGNhdXNlICM1NCBkdXJpbmcgbGFzdCBMVEUgQVRUQUNILCBpbiB0aGlzIGNhc2UgRERNIG5lZWQgdG8gTk9UIFNFVCBoYW5kb3ZlciBmbGFnIAorICAgICAqIAorICAgICAqIEV4LiAzOiBMNCBzdWdnZXN0cyBERE0gdG8gc2V0IGhhbmRvdmVyIGZsYWcgYW5kIERETSBkZWNpZGVzIHRvIHVzZSBBUE4xIHRvIGRvIExURSBBVFRBQ0guCisgICAgICogSWYgQVBOMSBnZXQgY2F1c2UgIzU0IGR1cmluZyBsYXN0IExURSBBVFRBQ0gsIGFuZCBERE0gd2FudHMgdG8gdXNlIEFQTjIgKGFsaXZlKSB0byBkbyBMVEUgQVRUQUNILiAKKyAgICAgKiBpbiB0aGlzIGNhc2UsIERETSBuZWVkIHRvIFNFVCBoYW5kb3ZlciBmbGFnIAorICAgICAqLyAgIAorICAgIGthbF9ib29sIGlzX2w0YnBkbl9zdWdnZXN0ZWRfdG9fc2V0X2hhbmRvdmVyOworICAgIHBsbW5faWRfc3RydWN0IGN1cnJlbnRfcGxtbl9pZDsKK30gbDRhcHNfbDRicGRuX2x0ZV9hdHRhY2hfcGRuX2RlZmluZV9uZWVkZWRfaW5kX3N0cnVjdDsgCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBrYWxfdWludDggICAgIGx0ZV9hdHRhY2hfY2lkOyAKKyAgICBrYWxfYm9vbCBjYXVzZTJfcHJlc2VudDsKKyAgICBwc19jYXVzZV9lbnVtIGVycl9jYXVzZTI7CisgICAgcGRwX2FkZHJfdHlwZV9lbnVtIG53X2FwcGxpZWRfcGRwX3R5cGU7Cit9IGw0YXBzX2w0YnBkbl9sdGVfYXR0YWNoX3Bkbl9hY3RpdmF0ZV9zdWNjZXNzX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBrYWxfdWludDggICAgIGx0ZV9hdHRhY2hfY2lkOyAKKyAgICBwc19jYXVzZV9lbnVtIGNhdXNlOworICAgIGthbF9ib29sIGlzX2NoYW5nZV90b19hcG5fY2xhc3NfcHJlc2VudDsKKyAgICBrYWxfdWludDggY2hhbmdlX3RvX2Fwbl9jbGFzczsKK30gbDRhcHNfbDRicGRuX2x0ZV9hdHRhY2hfcGRuX2FjdGl2YXRlX2ZhaWx1cmVfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF92endhcG5lX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX3Z6d2FwbmVfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF92endhcG5ldG1yX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRhcHNfbDRicGRuX3Z6d2FwbmV0bXJfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAga2FsX3VpbnQ4ICAgICAgY2lkOyAKKyAgICBpcF9hZGRyX3N0cnVjdCBpcF9hZGRyOworfSBsNGFwc19sNGJwZG5fcGRuX21vZGlmeV9pbmRfc3RydWN0OyAKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9lYXBuc3luY19pbmRfc3RydWN0IGNtZDsgCit9IGw0YXBzX2w0YnBkbl9lYXBuc3luY19pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGF0X2V2endhcGZjaWFfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fZXZ6d2FwZmNpYV9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGF0X2VnZ3JudHJzcHRfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fZWdncm50cnNwdF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGF0X2VncGNhcF90ZXN0X21vZGVfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGFwc19sNGJwZG5fZWdwY2FwX3Rlc3RfbW9kZV9pbmRfc3RydWN0OworCit0eXBlZGVmIHBhbV9iYWNrb2ZmX3RpbWVyX3JlcG9ydF9pbmRfc3RydWN0IGw0YXBzX2w0YnBkbl9iYWNrb2ZmX3RpbWVyX3N0YXR1c19pbmRfc3RydWN0OworIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgIE1TRzogTDRCUEROIC0+IEw0QVBTOiBFbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2VuZGlmIAorCisjZW5kaWYgLyogX0w0QVBTX0w0QlBETl9TVFJVQ1RfSCAqLwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRhcHNfcHVibGljX2VudW0uaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0YXBzX3B1YmxpY19lbnVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4ODVkMAotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0YXBzX3B1YmxpY19lbnVtLmgKQEAgLTAsMCArMSw4NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGw0YXBzX3B1YmxpY19lbnVtLmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogIAorICogICAKKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiAgX0w0QVBTX1BVQkxJQ19FTlVNX0gKKyNkZWZpbmUgIF9MNEFQU19QVUJMSUNfRU5VTV9ICisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfZGVmcy5oIgorCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKwordHlwZWRlZiBlbnVtCit7CisgICAgTDRBUFNfQ0FVU0VfQ0FURUdPUllfVU5LTk9XTiwKKyAgICBMNEFQU19DQVVTRV9DQVRFR09SWV9TTV9OV19SRUosCisgICAgTDRBUFNfQ0FVU0VfQ0FURUdPUllfRVNNX05XX1JFSiwKKyAgICBMNEFQU19DQVVTRV9DQVRFR09SWV9WR1NNX05XX1JFSiwKK30gbDRhcHNfY2F1c2VfY2F0ZWdvcnlfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTDRBUFNfUkVUUllfVFlQRV9OT05FLAorICAgIEw0QVBTX1JFVFJZX1RZUEVfSU1NRURJQVRFLAorICAgIEw0QVBTX1JFVFJZX1RZUEVfU1VTUEVORF9SRVNVTUUsCit9IGw0YXBzX3JldHJ5X3R5cGVfZW51bTsKKworI2VuZGlmIC8qIF9MNEFQU19QVUJMSUNfRU5VTV9IICovCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGFwc19wdWJsaWNfdXRpbGl0eS5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRhcHNfcHVibGljX3V0aWxpdHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTRmYjA5Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRhcHNfcHVibGljX3V0aWxpdHkuaApAQCAtMCwwICsxLDc0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgbDRhcHNfcHVibGljX3V0aWxpdHkuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICAKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAgCisgKiAgIAorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmICBfTDRBUFNfUFVCTElDX1VUSUxJVFlfSAorI2RlZmluZSAgX0w0QVBTX1BVQkxJQ19VVElMSVRZX0gKKworI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiCisKKyNpbmNsdWRlICJwc19wdWJsaWNfZW51bS5oIgorCisjaW5jbHVkZSAibDRhcHNfcHVibGljX2VudW0uaCIKKworLyogVGhpcyBBUEkgaXMgcHJvdmlkZWQgdG8gRERNIG9ubHkgdG8ga25vdyB0aGUgY2F0ZWdvcnkgb2YgcmVqZWN0IGNhdXNlICovCitsNGFwc19jYXVzZV9jYXRlZ29yeV9lbnVtIGw0YXBzX2NvbnZlcnRfY2F1c2VfY2F0ZWdvcnkocHNfY2F1c2VfZW51bSBjYXVzZSk7CisKKyNlbmRpZiAvKiBfRERNX0w0QVBTX1NUUlVDVF9IICovCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGFwc190Y21fc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGFwc190Y21fc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFiNmFlNwotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0YXBzX3RjbV9zdHJ1Y3QuaApAQCAtMCwwICsxLDY5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTkKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgbDRhcHNfdGNtX3N0cnVjdC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIAorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqICAKKyAqICAgCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICRMb2ckCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgIF9MNEFQU19UQ01fU1RSVUNUX0gKKyNkZWZpbmUgIF9MNEFQU19UQ01fU1RSVUNUX0gKKworI2lmIF9fR1JPVVBfTDRBUFNfVENNX0lOVEVSRkFDRV9UWVBFREVGX0FSRUFfXyB8fCAxCit0eXBlZGVmIGlhX2Fwbl9jaGFuZ2VfcmVxX3N0cnVjdCBsNGFwc190Y21faWFfYXBuX2NoYW5nZV9yZXFfc3RydWN0OyAKKyNlbmRpZiAvKiBfX0dST1VQX0w0QVBTX1RDTV9JTlRFUkZBQ0VfVFlQRURFRl9BUkVBX18gKi8KKworI2lmIF9fR1JPVVBfTDRBUFNfVENNX0lOVEVSRkFDRV9FWFBMSUNJVF9ERUZJTkVfQVJFQV9fIHx8IDEKKyNlbmRpZiAvKiBfX0dST1VQX0w0QVBTX1RDTV9JTlRFUkZBQ0VfRVhQTElDSVRfREVGSU5FX0FSRUFfXyAqLworCisjZW5kaWYgLyogX0w0QVBTX1RDTV9TVFJVQ1RfSCAqLwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRiX2F0Y2lfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGJfYXRjaV9zdHJ1Y3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTRkY2QxCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRiX2F0Y2lfc3RydWN0LmgKQEAgLTAsMCArMSw5NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGw0Yl9hdGNpX3N0cnVjdC5oCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfTDRCX0FUQ0lfU1RSVUNUX0gKKyNkZWZpbmUgX0w0Ql9BVENJX1NUUlVDVF9ICisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfZGVmcy5oIgorI2luY2x1ZGUgImw0Yl9pbnRlcm5hbF9kZWZzLmgiCisjaW5jbHVkZSAiYXRwX3B1YmxpY19kZWZzLmgiCisKKy8qIE1TR19JRF9MNEJfQVRDSV9BVF9DTURfUkVRICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBsNGJfY2hhbm5lbF9lbnVtIGNoX2lkOworfSBsNGJfYXRjaV9hdF9jbWRfcmVxX3N0cnVjdDsKKworLyogTVNHX0lEX0w0Ql9BVENJX0FUX0NNRF9DTkYgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGw0Yl9jaGFubmVsX2VudW0gY2hfaWQ7CisgICAgcHJveHlfY21kX3Jlc3VsdF9lbnVtIHJlc3VsdDsKKyAgICBrYWxfYm9vbCBzdHVmZjsKK30gbDRiX2F0Y2lfYXRfY21kX2NuZl9zdHJ1Y3Q7CisKKy8qIE1TR19JRF9MNEJfQVRDSV9BVF9VUkNfSU5EICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY2hfaWQ7CisgICAga2FsX2Jvb2wgc3R1ZmY7Cit9IGw0Yl9hdGNpX2F0X3VyY19pbmRfc3RydWN0OyAvL2FsaWduIHRvIGF0cF9sNGJfYXRfdXJjX2luZF9zdHJ1Y3QKKworLyogTVNHX0lEX0w0QlBXUl9BVENJX0VQT0ZfUkVRICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBsNGJfY2hhbm5lbF9lbnVtIGNoX2lkOworfSBsNGJwd3JfYXRjaV9lcG9mX3JlcV9zdHJ1Y3Q7CisKKy8qIE1TR19JRF9MNEJQV1JfQVRDSV9FUE9GX0NORiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgbDRiX2NoYW5uZWxfZW51bSBjaF9pZDsKKyAgICBwcm94eV9jbWRfcmVzdWx0X2VudW0gcmVzdWx0OworfSBsNGJwd3JfYXRjaV9lcG9mX2NuZl9zdHJ1Y3Q7CisKKyNlbmRpZiAvKiBfTDRCX0FUQ0lfU1RSVUNUX0ggKi8KKworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGJud19sNGNfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGJud19sNGNfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFhZThkMgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Ym53X2w0Y19zdHJ1Y3QuaApAQCAtMCwwICsxLDExMyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGw0Ym53X2w0Y19zdHJ1Y3QuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICAKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqCisgKiBBdXRob3I6QWxsZW4gSHN1CisgKiAtLS0tLS0tCisgKiAgCisgKiAgIAorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmICBfTDRCTldfTDRDX1NUUlVDVF9ICisjZGVmaW5lICBfTDRCTldfTDRDX1NUUlVDVF9ICisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfZGVmcy5oIgorCisjaW5jbHVkZSAicmFjX2dtc3Nfc3RydWN0LmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKyNpbmNsdWRlICJsM19pbmNfZW51bXMuaCIKKyNpbmNsdWRlICJhdHBfbDRiX3N0cnVjdC5oIgorI2lmICghZGVmaW5lZChfX01BVUlfQkFTSUNfXykpICYmICghKGRlZmluZWQoX19OUl9MMVNJTV9fKSB8fCBkZWZpbmVkKF9fTFRFX0wxU0lNX18pKSkKKyNpbmNsdWRlICJsM19pbmNfbG9jYWwuaCIKKyNlbmRpZgorI2luY2x1ZGUgImw0Y19jb21tb25fZW51bS5oIgorI2luY2x1ZGUgImRkbV9sNGJud19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJyYWMybDRjX3N0cnVjdC5oIgorCit0eXBlZGVmIHJhY19nbXNzX3N1c3BlbmRfZWdyZWdfdXBkYXRlX2luZF9zdHJ1Y3QgbDRibndfbDRjX3N1c3BlbmRfZWdyZWdfdXBkYXRlX2luZF9zdHJ1Y3Q7Cit0eXBlZGVmIHJhY19nbXNzX3N1c3BlbmRfZWdyZWdfdXBkYXRlX2luZF9zdHJ1Y3QgbDRibndfbDRjX3N1c3BlbmRfZWdyZWdfdXBkYXRlX2NuZl9zdHJ1Y3Q7Cit0eXBlZGVmIGw0Y3JhY19hY3RpdmVfcmF0X2luZF9zdHJ1Y3QgbDRibndfbDRjX2FjdGl2ZV9yYXRfaW5kX3N0cnVjdDsKK3R5cGVkZWYgZGRtX2w0Ym53X3BzX3R5cGVfY29uZmlnX3JlcV9zdHJ1Y3QgbDRibndfbDRjX3BzX3R5cGVfY29uZmlnX3JlcV9zdHJ1Y3Q7Cit0eXBlZGVmIGRkbV9sNGJud19wc190eXBlX2NvbmZpZ19jbmZfc3RydWN0IGw0Ym53X2w0Y19wc190eXBlX2NvbmZpZ19jbmZfc3RydWN0OwordHlwZWRlZiBkZG1fbDRibndfcHNfcmVhdHRhY2hfY29uZmlnX3JlcV9zdHJ1Y3QgbDRibndfbDRjX3BzX3JlYXR0YWNoX2NvbmZpZ19yZXFfc3RydWN0OwordHlwZWRlZiBkZG1fbDRibndfaW1zX3Bkbl9yZWpfaW5kX3N0cnVjdCBsNGJud19sNGNfaW1zX3Bkbl9yZWpfaW5kX3N0cnVjdDsKKworCit0eXBlZGVmIGw0Y3JhY19yZWdfc3RhdGVfaW5kX3N0cnVjdCBsNGJud19sNGNfcmVnX3N0YXRlX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0eworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX2Jvb2wgcHJvdG9jb2xfbG9jazsKKyAgICBsNGNfaW1laV9tZWlkX2FjdGlvbl9lbnVtIGxvY2tfYWN0aW9uOworfWw0Ym53X2w0Y19pbWVpX21laWRfbG9ja19yZXFfc3RydWN0OyAKKworI2lmICghZGVmaW5lZChfX01BVUlfQkFTSUNfXykpICYmICghKGRlZmluZWQoX19OUl9MMVNJTV9fKSB8fCBkZWZpbmVkKF9fTFRFX0wxU0lNX18pKSkKK3R5cGVkZWYgc3RydWN0eworICAgIExPQ0FMX1BBUkFfSERSCisgICAgcGxtbl9pZF9zdHJ1Y3QgcGxtbjsgCisgICAga2FsX3VpbnQ4IGNhcnJpZXJfaWRbNl07Cit9bDRibndfbDRjX2lsbGVnYWxfbWVfaW5kX3N0cnVjdDsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgbDRjX3NlcnZpY2VfbW9kZV9vcF9lbnVtIG9wOworfSBsNGJud19sNGNfc2VydmljZV9tb2RlX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCByZXN1bHQ7Cit9IGw0Ym53X2w0Y19zZXJ2aWNlX21vZGVfY25mX3N0cnVjdDsKKworCisjZW5kaWYgLyogX0w0Qk5XX0w0Q19TVFJVQ1RfSCAqLwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRibndfcHVibGljX3N0cnVjdC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRibndfcHVibGljX3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZGFmZDkKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGJud19wdWJsaWNfc3RydWN0LmgKQEAgLTAsMCArMSwxMzMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqCWw0Ym53X3B1YmxpY19zdHJ1Y3QuaAorICoKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogIFRoaXMgaXMgdGhlIGhlYWRlciBmaWxlIG9mIGw0Ym53X3B1YmxpY19zdHJ1Y3QuYworICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAgCisjaWZuZGVmICBfTDRCTldfUFVCTElDX1NUUlVDVF9ICisjZGVmaW5lICBfTDRCTldfUFVCTElDX1NUUlVDVF9ICisgICAgIAorI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiCisjaW5jbHVkZSAibDNfaW5jX2VudW1zX3B1YmxpYy5oIgorI2lmICghZGVmaW5lZChfX01BVUlfQkFTSUNfXykpICYmICghKGRlZmluZWQoX19OUl9MMVNJTV9fKSB8fCBkZWZpbmVkKF9fTFRFX0wxU0lNX18pKSkKKyNpbmNsdWRlICJsM19pbmNfbG9jYWwuaCIKKyNlbmRpZgorI2luY2x1ZGUgInBzX3B1YmxpY19lbnVtLmgiCisgICAgIAordHlwZWRlZiBzdHJ1Y3QgeworCisgICAgLyoqIE9ubHkgZXhwZWN0cyB0aGUgYmVsb3cgdmFsdWVzIGZyb20gcmF0X2VudW06IAorICAgICogICAgUkFUX05PTkUgICAgID0gMCwKKyAgICAqICAgIFJBVF9HU00gICAgICA9IDEsCisgICAgKiAgICBSQVRfVU1UUyAgICAgPSAyLAorICAgICogICAgUkFUX0xURSAgICAgID0gNCwKKyAgICAqICAgIFJBVF9DMksgICAgICA9IDE2LAorICAgICogICAgUkFUXzF4UlRUICAgID0gMzIsCisgICAgKiAgICBSQVRfSFJQRCAgICAgPSA2NCwKKyAgICAqLworICAgIHJhdF9lbnVtIGN1cnJlbnRseV9hdHRhY2hlZF9yYXQ7CisgICAgcmF0X2VudW0gY3NfY3VycmVudGx5X2F0dGFjaGVkX3JhdDsKKworICAgIGw0Y19kYXRhX3NwZWVkX3N1cHBvcnRfZW51bSBkYXRhX3NwZWVkX3N1cHBvcnQ7CisgICAgbDRjX2RhdGFfc3BlZWRfc3VwcG9ydF9lbnVtIGNzX2RhdGFfc3BlZWRfc3VwcG9ydDsKKworICAgIGthbF91aW50OCBwbG1uW01BWF9QTE1OX0xFTisxXTsgLyogaW4gc3RyaW5nIGZvcm1hdCwgZnJvbSArRU9QUyAqLworICAgIGthbF91aW50OCBjc19wbG1uW01BWF9QTE1OX0xFTisxXTsgLyogaW4gc3RyaW5nIGZvcm1hdCwgZnJvbSArRU9QUyAqLworCisgICAga2FsX3VpbnQzMiBsYWM7ICAgIC8qIExBQyBvciBUQUMgd2l0aGluIFBTIGRvbWFpbiAtIDIvMy80RzogMi1ieXRlOyAgNUc6IDMtYnl0ZSAgKi8KKyAgICBrYWxfdWludDMyIGNzX2xhYzsgLyogTEFDIG9yIFRBQyB3aXRoaW4gQ1MgZG9tYWluIC0gMi8zLzRHOiAyLWJ5dGU7ICA1RzogMy1ieXRlICAqLworCisgICAga2FsX3VpbnQ2NCBjaTsgLyogZnJvbSArQ0dSRUcgKi8KKyAgICBrYWxfdWludDY0IGNzX2NpOyAvKiBmcm9tICtDUkVHICovCisKKyAgICBrYWxfdWludDggaXNfcm9hbWluZzsKKyAgICBrYWxfdWludDggY3NfaXNfcm9hbWluZzsKKworICAgIGthbF91aW50OCBwc19zdGF0ZTsgLyogZnJvbSArRUdSRUcgKi8KKyAgICBrYWxfdWludDggY3Nfc3RhdGU7IC8qIGZyb20gK0VSRUcgKi8KKworICAgIGthbF9ib29sIGlzX2hvbWVfY291bnRyeTsKKyAgICBrYWxfYm9vbCBpc19ocGxtbjsKKworICAgIC8qIEMySyBjZWxsIGluZm8gKi8KKyAgICBrYWxfdWludDE2IHNpZDsKKyAgICBrYWxfdWludDE2IG5pZDsKKyAgICBrYWxfdWludDggIHB6aWQ7CisgICAga2FsX3VpbnQxNiBiYXNlX2lkOworICAgIGthbF91aW50MzIgc2VjdG9yX2lkWzRdOworICAgIGthbF91aW50OCAgc3VibmV0X2xlbmd0aDsKKyAgICBrYWxfdWludDggIGNhcnJpZXJfaWRbN107CisgICAgLy9rYWxfdWludDggc2lkW0lNQ19NQVhfU0lEX0xFTl07IC8qIGluIHN0cmluZyBmb3JtYXQgKi8KKyAgICAvL2thbF91aW50OCBuaWRbSU1DX01BWF9OSURfTEVOXTsgLyogaW4gc3RyaW5nIGZvcm1hdCAqLworICAgIC8va2FsX3VpbnQ4IHB6aWRbSU1DX01BWF9QWklEX0xFTl07IC8qIGluIHN0cmluZyBmb3JtYXQgKi8KKyAgICAvL2thbF91aW50OCBiYXNlX2lkW0lNQ19NQVhfQkFTRV9JRF9MRU5dOyAvKiBpbiBzdHJpbmcgZm9ybWF0ICovCisgICAgLy9rYWxfdWludDggc2VjdG9yX2lkW0lNQ19NQVhfU0VDVE9SX0lEX0xFTl07IC8qIGluIHN0cmluZyBmb3JtYXQgKi8KKyAgICAvL2thbF91aW50OCBzdWJuZXRfbGVuZ3RoW0lNQ19NQVhfU1VCTkVUX0xFTkdUSF9MRU5dOyAvKiBpbiBzdHJpbmcgZm9ybWF0ICovCisgICAgLy9rYWxfdWludDggY2Fycmllcl9pZFtJTUNfTUFYX0NBUlJJRVJfSURfTEVOXTsgLyogaW4gc3RyaW5nIGZvcm1hdCAqLworfSBsNGJud19wdWJsaWNfYXR0YWNoZWRfbmV0d29ya19pbmZvX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgbDRibndfcHVibGljX2F0dGFjaGVkX25ldHdvcmtfaW5mb19zdHJ1Y3QgYXR0YWNoZWRfbmV0d29ya19pbmZvOworfSBsNGJud19hdHRhY2hlZF9yYXRfaW5kX3N0cnVjdCwgaW1zbV9sNGJud19hdHRhY2hlZF9yYXRfaW5kX3N0cnVjdCwgaXdsYW5fbDRibndfYXR0YWNoZWRfcmF0X2luZF9zdHJ1Y3Qsc3Nkc19sNGJud19hdHRhY2hlZF9yYXRfaW5kX3N0cnVjdDsKKworI2lmICghZGVmaW5lZChfX01BVUlfQkFTSUNfXykpICYmICghKGRlZmluZWQoX19OUl9MMVNJTV9fKSB8fCBkZWZpbmVkKF9fTFRFX0wxU0lNX18pKSkKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggYmFycmluZ19yYXQ7CisgICAga2FsX3VpbnQxNiBiYXJyaW5nX3NlcnZpY2U7CisgICAgcGxtbl9pZF9zdHJ1Y3QgcGxtbjsKKwlrYWxfdWludDggICAgIGNhcnJpZXJfaWRbNl07Cit9IGl3bGFuX2w0Ym53X2ZvcmNlX2Jhcl9pbmRfc3RydWN0OworI2VuZGlmCisKKyNlbmRpZiAvKiBfTDRCTldfUFVCTElDX1NUUlVDVF9IICovCisKKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRibndfcHVibGljX3V0aWxpdHkuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Ym53X3B1YmxpY191dGlsaXR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUxNzIyYQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Ym53X3B1YmxpY191dGlsaXR5LmgKQEAgLTAsMCArMSw4MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICoJbDRibndfcHVibGljX3V0aWxpdHkuaAorICoKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogIFRoaXMgaXMgdGhlIGhlYWRlciBmaWxlIG9mIGw0Ym53X3V0aWxpdHkuYworICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpZm5kZWYgX0w0Qk5XX1BVQkxJQ19VVElMSVRZX0hfCisjZGVmaW5lIF9MNEJOV19QVUJMSUNfVVRJTElUWV9IXworCisKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfZW51bS5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJsNGJfaW50ZXJuYWxfZGVmcy5oIgorI2luY2x1ZGUgImw0Ym53X3B1YmxpY19zdHJ1Y3QuaCIKKworZXh0ZXJuIGw0Ym53X3B1YmxpY19hdHRhY2hlZF9uZXR3b3JrX2luZm9fc3RydWN0IGw0Ym53X3B1YmxpY19nZXRfYXR0YWNoZWRfbmV0d29ya19pbmZvKCk7ICAvLyBUT0RPOiB0byBiZSBwaGFzZWQtb3V0CitleHRlcm4ga2FsX3VpbnQ4IGw0YnB3cl9wdWJsaWNfZ2V0X29sZF9lZnVuX3N0YXRlKCk7CisKKworZXh0ZXJuIGthbF9ib29sIGw0Ym53X3B1YmxpY19pc19yZWdpc3RlcmVkX3JvYW1pbmcoa2FsX3VpbnQ4IHBzX2lkeCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGJud19wdWJsaWNfaXNfcHNfcmVnaXN0ZXJlZF9yb2FtaW5nKGthbF91aW50OCBwc19pZHgpOworCitleHRlcm4ga2FsX2Jvb2wgbDRibndfcHVibGljX2lzX3JlZ2lzdGVyZWQoa2FsX3VpbnQ4IHBzX2lkeCk7CisKK3JhdF9lbnVtIGw0Ym53X3B1YmxpY19nZXRfdXNlcl9yYXRfbW9kZV9ieV9wc19pZChrYWxfdWludDggcHNfaWR4KTsKKworZXh0ZXJuIGthbF91aW50OCBsNGJud19wdWJsaWNfZ2V0X2N1cnJlbnRfYWN0X2luXzNncHAyKCk7CisKK2thbF9ib29sIGw0Ym53X3B1YmxpY19nZXRfcGxtbl9zZXJ2aWNlX2luZm8oa2FsX3VpbnQ4IHBzX2lkeCwgZG9tYWluX2lkX2VudW0gc2VydmljZSwga2FsX3VpbnQ4ICpwbG1uX2lkLCBrYWxfYm9vbCAqaW5fc2VydmljZSk7CityYXRfZW51bSBsNGJud19wdWJsaWNfZ2V0X2N1cnJlbnRseV9hdHRhY2hlZF9yYXQoa2FsX3VpbnQ4IHBzX2lkeCk7Cit2b2lkIGw0Ym53X3B1YmxpY19nZXRfY2VsbF9pbmZvKGthbF91aW50OCBwc19pZHgsIGw0Ym53X2NzX3BzX2NlbGxfaW5mb19zdHJ1Y3QgKiBjZWxsX2luZm8pOworCisjZW5kaWYgLyogX0w0Qk5XX1BVQkxJQ19VVElMSVRZX0hfKi8KKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRicGRuX2w0Y19zdHJ1Y3QuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0YnBkbl9sNGNfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgzYTUxNwotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0YnBkbl9sNGNfc3RydWN0LmgKQEAgLTAsMCArMSw3NzAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBsNGJwZG5fbDRjX3N0cnVjdC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIAorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqICAKKyAqICAgCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgIF9MNEJQRE5fTDRDX1NUUlVDVF9ICisjZGVmaW5lICBfTDRCUEROX0w0Q19TVFJVQ1RfSAorCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKworI2luY2x1ZGUgImF0Y21kX3N0cnVjdC5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19lbnVtLmgiCisjaW5jbHVkZSAibDNfaW5jX2VudW1zLmgiCisjaW5jbHVkZSAibWNkX2wzX2luY19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJsM19pbmNfbG9jYWwuaCIKKyNpbmNsdWRlICJkZG1fY29tbW9uX3N0cnVjdC5oIgorCisjaWYgMSAvKiBHZW5lcmFsIHB1cnBvc2UgQVQtQ01EIG1lc3NhZ2UgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICBHZW5lcmFsIHB1cnBvc2UgQVQtQ01EOiBTdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGF0X2NtZF9jb21tb25faGVhZGVyX3JlcV9zdHJ1Y3QgY21kOworfSBsNGJwZG5fbDRjX2NtZF9jb21tb25faGVhZGVyX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgYXRfY21kX2NuZl9zdHJ1Y3QgY21kOworCisgICAgLyogSW4gdGhlIGFib3ZlIGZpZWxkIChjbWQpLCAKKyAgICAgKiBpZiBjbWQuaXNfc3VjY2VzcyA9PSBLQUxfRkFMU0UsIHRoZSBjbWQuZXJyX2NhdXNlIGlzIGEgY29udmVydGVkIGNhdXNlIGFjY29yZGluZyB0byAyNy4wMDcuIAorICAgICAqIFRoZSBiZWxvdyBvcmlnaW5hbF9jYXVzZSBpcyBhbiAidW5jb252ZXJ0ZWQiIGNvdW50ZXJwYXJ0IGZvciByZWZlcmVuY2UuICovCisgICAga2FsX2Jvb2wgICAgICAgICAgaXNfb3JpZ2luYWxfY2F1c2VfZnJvbV8zZ3BwX3ByZXNlbnQ7ICAvKiBUcnVlOiBJZiAoY21kLmlzX3N1Y2Nlc3MgPT0gS0FMX0ZBTFNFKSBBTkQgKGlzIGZyb20gM0dQUCBNRCkgKi8KKyAgICBwc19jYXVzZV9lbnVtICAgICBvcmlnaW5hbF9jYXVzZV9mcm9tXzNncHA7ICAgICAgICAgICAgIC8qIFZhbGlkIGlmIGlzX29yaWdpbmFsX2NhdXNlX2Zyb21fM2dwcF9wcmVzZW50ID09IEtBTF9UUlVFICovCisKK30gbDRicGRuX2w0Y19jbWRfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgCisgICAgYXRfY2dldl9pbmRfc3RydWN0IGNtZDsKKyAgICAKKyAgICAvKiBUcnVlOiAgSWYgKGV2ZW50IGlzIENHRVZfRVZFTlRfTldfUEROX0RFQUNUIG9yIENHRVZfRVZFTlRfTldfREVBQ1Qgb3IgQ0dFVl9FVkVOVF9OV19SRUFDVCkgQU5EICh0aGUgQ0dFViBpcyBmcm9tIDNHUFApIAorICAgICAqIEZhbHNlOiBJZiAoZXZlbnQgaXMgbm90IHRoZSBhYm92ZSkgT1IgKHRoZSBDR0VWIGlzIGZyb20gM0dQUDIpICovCisgICAga2FsX2Jvb2wgICAgICBpc19jZ2V2X2RlYWN0X2NhdXNlX2Zyb21fM2dwcDsKKyAgICBwc19jYXVzZV9lbnVtIGNnZXZfZGVhY3RfY2F1c2U7CisKKyAgICAvKiBUcnVlOiAgSWYgKGV2ZW50IGlzIENHRVZfRVZFTlRfTldfTU9ESUZZKSBBTkQgKHRoZSBDR0VWIGlzIGZyb20gM0dQUCkgCisgICAgICogRmFsc2U6IElmIChldmVudCBpcyBub3QgdGhlIGFib3ZlKSBPUiAodGhlIENHRVYgaXMgZnJvbSAzR1BQMikgKi8KKyAgICBrYWxfYm9vbCAgICAgIGlzX2NnZXZfbW9kaWZ5X2NhdXNlX2Zyb21fM2dwcDsgCisgICAgcHNfY2F1c2VfZW51bSBjZ2V2X21vZGlmeV9jYXVzZTsgCisKK30gbDRicGRuX2w0Y19jZ2V2X2luZF9zdHJ1Y3Q7CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgR2VuZXJhbCBwdXJwb3NlIEFULUNNRDogRW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2VuZGlmIAorCisjaWYgMSAvKiBNU0c6IEw0UEJETiAtPiBMNEMgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICBNU0c6IEw0UEJETiAtPiBMNEM6IFN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dwaWFmX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ3BpYWZfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGthbF91aW50OCAgICAgCQkJCQkJCWNpZDsKKwlhdF90b2tlbl9wYXJzZV9yZXN1bHRfZW51bSAgICAgICAgICAgICAgY2FjaGVkX2ZmMDNfcHJlc2VudDsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkX2ZmMDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVnZXIgdHlwZSAKK30gbDRicGRuX2w0Y19ud19hcHBsaWVkX2NhY2hlX2RhdGFfbm90aWZ5X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZGNvbnRfcmVxX3N0cnVjdCBjbWQ7IAorICAgIGthbF91aW50OCBwc2k7CisKKyAgICAvKiBVc2VkIGZvciBTU0MgTW9kZSAzIFBEVSBzZXNzaW9uIHJlLXJlc3RhYmxpc2htZW50IGluIDVHLiAqLworICAgIGthbF9ib29sICBvbGRfcHNpX3ByZXNlbnQ7IAorICAgIGthbF91aW50OCBvbGRfcHNpOyAgICAKKworICAgIC8qIFVzZWQgZm9yIEw0IHR3byBwYXJhbXMgKFVSU1AgcmVxdWlyZW1lbnQpLiAKKyAgICAgKiBDb25kaXRpb246IAorICAgICAqIC0gSWYgY3VycmVudCBpcyA1Ry1SQVQgYW5kIFZHUERQL1ZHQVBOIGlzIHByZXNlbnQgKEFUX1RPS0VOX1BBUlNFX1JFU1VMVF9PSykgCisgICAgICAgICAtPiBVc2UgdGhlIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycyBpbiBiZWxvdyAKKyAgICAgKiAtIE90aGVyd2lzZTogKG5vbi01Ry1SQVQgb3IgaW4gNUcgYnV0IFZHUERQL1ZHQVBOIGlzIE5PVCBBVF9UT0tFTl9QQVJTRV9SRVNVTFRfT0sKKyAgICAgICAgIC0+IFVzZSBwYXJhbXRlcnMgaW4gdGhlIGFib3ZlIGNtZCAoaS5lLiwgdGhlIG5vcm1hbCBDR0RDT05UIGNvbW1hbmQpIC4gKi8KKyAgICBhdF90b2tlbl9wYXJzZV9yZXN1bHRfZW51bSAgICAgICAgICAgICAgVkdQRFBfdHlwZV9wYXJzZV9yZXN1bHQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZHUERQX3R5cGVbUERQX1RZUEVfU1RSSU5HX0xFTl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJpbmcgdHlwZQorICAgIGF0X3Rva2VuX3BhcnNlX3Jlc3VsdF9lbnVtICAgICAgICAgICAgICBWR0FQTl9wYXJzZV9yZXN1bHQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZHQVBOW0FQTl9TVFJJTkdfTEVOXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJpbmcgdHlwZQorCisgICAgLyogdXNlIHRvIGluZGljYXRlIGlzIHRoaXMgZG5uIGluIGxhZG4gbGlzdCAqLworICAgIGF0X3Rva2VuX3BhcnNlX3Jlc3VsdF9lbnVtICAgICAgICAgICAgICBsYWRuX2Rubl9wcmVzZW50OworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWRuX2RubjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZWdlciB0eXBlCisgICAgCit9IGw0YnBkbl9sNGNfY2dkY29udF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dkc2NvbnRfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NnZHNjb250X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ3RmdF9yZXFfc3RydWN0IGNtZDsgCisgICAga2FsX3VpbnQ4IHFmaTsKK30gbDRicGRuX2w0Y19jZ3RmdF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dxcmVxX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ3FyZXFfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NncW1pbl9yZXFfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfY2dxbWluX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2VxcmVxX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ2VxcmVxX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2VxbWluX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ2VxbWluX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2VxbmVnX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ2VxbmVnX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2FjdF9yZXFfc3RydWN0IGNtZDsgCisgICAgZGRtX2Fwbl90eXBlX2VudW0gYXBuX3R5cGU7Cit9IGw0YnBkbl9sNGNfY2dhY3RfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnY21vZF9yZXFfc3RydWN0IGNtZDsgCisgICAga2FsX3VpbnQ4IHFmaTsKK30gbDRicGRuX2w0Y19jZ2Ntb2RfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZGF0YV9yZXFfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfY2dkYXRhX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ3BhZGRyX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ3BhZGRyX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2F1dG9fcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NnYXV0b19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dhbnNfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NnYW5zX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2VyZXBfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NnZXJlcF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2djb250cmRwX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ2NvbnRyZHBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2Nnc2NvbnRyZHBfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2Nnc2NvbnRyZHBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NndGZ0cmRwX3JlcV9zdHJ1Y3QgY21kOyAKKyAgICBrYWxfdWludDggcWZpOworfSBsNGJwZG5fbDRjX2NndGZ0cmRwX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2Vxb3NfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NnZXFvc19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dlcW9zcmRwX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ2Vxb3NyZHBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2M1Z3Fvc19yZXFfc3RydWN0IGNtZDsgCisgICAga2FsX3VpbnQ4IHFmaTsKK30gbDRicGRuX2w0Y19jNWdxb3NfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2M1Z3Fvc3JkcF9yZXFfc3RydWN0IGNtZDsgCisgICAga2FsX3VpbnQ4IHFmaTsKK30gbDRicGRuX2w0Y19jNWdxb3NyZHBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZGVsX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ2RlbF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dhdXRoX3JlcV9zdHJ1Y3QgY21kOyAKKyAgICBrYWxfdWludDggcHNpOworfSBsNGJwZG5fbDRjX2NnYXV0aF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2xhZG5fcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NsYWRuX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lY25jZmdfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2VjbmNmZ19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfZWdkY29udF9yZXFfc3RydWN0IGNtZDsgCisgICAga2FsX3VpbnQ4IHBzaTsKK30gbDRicGRuX2w0Y19lZ2Rjb250X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF92endhcG5ldG1yX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y192endhcG5ldG1yX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF92endhcG5lX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y192endhcG5lX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ3BhdV9yZXFfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfZWdwYXVfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2VnYWN0X3JlcV9zdHJ1Y3QgY21kOyAKKyAgICBkZG1fYXBuX3R5cGVfZW51bSBhcG5fdHlwZTsKK30gbDRicGRuX2w0Y19lZ2FjdF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dzZGF0YV9yZXFfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfY2dzZGF0YV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfYWN0dGVzdF9yZXFfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfYWN0dGVzdF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfcHNiZWFyZXJfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX3BzYmVhcmVyX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ2ZiX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19lZ2ZiX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ2xkX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19lZ2xkX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ2RlbHBmX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19lZ2RlbHBmX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ2xua3BmX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19lZ2xua3BmX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ3Bjb3JkcF9yZXFfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfZWdwY29yZHBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAKKyAgICBhdF9lZ3Bjb19yZXFfc3RydWN0IGNtZDsgCisgICAga2FsX3VpbnQ4IHBzaTsKK30gbDRicGRuX2w0Y19lZ3Bjb19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfZWRhbGxvd19yZXFfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfZWRhbGxvd19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNpbV9zbG90X2lkOworfSBsNGJwZG5fbDRjX3NldF9kZWZhdWx0X3NpbV9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAga2FsX3VpbnQ4IGNpZDsgCit9IGw0YnBkbl9sNGNfcGRuX3Jldml2ZV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAga2FsX3VpbnQ4IGNpZDsgCit9IGw0YnBkbl9sNGNfcGRuX3Jldml2ZV9hYm9ydF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAga2FsX2Jvb2wgICAgICBpc19zdWNjZXNzOworICAgIGthbF91aW50OCAgICAgbHRlX2F0dGFjaF9jaWQ7IC8qIHVzZWQgaWYgKGlzX3N1Y2Nlc3MgPT0gS0FMX1RSVUUpICAqLworICAgIHBzX2NhdXNlX2VudW0gZXJyX2NhdXNlOyAgICAgIC8qIHVzZWQgaWYgKGlzX3N1Y2Nlc3MgPT0gS0FMX0ZBTFNFKSAqLworfSBsNGJwZG5fbDRjX2x0ZV9hdHRhY2hfcGRuX2RlZmluZV9uZWVkZWRfcnNwX3N0cnVjdDsgCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBrYWxfYm9vbCBpc19pbXNfcm9hbWluZ19lbmFibGU7Cit9IGw0YnBkbl9sNGNfc2V0X2VpbXNyb2FtX2NvbmZpZ192YWx1ZV9yZXFfc3RydWN0OyAKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9lYXBuc3luY19yZXFfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfZWFwbnN5bmNfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9ldnp3YXBmY2lhX3JlcV9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19ldnp3YXBmY2lhX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgYXRfZWdncm50cnNwdF9yZXFfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfZWdncm50cnNwdF9yZXFfc3RydWN0OworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgIE1TRzogTDRQQkROIC0+IEw0QzogRW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNlbmRpZgorCisjaWYgMSAvKiBNU0c6IEw0QyAtPiBMNEJQRE4gKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICBNU0c6IEw0QyAtPiBMNEJQRE46IFN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dkY29udF9pbmRfc3RydWN0IGNtZDsgCisKKyAgICBrYWxfdWludDggcHNpOworCisgICAga2FsX2Jvb2wgIG9sZF9wc2lfcHJlc2VudDsKKyAgICBrYWxfdWludDggb2xkX3BzaTsKKworICAgIGthbF9ib29sICB2Z3BkcF90eXBlX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IHZncGRwX3R5cGVbUERQX1RZUEVfU1RSSU5HX0xFTl07IC8vIHN0cmluZyB0eXBlCisgICAga2FsX2Jvb2wgIHZnYXBuX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IHZnYXBuW01BWF9BUE5fTEVOXTsgLy8gc3RyaW5nIHR5cGUKK30gbDRicGRuX2w0Y19jZ2Rjb250X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2RzY29udF9pbmRfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfY2dkc2NvbnRfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NndGZ0X2luZF9zdHJ1Y3QgY21kOyAKKyAgICBrYWxfdWludDggcWZpOworfSBsNGJwZG5fbDRjX2NndGZ0X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ3FyZXFfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NncXJlcV9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dxbWluX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ3FtaW5faW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXFyZXFfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NnZXFyZXFfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXFtaW5faW5kX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NnZXFtaW5faW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXFuZWdfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NnZXFuZWdfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnYWN0X2luZF9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ2FjdF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dwYWRkcl9pbmRfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfY2dwYWRkcl9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dhdXRvX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19jZ2F1dG9faW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXJlcF9pbmRfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfY2dlcmVwX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2NvbnRyZHBfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NnY29udHJkcF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dzY29udHJkcF9pbmRfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfY2dzY29udHJkcF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2d0ZnRyZHBfaW5kX3N0cnVjdCBjbWQ7IAorICAgIGthbF91aW50OCBxZmk7Cit9IGw0YnBkbl9sNGNfY2d0ZnRyZHBfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGF0X2NnZXFvc19pbmRfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfY2dlcW9zX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2Vxb3NyZHBfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NnZXFvc3JkcF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfYzVncW9zX2luZF9zdHJ1Y3QgY21kOyAKKyAgICBrYWxfdWludDggcWZpOworfSBsNGJwZG5fbDRjX2M1Z3Fvc19pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfYzVncW9zcmRwX2luZF9zdHJ1Y3QgY21kOyAKKyAgICBrYWxfdWludDggcWZpOworfSBsNGJwZG5fbDRjX2M1Z3Fvc3JkcF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2dkZWxfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2NnZGVsX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jZ2F1dGhfaW5kX3N0cnVjdCBjbWQ7Cit9IGw0YnBkbl9sNGNfY2dhdXRoX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9jbGFkbl9pbmRfc3RydWN0IGNtZDsKKyAgICBrYWxfYm9vbCAgICAgICAgIG51bV9vZl9sYWRuX2luZm9fcHJlc2VudDsKKyAgICBrYWxfdWludDggICAgICAgIG51bV9vZl9sYWRuX2luZm87CisgICAga2FsX2Jvb2wgICAgICAgICBsYWRuX2luZm9fcHJlc2VudDsKKyAgICBsYWRuX2luZm9fc3RydWN0IGxhZG5faW5mb1tNQVhfTEFETl9JTkZPXTsKK30gbDRicGRuX2w0Y19jbGFkbl9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfY2xhZG51X2luZF9zdHJ1Y3QgY21kOworICAgIGthbF9ib29sICAgICAgICAgbnVtX29mX2xhZG5faW5mb19wcmVzZW50OworICAgIGthbF91aW50OCAgICAgICAgbnVtX29mX2xhZG5faW5mbzsKKyAgICBrYWxfYm9vbCAgICAgICAgIGxhZG5faW5mb19wcmVzZW50OworICAgIGxhZG5faW5mb19zdHJ1Y3QgbGFkbl9pbmZvW01BWF9MQUROX0lORk9dOworfSBsNGJwZG5fbDRjX2NsYWRudV9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSIAorCisgICAgYXRfcHNiZWFyZXJfaW5kX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX3BzYmVhcmVyX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ2ZiX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19lZ2ZiX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ2RlbHBmX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19lZ2RlbHBmX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ2xua3BmX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19lZ2xua3BmX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lZ3Bjb3JkcF9pbmRfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfZWdwY29yZHBfaW5kX3N0cnVjdDsKKworIHR5cGVkZWYgc3RydWN0IHsgCisgICAgICBMT0NBTF9QQVJBX0hEUiAKKyAgCisgICAgYXRfZWdwY29faW5kX3N0cnVjdCBjbWQ7IAorIH0gbDRicGRuX2w0Y19lZ3Bjb19pbmRfc3RydWN0OworCisgdHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgZ21zc19yYXRfZW51bSAgICAgICAgICAgICAgICAgICBnbXNzX3JhdDsKKyAgICBnbXNzX3NlbGVjdGVkX3JhdF9zdGF0dXNfZW51bSAgIHN0YXR1czsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIGlzX2VocnBkOyAgICAgIC8qIEluZGljYXRlIGlmIFBTIHR5cGUgaXMgRUhSUEQgaWYgY3VycmVudCBSQVQgaXMgSFJQRCAqLworfSBsNGJwZG5fbDRjX3JhdF9zZWxlY3RfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGthbF91aW50OCBjaWQ7IAorICAgIGthbF9ib29sIGlzX3N1Y2Nlc3M7CisgICAgcHNfY2F1c2VfZW51bSBlcnJfY2F1c2U7IAorfSBsNGJwZG5fbDRjX3Bkbl9yZXZpdmVfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeyAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworICAgIGthbF91aW50OCBjaWQ7IAorICAgIGthbF9ib29sIGlzX3N1Y2Nlc3M7CisgICAgcHNfY2F1c2VfZW51bSBlcnJfY2F1c2U7ICAgICAKK30gbDRicGRuX2w0Y19wZG5fcmV2aXZlX2Fib3J0X2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUiAKKworfSBsNGJwZG5fbDRjX2x0ZV9hdHRhY2hfbmVlZGVkX2luZF9zdHJ1Y3Q7IAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAgcGxtbl9pZF9zdHJ1Y3QgY3VycmVudF9wbG1uX2lkOyAKK30gbDRicGRuX2w0Y19sdGVfYXR0YWNoX3Bkbl9kZWZpbmVfbmVlZGVkX2luZF9zdHJ1Y3Q7IAorCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgYXRfdnp3YXBuZV9pbmRfc3RydWN0IGNtZDsKK30gbDRicGRuX2w0Y192endhcG5lX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgYXRfdnp3YXBuZXRtcl9pbmRfc3RydWN0IGNtZDsKK31sNGJwZG5fbDRjX3Z6d2FwbmV0bXJfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgCisgICAga2FsX3VpbnQzMiBkdW1teTsKK30gbDRicGRuX2w0Y19jbWRfbm90X3lldF9zdXBwb3J0X2luZF9zdHJ1Y3Q7IC8qIE9ubHkgZm9yIFVUICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIAorICAgIGthbF91aW50OCBsdGVfYXR0YWNoX2NpZDsKKyAgICBrYWxfYm9vbCBjYXVzZTJfcHJlc2VudDsKKyAgICBwc19jYXVzZV9lbnVtIGNhdXNlMjsKKyAgICBwZHBfYWRkcl90eXBlX2VudW0gbndfYXBwbGllZF9wZHBfdHlwZTsKK30gbDRicGRuX2w0Y19sdGVfYXR0YWNoX3Bkbl9hY3RpdmF0ZV9zdWNjZXNzX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIAorICAgIGthbF91aW50OCBsdGVfYXR0YWNoX2NpZDsKKyAgICBwc19jYXVzZV9lbnVtIGNhdXNlOworICAgIGthbF9ib29sIGlzX2NoYW5nZV90b19hcG5fY2xhc3NfcHJlc2VudDsKKyAgICBrYWxfdWludDggY2hhbmdlX3RvX2Fwbl9jbGFzczsKK30gbDRicGRuX2w0Y19sdGVfYXR0YWNoX3Bkbl9hY3RpdmF0ZV9mYWlsdXJlX2luZF9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9lYXBuc3luY19pbmRfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfZWFwbnN5bmNfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBhdF9ldnp3YXBmY2lhX2luZF9zdHJ1Y3QgY21kOyAKK30gbDRicGRuX2w0Y19ldnp3YXBmY2lhX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgYXRfZWdncm50cnNwdF9pbmRfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfZWdncm50cnNwdF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGF0X2VzY29udGluZF9pbmRfc3RydWN0IGNtZDsgCit9IGw0YnBkbl9sNGNfZXNjb250aW5kX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgCisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBhdF9lc2NvbnRpbmRfcmVxX3N0cnVjdCBjbWQ7IAorfSBsNGJwZG5fbDRjX2VzY29udGluZF9yZXFfc3RydWN0OworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgIE1TRzogTDRDIC0+IEw0QlBETjogRW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZW5kaWYKKworI2VuZGlmIC8qIF9MNEJQRE5fTDRDX1NUUlVDVF9IICovCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGJwZG5fdGNtX3N0cnVjdC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRicGRuX3RjbV9zdHJ1Y3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mzg5YmEzCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRicGRuX3RjbV9zdHJ1Y3QuaApAQCAtMCwwICsxLDQxMCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGw0YnBkbl90Y21fc3RydWN0LmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogIAorICogICAKKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKiAwOSAyMiAyMDIxIHN0dW4ud3UKKyAqIFtNT0xZMDA3Mjg5NjhdIFtaTTYyXSBBVCtFR1BDTyB0byBnZXQgTVNJU0ROCisgKgorICogMDkgMTcgMjAyMSBqdWR5LnpodQorICogW01PTFkwMDcwNDI1Nl0gW1Z6V10gNUcgVWx0cmEgV2lkZWJhbmQgaWNvbiBkaXNwbGF5CisgKiAJCisgKiAJUGF0Y2ggYmFjayBmcm9tIE5SMTUuUjMuTVAgYnJhbmNoCisgKiAJLgorICoKKyAqIDA5IDA4IDIwMjEganVkeS56aHUKKyAqIFtNT0xZMDA3MDQyNTZdIFtWelddIDVHIFVsdHJhIFdpZGViYW5kIGljb24gZGlzcGxheQorICogCQorICogCVtWelddNUcgVWx0cmEgV2lkZWJhbmQgaWNvbiBkaXNwbGF5IGZlYXR1cmUgcGF0Y2ggYmFjaworICogCQorICogCS4KKyAqCisgKiAwNCAxOSAyMDE5IHl1LWhzaW4ubGluCisgKiBbTU9MWTAwMzk5OTkzXSBbR2VuOTddW1ZNT0xZXSBpbnRlcndvcmtpbmcgd2l0aE4yNiBmZWF0dXJlcworICogW01QRF1bQ29kZV0gbWVyZ2UgZnJvbSA3NzgxMjk4LCBsNCBwcyB3aXRoIG4yNgorICoKKyAqIDAzIDI2IDIwMTkgeXUtaHNpbi5saW4KKyAqIFtNT0xZMDAzOTM0NTZdIFtHZW45N11bVk1PTFldIDQ1RyBJbnRlclJBVCAmIGludGVyU3lzdGVtIGZlYXR1cmUKKyAqIFtWTU9MWV1bTVBEXVtJbnRlcmZhY2VdIEw0X1BTIEdlbjk3IGlyYXQgd2l0aG91IG4yNgorICoKKyAqIDEyIDE0IDIwMTggcG95aW5nLmNodWFuZworICogW01PTFkwMDM3MjYzNV0gW1ZNT0xZXSBMNC9UQ00vVEZUTElCL1ZHU00gcGhhc2UyIGNoZWNrLWluCisgKiAJCisgKiAJLSBbTDRdIFBoYXNlIDIgLSBJbnRlcmZhY2VzIC4KKyAqCisgKiAwOCAxNyAyMDE4IHBveWluZy5jaHVhbmcKKyAqIFtNT0xZMDAzNDY3NjNdIFs2Mjk3XSBHZW45NyBMNCBQUyBDaGVjay1JbgorICogCQorICogCS0gaW50ZXJmYWNlcyAuCisgKgorICogMDUgMjEgMjAxOCBwcmF2ZWVuLmtvbWF0aWd1bnRsYQorICogW01PTFkwMDMyNzA4NF0gW0VJR0VSXVtNVDM5NjddUFMgRGF0YSBPZmYgZmVhdHVyZTogUERQIE1vZGlmeSBwcm9jZWR1cmUgdG8gdXBkYXRlIHRoZSBQUyBEYXRhIE9mZiBTdGF0dXN0byBOVyBzaWRlLgorICogUFMgRGF0YSBvZmYgZmVhdHVyZSAtIEw0L1RDTSBjaGFuZ2VzLgorICoKKyAqIDEyIDExIDIwMTcgcG95aW5nLmNodWFuZworICogW01PTFkwMDI5NDg4Nl0gW01UNjc2M11bQmlhbmNvXVtPMV1bTVAyXVtUTU9dW3NpbXVsYXRvcl1baW4taG91c2VdW0Fucml0c3VdW1Byb3RvY29sX0lNUyAmIFZvTFRFXVs1MDkwNV1bTF9JTVNfVm9MVEVfNjc1Ml8xXQorICogLgorICoKKyAqIDA0IDA1IDIwMTcgcG95aW5nLmNodWFuZworICogW01PTFkwMDIwOTczN10gW01UNjI5M10gTFdURyBhbmQgQzJLIEw0IGludGVncmF0aW9uIGNoZWNrIGluCisgKiBbTTNdIE1lcmdlIENMIHVwIHRvIDM2Nzc5MzQgLSBpbnRlcmZhY2UgLgorICoKKyAqIDAyIDIwIDIwMTcgcG95aW5nLmNodWFuZworICogW01PTFkwMDIwOTczN10gW01UNjI5M10gTFdURyBhbmQgQzJLIEw0IGludGVncmF0aW9uIGNoZWNrIGluCisgKiAJCisgKiAJLSBbTTJdIGw0YnBkbi90Y20gLSBpbnRlcmZhY2UgKHVwIHRvIENMIDM0NzQ1MzMpIC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmICBfTDRCUEROX1RDTV9TVFJVQ1RfSAorI2RlZmluZSAgX0w0QlBETl9UQ01fU1RSVUNUX0gKKworI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiCisKKyNpbmNsdWRlICJ0ZnRsaWJfY29tbW9uX2VudW0uaCIKKyNpbmNsdWRlICJ0ZnRsaWJfY29tbW9uX3N0cnVjdC5oIgorCisjaW5jbHVkZSAicHNfcHVibGljX2VudW1fcHVibGljLmgiCisjaW5jbHVkZSAibDNfaW5jX2VudW1zX3B1YmxpYy5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19zdHJ1Y3QuaCIKKworCisjaWYgX19HUk9VUF9MNEJQRE5fVENNX0lOVEVSRkFDRV9ERUZJTkVfQU5EX1NVQl9TVFJVQ1RfXyB8fCAxCisKKyNkZWZpbmUgTDRCUEROX1RDTV9QQ1NDRl80X1RPXzhfU0laRSA1CisjZGVmaW5lIEw0QlBETl9UQ01fQkVBUkVSX05VTSAxNQorCisjZGVmaW5lIEw0QlBETl9UQ01fUERVX0FERFJfTElGRVRJTUVfU0laRSAyCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBwZHBfYWRkcl90eXBlX2VudW0gdHlwZTsKKyAgICBwZHBfYWRkcl9sZW5fZW51bSAgbGVuOworICAgIGthbF91aW50OCAgICAgICAgICB2YWxbSVBWNFY2X0FERFJfTEVOXTsKK30gbDRicGRuX3RjbV9pcF9hZGRyX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCBtY2MxOworICAgIGthbF91aW50OCBtY2MyOworICAgIGthbF91aW50OCBtY2MzOyAKKyAgICBrYWxfdWludDggbW5jMTsKKyAgICBrYWxfdWludDggbW5jMjsgCisgICAga2FsX3VpbnQ4IG1uYzM7IAorfSBsNGJwZG5fdGNtX3BsbW5faWRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWQ7ICAgLyogQ0lEICovCisKKyAgICAvKioKKyAgICAgKiBJbiA1RywgaW5kaWNhdGUgUERVIHNlc3Npb24gaWQgCisgICAgICogT3RoZXJ3aXNlLCBzaW1wbHkgZmlsbC1pbiAwIChvciB0aGUgbWFwcGVkIFBEVSBzZXNzaW9uIGlkPykgKi8KKyAgICBrYWxfdWludDggICBwZHVfc2Vzc2lvbl9pZDsKKyAgIAorICAgIC8qKiAKKyAgICAgKiBJbiA1RywgaW5kaWNhdGUgUW9TIGZsb3cgaWQgKHFmaSkgCisgICAgICogT3RoZXJ3aXNlLCBpbmRpY2F0ZSBuc2FwaSgyM0cpIG9yIGViaSg0RykgKi8KKyAgICBrYWxfdWludDggICBiZWFyZXJfaWQ7CisKKyAgICBwc19jYXVzZV9lbnVtIGNhdXNlOworfSBsNGJwZG5fdGNtX2RlYWN0X2lkX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCAgIGFwbl9sZW5ndGg7CisgICAga2FsX3VpbnQ4ICAgYXBuW01BWF9BUE5fTEVOXTsKKyAgICBrYWxfYm9vbCAgICBzcmNfYWRkcl9zYl9uZXRfbWFza19wcmVzZW50OworICAgIGthbF91aW50OCAgIHNyY19hZGRyX3NiX25ldF9tYXNrW0lQVjRfQUREUl9MRU4gKiAyXTsKKyAgICBrYWxfYm9vbCAgICBpcHY2X3NyY19hZGRyX3NiX25ldF9tYXNrX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4ICAgaXB2Nl9zcmNfYWRkcl9zYl9uZXRfbWFza1tJUFY2X0FERFJfTEVOICogMl07CisgICAga2FsX2Jvb2wgICAgZ3dfYWRkcl9wcmVzZW50OworICAgIGthbF91aW50OCAgIGd3X2FkZHJbSVBWNF9BRERSX0xFTl07CisgICAga2FsX2Jvb2wgICAgaXB2Nl9nd19hZGRyX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4ICAgaXB2Nl9nd19hZGRyW0lQVjZfQUREUl9MRU5dOworICAgIGthbF9ib29sICAgIGRuc19wcmVzZW50OworICAgIGthbF91aW50OCAgIGRuc1tJUFY0X0FERFJfTEVOXTsKKyAgICBrYWxfYm9vbCAgICBkbnMyX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4ICAgZG5zMltJUFY0X0FERFJfTEVOXTsKKyAgICBrYWxfYm9vbCAgICBkbnMzX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4ICAgZG5zM1tJUFY0X0FERFJfTEVOXTsgICAgCisgICAga2FsX2Jvb2wgICAgaXB2Nl9kbnNfcHJlc2VudDsKKyAgICBrYWxfdWludDggICBpcHY2X2Ruc1tJUFY2X0FERFJfTEVOXTsKKyAgICBrYWxfYm9vbCAgICBpcHY2X2RuczJfcHJlc2VudDsKKyAgICBrYWxfdWludDggICBpcHY2X2RuczJbSVBWNl9BRERSX0xFTl07CisgICAga2FsX2Jvb2wgICAgaXB2Nl9kbnMzX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4ICAgaXB2Nl9kbnMzW0lQVjZfQUREUl9MRU5dOyAgICAKKyAgICBrYWxfYm9vbCAgICBwX2NzY2ZfcHJpbV9hZGRyX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4ICAgcF9jc2NmX3ByaW1fYWRkcltJUFY0X0FERFJfTEVOXTsKKyAgICBrYWxfYm9vbCAgICBwX2NzY2Zfc2VjX2FkZHJfcHJlc2VudDsKKyAgICBrYWxfdWludDggICBwX2NzY2Zfc2VjX2FkZHJbSVBWNF9BRERSX0xFTl07CisgICAga2FsX2Jvb2wgICAgcF9jc2NmX3RoaXJkX2FkZHJfcHJlc2VudDsKKyAgICBrYWxfdWludDggICBwX2NzY2ZfdGhpcmRfYWRkcltJUFY0X0FERFJfTEVOXTsKKyAgICBrYWxfYm9vbCAgICBpcHY2X3BfY3NjZl9wcmltX2FkZHJfcHJlc2VudDsKKyAgICBrYWxfdWludDggICBpcHY2X3BfY3NjZl9wcmltX2FkZHJbSVBWNl9BRERSX0xFTl07CisgICAga2FsX2Jvb2wgICAgaXB2Nl9wX2NzY2Zfc2VjX2FkZHJfcHJlc2VudDsKKyAgICBrYWxfdWludDggICBpcHY2X3BfY3NjZl9zZWNfYWRkcltJUFY2X0FERFJfTEVOXTsKKyAgICBrYWxfYm9vbCAgICBpcHY2X3BfY3NjZl90aGlyZF9hZGRyX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4ICAgaXB2Nl9wX2NzY2ZfdGhpcmRfYWRkcltJUFY2X0FERFJfTEVOXTsKKyAgICBrYWxfYm9vbCAgICBpbV9jbl9zaWduYWxsaW5nX2ZsYWdfcHJlc2VudDsKKyAgICBrYWxfdWludDggICBpbV9jbl9zaWduYWxsaW5nX2ZsYWc7CisgICAga2FsX2Jvb2wgICAgbGlwYV9pbmRpY2F0aW9uX3ByZXNlbnQ7IC8vIGluZGljYXRlcyB0aGF0IHRoZSBQRFAgY29udGV4dCBwcm92aWRlcyBjb25uZWN0aXZpdHkgdXNpbmcgYSBMSVBBIFBETiBjb25uZWN0aW9uCisgICAga2FsX3VpbnQ4ICAgbGlwYV9pbmRpY2F0aW9uOworICAgIGthbF9ib29sICAgIHY0X210dV9wcmVzZW50OyAgICAgICAgICAvLyBzaG93cyB0aGUgSVB2NCBNVFUgc2l6ZSBpbiBvY3RldHMgCisgICAga2FsX3VpbnQxNiAgdjRfbXR1OworICAgIGthbF9ib29sICAgIHdsYW5fb2ZmbG9hZF9wcmVzZW50OyAgICAvLyBpbmRpY2F0ZXMgd2hldGhlciB0cmFmZmljIGNhbiBiZSBvZmZsb2FkZWQgdXNpbmcgdGhlIHNwZWNpZmllZCBQRE4gY29ubmVjdGlvbiB2aWEgYSBXTEFOIG9yIG5vdCAKKyAgICBrYWxfdWludDggICB3bGFuX29mZmxvYWQ7CisgICAga2FsX2Jvb2wgICAgbG9jYWxfYWRkcl9pbmRfcHJlc2VudDsgIC8vIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgTVMgYW5kIHRoZSBuZXR3b3JrIHN1cHBvcnQgbG9jYWwgSVAgYWRkcmVzcyBpbiBURlRzIAorICAgIGthbF91aW50OCAgIGxvY2FsX2FkZHJfaW5kOworICAgIGthbF9ib29sICAgIHBfY3NjZl9mb3VydGhfdG9fZWlnaHRoX2FkZHJfcHJlc2VudFtMNEJQRE5fVENNX1BDU0NGXzRfVE9fOF9TSVpFXTsgICAgICAgICAvL2FkZCBmb3IgQ1Qgc3VwcG9ydCA4IHAtY3NjZiBhZGRyZXNzIHJlcXVpcmVtZW50CisgICAga2FsX3VpbnQ4ICAgcF9jc2NmX2ZvdXJ0aF90b19laWdodGhfYWRkcltMNEJQRE5fVENNX1BDU0NGXzRfVE9fOF9TSVpFXVtJUFY0X0FERFJfTEVOXTsgIC8vYWRkIGZvciBDVCBzdXBwb3J0IDggcC1jc2NmIGFkZHJlc3MgcmVxdWlyZW1lbnQKKyAgICBrYWxfYm9vbCAgICBpcHY2X3BfY3NjZl9mb3VydGhfdG9fZWlnaHRoX2FkZHJfcHJlc2VudFtMNEJQRE5fVENNX1BDU0NGXzRfVE9fOF9TSVpFXTsgICAgICAgIC8vYWRkIGZvciBDVCBzdXBwb3J0IDggcC1jc2NmIGFkZHJlc3MgcmVxdWlyZW1lbnQKKyAgICBrYWxfdWludDggICBpcHY2X3BfY3NjZl9mb3VydGhfdG9fZWlnaHRoX2FkZHJbTDRCUEROX1RDTV9QQ1NDRl80X1RPXzhfU0laRV1bSVBWNl9BRERSX0xFTl07IC8vYWRkIGZvciBDVCBzdXBwb3J0IDggcC1jc2NmIGFkZHJlc3MgcmVxdWlyZW1lbnQKKyAgICBrYWxfYm9vbCAgICBwc19kYXRhX29mZl9zdXBwb3J0X3ByZXNlbnQ7IAorICAgIGthbF91aW50OCAgIHBzX2RhdGFfb2ZmX3N1cHBvcnQ7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgIHNzY19tb2RlX3ByZXNlbnQ7CisgICAgbDRjX3RjbV9zc2NfbW9kZV9lbnVtICAgICAgIHNzY19tb2RlOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICBzX25zc2FpX3ByZXNlbnQ7CisgICAgbDRjX3RjbV9zX25zc2FpX3N0cnVjdCAgICAgIHNfbnNzYWk7IAorICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICBhY2Nlc3NfdHlwZV9wcmVzZW50OworICAgIGw0Y190Y21fYWNjZXNzX3R5cGVfZW51bSAgICBhY2Nlc3NfdHlwZTsgCisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgIHJxX3RpbWVyX3ZhbHVlX2luX3NlYzsKKyAgICBsNGNfdGNtX2Fsd2F5c19vbl9wZHVfZW51bSAgYWx3YXlzX29uX3BkdV9ieV9udzsKK30gbDRicGRuX3RjbV9wZHBfcmRwX2luZm9fc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgLyogdjQgZG5zIC0+IENvbnRhaW5lZCBpbiBsNGJwZG5fdGNtX3ByaW1fcGRwX3JkcF9pbmZvX3N0cnVjdCAqLyAKKyAgICAvKiB2NiBkbnMgLT4gQ29udGFpbmVkIGluIGw0YnBkbl90Y21fcHJpbV9wZHBfcmRwX2luZm9fc3RydWN0ICovIAorICAgIC8qIHY0IG10dSAtPiBDb250YWluZWQgaW4gbDRicGRuX3RjbV9wcmltX3BkcF9yZHBfaW5mb19zdHJ1Y3QgKi8gCisKKyAgICBrYWxfYm9vbCAgbXNpc2RuX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IG1zaXNkbltNQVhfTVNJU0ROX0xFTl07CisgICAga2FsX3VpbnQ4IG1zaXNkbl9sZW47CisKKyAgICAvKiBwZHUgYWRkcmVzcyBsaWZldGltZSAqLworICAgIGthbF9ib29sICBwZHVfYWRkcl9saWZldGltZV9wcmVzZW50OworICAgIGthbF91aW50OCBwZHVfYWRkcl9saWZldGltZVtMNEJQRE5fVENNX1BEVV9BRERSX0xJRkVUSU1FX1NJWkVdOyAKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIAorICAgICAqIE9wZXJhdG9yIFNwZWNpZmljIFBDT3MgaW4gVlpXOiBTdGFydCAqCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyogMHhGRjAwICovIAorICAgIGthbF9ib29sIHBkbl9hcHBsaWNhdGlvbl9hY2Nlc3NfY29udHJvbF9wcmVzZW50OyAKKyAgICBsNGJwZG5fdGNtX3BsbW5faWRfc3RydWN0IHBkbl9hcHBsaWNhdGlvbl9hY2Nlc3NfY29udHJvbF9wbG1uaWQ7CisgICAga2FsX3VpbnQ4IHBkbl9hcHBsaWNhdGlvbl9hY2Nlc3NfY29udHJvbF9hY3Rpb247CisKKyAgICAvKiAweEZGMDEgKi8gCisgICAga2FsX2Jvb2wgZXBkZ192Nl9wbG1uaWRfcHJlc2VudDsKKyAgICBsNGJwZG5fdGNtX3BsbW5faWRfc3RydWN0IGVwZGdfdjZfcGxtbmlkOyAKKyAgICBrYWxfYm9vbCAgZXBkZ192Nl9hZGRyX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IGVwZGdfdjZfYWRkcltJUFY2X0FERFJfTEVOXTsKKyAgICBrYWxfYm9vbCAgZXBkZ192Nl9hZGRyMl9wcmVzZW50OworICAgIGthbF91aW50OCBlcGRnX3Y2X2FkZHIyW0lQVjZfQUREUl9MRU5dOworCisgICAgLyogMHhGRjAyICovCisgICAga2FsX2Jvb2wgIGVwZGdfdjRfcGxtbmlkX3ByZXNlbnQ7IAorICAgIGw0YnBkbl90Y21fcGxtbl9pZF9zdHJ1Y3QgZXBkZ192NF9wbG1uaWQ7IAorICAgIGthbF9ib29sICBlcGRnX3Y0X2FkZHJfcHJlc2VudDsKKyAgICBrYWxfdWludDggZXBkZ192NF9hZGRyW0lQVjRfQUREUl9MRU5dOworICAgIGthbF9ib29sICBlcGRnX3Y0X2FkZHIyX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IGVwZGdfdjRfYWRkcjJbSVBWNF9BRERSX0xFTl07CisKKyAgICAvKiAweEZGMDMgKi8KKyAgICBrYWxfYm9vbCAgdnp3XzVndXdfcHJlc2VudDsgCisgICAga2FsX3VpbnQ4IHZ6d181Z3V3OyAKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAKKyAgICAgKiBPcGVyYXRvciBTcGVjaWZpYyBQQ09zIGluIFZaVzogRW5kICAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworfSBsNGJwZG5fdGNtX3Bjb19yZHBfaW5mb19zdHJ1Y3Q7CisKKyNlbmRpZiAvLyBfX0dST1VQX0w0QlBETl9UQ01fSU5URVJGQUNFX0RFRklORV9BTkRfU1VCX1NUUlVDVF9fCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWQ7CisKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0ZSBob3cgdG8gaW50ZXJwcmV0IHRoZSBiZWxvdyBpZHM6IHBkdV9zZXNzaW9uX2lkLCBiZWFyZXJfaWQsIGxpbmtlZF9iZWFyZXJfaWQgKi8KKyAgICBrYWxfYm9vbCBpc181Z19pZDsgCisKKyAgICAvKiogCisgICAgICogSW4gNUcsIGluZGljYXRlIFBEVSBzZXNzaW9uIGlkIAorICAgICAqIE90aGVyd2lzZSwgc2ltcGx5IGZpbGwtaW4gMCAob3IgdGhlIG1hcHBlZCBQRFUgc2Vzc2lvbiBpZD8pICovCisgICAga2FsX3VpbnQ4IHBkdV9zZXNzaW9uX2lkOworICAgCisgICAgLyoqCisgICAgICogSW4gNUcsIGluZGljYXRlIFFvUyBmbG93IGlkIChxZmkpIAorICAgICAqIE90aGVyd2lzZSwgaW5kaWNhdGUgbnNhcGkoMjNHKSBvciBlYmkoNEcpICovCisgICAga2FsX3VpbnQ4IGJlYXJlcl9pZDsKKworICAgIC8qKiAKKyAgICAgKiBJZiB0aGUgUERQIGlzIHNlY29uZGFyeSwgaW5kaWNhdGUgVVBDTSB3aGljaCBwcmltYXJ5IFBEUCBjb250ZXh0IHRoZSBiZWFyZXIgaXMgbGlua2VkIHdpdGguIAorICAgICAqIElmIHRoZSBQRFAgaXMgcHJpbWFyeSwgaW5kaWNhdGUgdGhlIGxpbmtlZF9uc3BhaSA9IG5zYXBpLgorICAgICAqIElmIGluIDVHLCBpbmRpY2F0ZSB0aGUgcWZpIHdoaWNoIGNvbnRhaW5zIGRlZmF1bHQgcW9zIHJ1bGUgKi8KKyAgICBrYWxfdWludDggbGlua2VkX2JlYXJlcl9pZDsKKworICAgIC8qKgorICAgICAqIFRGVExJQiBvdXRwdXQ6IHBrdF9maWx0ZXJfYWN0X2xpc3Rfc3RydWN0ICAKKyAgICAgKiAtIE5lZWRzIHRvIGNvbnZlcnQgdG8gcGt0X2ZpbHRlcnNfYWN0X2xpc3Rfbm9kZV9zdHJ1Y3QgZm9yIFVQQ00gdXNlIAorICAgICAqIC0gSW4gNUcsIHRoZSBjb252ZXJzaW9uIGlzIGRvbmUgYnkgVkdTTSAKKyAgICAgKiAtIEluIDIzNEcsIHRoZSBjb252ZXJzaW9ucyBhcmUgZG9uZSBieSBVR1RDTSBhbmQgRVRDTSwgcmVzcGVjdGl2ZWx5ICovCisgICAgcGt0X2ZpbHRlcnNfYWN0X2xpc3Rfbm9kZV9zdHJ1Y3QgKnBmX2FjdGlvbl9saXN0X25vZGU7CisKKyAgICAvKiBBZGRyZXNzIGFjcXVpcmVkIGJ5IFBEUCBjb250ZXh0IGFjdGl2YXRpb24uICovCisgICAgbDRicGRuX3RjbV9pcF9hZGRyX3N0cnVjdCBpcF9hZGRyOworCisgICAga2FsX2Jvb2wgcGRwX3JkcF9wcmVzZW50OworICAgIGw0YnBkbl90Y21fcGRwX3JkcF9pbmZvX3N0cnVjdCBwZHBfcmRwOworfSBsNGJwZG5fdGNtX2JlYXJlcl9hY3RfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICBiZWFyZXJfbnVtOyAgICAgICAgICAvKiBpbmRpY2F0ZSBudW1iZXIgb2YgbnNhcGkvRUJJIGVudHJpZXMgY2FycmllZCBpbiBkZWFjdF9uc2FwaV9saXN0LiovCisgICAgbDRicGRuX3RjbV9kZWFjdF9pZF9zdHJ1Y3QgZGVhY3RfaWRfbGlzdFtMNEJQRE5fVENNX0JFQVJFUl9OVU1dOyAgIC8qIENJRC9OU0FQSS9FQkkgbGlzdCBvZiB0aGUgZGVhY3RpdmF0ZWQgUERQIGNvbnRleHRzKi8KK30gbDRicGRuX3RjbV9iZWFyZXJfZGVhY3RfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCBjb250ZXh0X2lkOworCisgICAgLyoqCisgICAgICogSW5kaWNhdGUgaG93IHRvIGludGVycHJldCB0aGUgYmVsb3cgaWRzOiBwZHVfc2Vzc2lvbl9pZCwgYmVhcmVyX2lkLCBsaW5rZWRfYmVhcmVyX2lkICovCisgICAga2FsX2Jvb2wgaXNfNWdfaWQ7IAorCisgICAgLyoqIAorICAgICAqIEluIDVHLCBpbmRpY2F0ZSBQRFUgc2Vzc2lvbiBpZCAKKyAgICAgKiBPdGhlcndpc2UsIHNpbXBseSBmaWxsLWluIDAgKG9yIHRoZSBtYXBwZWQgUERVIHNlc3Npb24gaWQ/KSAqLworICAgIGthbF91aW50OCBwZHVfc2Vzc2lvbl9pZDsKKyAgIAorICAgIC8qKgorICAgICAqIEluIDVHLCBpbmRpY2F0ZSBRb1MgZmxvdyBpZCAocWZpKSAKKyAgICAgKiBPdGhlcndpc2UsIGluZGljYXRlIG5zYXBpKDIzRykgb3IgZWJpKDRHKSAqLworICAgIGthbF91aW50OCBiZWFyZXJfaWQ7CisKKyAgICAvKiogCisgICAgICogSWYgdGhlIFBEUCBpcyBzZWNvbmRhcnksIGluZGljYXRlIFVQQ00gd2hpY2ggcHJpbWFyeSBQRFAgY29udGV4dCB0aGUgYmVhcmVyIGlzIGxpbmtlZCB3aXRoLiAKKyAgICAgKiBJZiB0aGUgUERQIGlzIHByaW1hcnksIGluZGljYXRlIHRoZSBsaW5rZWRfbnNwYWkgPSBuc2FwaS4KKyAgICAgKiBJZiBpbiA1RywgaW5kaWNhdGUgdGhlIHFmaSB3aGljaCBjb250YWlucyBkZWZhdWx0IHFvcyBydWxlICovCisgICAga2FsX3VpbnQ4IGxpbmtlZF9iZWFyZXJfaWQ7CisKKyAgICAvKioKKyAgICAgKiBURlRMSUIgb3V0cHV0OiBwa3RfZmlsdGVyX2FjdF9saXN0X3N0cnVjdCAgCisgICAgICogLSBOZWVkcyB0byBjb252ZXJ0IHRvIHBrdF9maWx0ZXJzX2FjdF9saXN0X25vZGVfc3RydWN0IGZvciBVUENNIHVzZSAKKyAgICAgKiAtIEluIDVHLCB0aGUgY29udmVyc2lvbiBpcyBkb25lIGJ5IFZHU00gCisgICAgICogLSBJbiAyMzRHLCB0aGUgY29udmVyc2lvbnMgYXJlIGRvbmUgYnkgVUdUQ00gYW5kIEVUQ00sIHJlc3BlY3RpdmVseSAqLworICAgIHBrdF9maWx0ZXJzX2FjdF9saXN0X25vZGVfc3RydWN0ICpwZl9hY3Rpb25fbGlzdF9ub2RlOworCisgICAgLyogQWRkcmVzcyBhY3F1aXJlZCBieSBQRFAgY29udGV4dCBhY3RpdmF0aW9uLiAqLworICAgIGw0YnBkbl90Y21faXBfYWRkcl9zdHJ1Y3QgaXBfYWRkcjsKKworICAgIGthbF9ib29sIHBkcF9yZHBfcHJlc2VudDsKKyAgICBsNGJwZG5fdGNtX3BkcF9yZHBfaW5mb19zdHJ1Y3QgcGRwX3JkcDsKK30gbDRicGRuX3RjbV9hY3RfaWRfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgLyogSW5kaWNhdGUgVVBDTSB0aGUgcGFja2V0IGZpbHRlciBtb2RpZmljYXRpb24gaXMgdHJpZ2dlcmVkIGJ5IHdoaWNoIFBEUCBjb250ZXh0L0VQUyBiZWFyZXIgY29udGV4dCAqLworICAgIGthbF91aW50OCBjb250ZXh0X2lkOworCisgICAgLyoqCisgICAgICogSW5kaWNhdGUgaG93IHRvIGludGVycHJldCB0aGUgYmVsb3cgaWRzOiBwZHVfc2Vzc2lvbl9pZCwgYmVhcmVyX2lkLCBsaW5rZWRfYmVhcmVyX2lkICovCisgICAga2FsX2Jvb2wgaXNfNWdfaWQ7IAorCisgICAgLyoqCisgICAgICogSW4gNUcsIGluZGljYXRlIFBEVSBzZXNzaW9uIGlkIAorICAgICAqIE90aGVyd2lzZSwgc2ltcGx5IGZpbGwtaW4gMCAob3IgdGhlIG1hcHBlZCBQRFUgc2Vzc2lvbiBpZD8pICovCisgICAga2FsX3VpbnQ4IHBkdV9zZXNzaW9uX2lkOworCisgICAgLyoqCisgICAgICogSW4gNUcsIGluZGljYXRlIFFvUyBmbG93IGlkIChxZmkpIAorICAgICAqIE90aGVyd2lzZSwgaW5kaWNhdGUgbnNhcGkoMjNHKSBvciBlYmkoNEcpICovICAgIAorICAgIGthbF91aW50OCBiZWFyZXJfaWQ7CisKKyAgICAvKioKKyAgICAgKiBURlRMSUIgb3V0cHV0OiBwa3RfZmlsdGVyX2FjdF9saXN0X3N0cnVjdCAgCisgICAgICogLSBOZWVkcyB0byBjb252ZXJ0IHRvIHBrdF9maWx0ZXJzX2FjdF9saXN0X25vZGVfc3RydWN0IGZvciBVUENNIHVzZSAKKyAgICAgKiAtIEluIDVHLCB0aGUgY29udmVyc2lvbiBpcyBkb25lIGJ5IFZHU00gCisgICAgICogLSBJbiAyMzRHLCB0aGUgY29udmVyc2lvbnMgYXJlIGRvbmUgYnkgVUdUQ00gYW5kIEVUQ00sIHJlc3BlY3RpdmVseSAqLworICAgIHBrdF9maWx0ZXJzX2FjdF9saXN0X25vZGVfc3RydWN0ICpwZl9hY3Rpb25fbGlzdF9ub2RlOworfSBsNGJwZG5fdGNtX3BmX3VwZGF0ZV9pbmRfc3RydWN0OworCisvKiBVc2UgdGhpcyBJTE0gdG8gdXBkYXRlIFBDTyBSRFAgaW5mbyAKKyAqIHdoZW4gaXQgaXMgY2hhbmdlZCBieSBhY3RpdmF0ZS9tb2RpZnkvZGVhY3RpdmF0ZSBwcm9jZWR1cmVzICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIgCisKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsKKworICAgIGw0YnBkbl90Y21fcGNvX3JkcF9pbmZvX3N0cnVjdCBwY29fcmRwOworCisgICAga2FsX2Jvb2wgcGRwX3JkcF9wcmVzZW50OworICAgIGw0YnBkbl90Y21fcGRwX3JkcF9pbmZvX3N0cnVjdCBwZHBfcmRwOworCit9IGw0YnBkbl90Y21fcGNvX3JkcF91cGRhdGVfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSIAorICAgIAorICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgIGRlYWN0X2JlYXJlcl9udW07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZGljYXRlIG51bWJlciBvZiBuc2FwaS9FQkkgZW50cmllcyBjYXJyaWVkIGluIGRlYWN0X2JlYXJlcl9saXN0LiovCisgICAgbDRicGRuX3RjbV9kZWFjdF9pZF9zdHJ1Y3QgICAgICAgZGVhY3RfYmVhcmVyX2xpc3RbTDRCUEROX1RDTV9CRUFSRVJfTlVNXTsgLyogQ0lEL05TQVBJL0VCSSBsaXN0IG9mIHRoZSBkZWFjdGl2YXRlZCBQRFAgY29udGV4dHMqLworCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgaXNfNGc1X2lyYXQ7CisgICAgCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgYWN0X2JlYXJlcl9udW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5kaWNhdGUgbnVtYmVyIG9mIG5zYXBpL0VCSSBlbnRyaWVzIGNhcnJpZWQgaW4gYWN0X2JlYXJlcl9saXN0LiovCisgICAgbDRicGRuX3RjbV9hY3RfaWRfc3RydWN0ICAgICAgICAgYWN0X2JlYXJlcl9saXN0W0w0QlBETl9UQ01fQkVBUkVSX05VTV07ICAgLyogQ0lEL05TQVBJL0VCSSBsaXN0IG9mIHRoZSBhY3RpdmF0ZWQgUERQIGNvbnRleHRzKi8KKworfSBsNGJwZG5fdGNtXzQ1Z19pcmF0X2JlYXJlcl91cGRhdGVfaW5kX3N0cnVjdDsKKworI2VuZGlmIC8qIF9MNEJQRE5fVENNX1NUUlVDVF9IICovCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGJwd3JfbDRjX3N0cnVjdC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRicHdyX2w0Y19zdHJ1Y3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDE4ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRicHdyX2w0Y19zdHJ1Y3QuaApAQCAtMCwwICsxLDE2MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGw0Ym53X2w0Y19zdHJ1Y3QuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICAKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqCisgKiBBdXRob3I6QWxsZW4gSHN1CisgKiAtLS0tLS0tCisgKiAgCisgKiAgIAorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDA3IDE5IDIwMjEgam9obm55LmRpbmcKKyAqIFtNT0xZMDA2NDg1NTddIFtNVDY4ODVdW1BldHJ1c11bUTBdW1JvZ2Vyc11bV1cgRlRdW0NhbmFkYV1bVG9yb250b11bNUdNTV1bU0FdW1RDSUQ6IFNBX1NlbGYtQ2VyX0ZUXzA2XzAwOF06LURVVCBkb2VzIG5vdCBhYmxlIHRvIGRvIFNBIDVHIHJlZ2lzdHJhdGlvbiBWb05SIG9uIGEgU0lNMiBmb3IgU0EgQXJlYS4KKyAqIAkKKyAqIAlwb3J0aW5nIGNvZGUuCisgKgorICogMDcgMTMgMjAyMSBqb2hubnkuZGluZworICogW01PTFkwMDY0ODU1N10gW01UNjg4NV1bUGV0cnVzXVtRMF1bUm9nZXJzXVtXVyBGVF1bQ2FuYWRhXVtUb3JvbnRvXVs1R01NXVtTQV1bVENJRDogU0FfU2VsZi1DZXJfRlRfMDZfMDA4XTotRFVUIGRvZXMgbm90IGFibGUgdG8gZG8gU0EgNUcgcmVnaXN0cmF0aW9uIFZvTlIgb24gYSBTSU0yIGZvciBTQSBBcmVhLgorICogCQorICogCXBvcnRpbmcgY29kZS4KKyAqCisgKiAwNCAyMSAyMDIxIGNvc21vLnN1bmcKKyAqIFtNT0xZMDA2NDg1NTddIFtCbG9ja2luZ11bTVQ2ODg1XVtQZXRydXNdW1EwXVtSb2dlcnNdW1dXIEZUXVtDYW5hZGFdW1Rvcm9udG9dWzVHTU1dW1NBXVtUQ0lEOiBTQV9TZWxmLUNlcl9GVF8wNl8wMDhdOi1EVVQgZG9lcyBub3QgYWJsZSB0byBkbyBTQSA1RyByZWdpc3RyYXRpb24gVm9OUiBvbiBhIFNJTTIgZm9yIFNBIEFyZWEuCisgKiAJCisgKiAJLgorICoKKyAqIDA0IDE2IDIwMjEgY29zbW8uc3VuZworICogW01PTFkwMDY0ODU1N10gW0Jsb2NraW5nXVtNVDY4ODVdW1BldHJ1c11bUTBdW1JvZ2Vyc11bV1cgRlRdW0NhbmFkYV1bVG9yb250b11bNUdNTV1bU0FdW1RDSUQ6IFNBX1NlbGYtQ2VyX0ZUXzA2XzAwOF06LURVVCBkb2VzIG5vdCBhYmxlIHRvIGRvIFNBIDVHIHJlZ2lzdHJhdGlvbiBWb05SIG9uIGEgU0lNMiBmb3IgU0EgQXJlYS4KKyAqIAkKKyAqIAkuCisgKgorICogMDkgMjEgMjAyMCBjaHVuLXl1LmNoaWVuCisgKiBbTU9MWTAwNTY5NTAxXSBbR2VuOTddIFRDMTAgcGF0Y2ggYmFjaworICogCQorICogCXRyaWdnZXIgYXV0byBzeW5jIHRvIGZpeCBUQzEwIGJ1aWxkIGVycm9yIChyZW1vdmUgcmVkdW5kYW50IHNwYWNlKQorICoKKyAqIDA4IDI1IDIwMjAgdGl0aS53dQorICogW01PTFkwMDU2MTg3Ml0gW1NRQyBFeGNsdWRlZF1bTUNGIFNhbml0eV0gW0NvbGdpbl1bTVQ2ODgwX0VWQihOTFdHKV0gIE1DRiBzZXQgT1BPVEEgZmlsZSBmYWlsCisgKiBkdW1teSBjaGVjay1pbiBmb3IgVDcwMAorICoKKyAqIDAyIDE4IDIwMTkgbHVjaWVuLmxpCisgKiBbTU9MWTAwMzg0NjgzXSBbU01MXSBTaW5nbGUgTW9kZW0gQmluIFNJTSBNRSBMb2NrCisgKiBbU3Vic2lkeSBMb2NrXVtMNF0KKyAqCisgKiAxMCAzMSAyMDE3IGx1Y2llbi5saQorICogW01PTFkwMDI4NjQwN10gW0w0ICYgRERNXSBFR1RZUEUgcmVmYWN0b3JpbmcKKyAqIFtSM10gTDRDIFBTIGFjdGlvbiBjb250cm9sIGVuaGFuY2VtZW50CisgKgorICogMDkgMTUgMjAxNyB3ZW54aXUuemhhbworICogW01PTFkwMDI3NTk5MV0gW0NNQ0NdWzYyOTNdT1AwMSBMT0NLIHN1cHBvcnQtIEw0QyBwYXJ0CisgKiAubDRjLTE1CisgKgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgIF9MNEJQV1JfTDRDX1NUUlVDVF9ICisjZGVmaW5lICBfTDRCUFdSX0w0Q19TVFJVQ1RfSAorCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKyNpbmNsdWRlICJsNGNfY29tbW9uX2VudW0uaCIKKworCit0eXBlZGVmIHN0cnVjdHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF9ib29sIHNpbV9sb2NrOworICAgIGthbF9ib29sIHJhdF9sb2NrOworICAgIGw0X29wMDFfYWN0aW9uX2VudW0gb3AwMV9hY3Rpb247Cit9bDRicHdyX2w0Y19vcDAxX2xvY2tfcmVxX3N0cnVjdDsgCisKK3R5cGVkZWYgc3RydWN0eworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX2Jvb2wgcmVzdWx0Oy8vcmVzZXZlZAorfWw0YnB3cl9sNGNfb3AwMV9sb2NrX2NuZl9zdHJ1Y3Q7IAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIC8qIGJpdG1hcDogZWFjaCBiaXQgcmVwcmVzZW50cyBvbmUgcHJvdG9jb2wKKyAgICAgICAxOiBQUyAxIC8gMjogUFMgMiAgLyAgMzogUFMgMSArIFBTIDIgIC4uLi4KKyAgICAqLworICAgIGthbF91aW50OCB0YXJnZXRfcHM7Cit9IGw0YnB3cl9sNGNfc2VydmljZV9tb2RlX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgLyogTDQgbWlnaHQgYWRkIG5ldyBwYXJhbWV0ZXJzIGhlcmUgaW4gZnV0dXJlICAqLworfSBsNGJwd3JfbDRjX3NlcnZpY2VfbW9kZV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF9ib29sICByZXN1bHQ7CisgICAga2FsX3VpbnQ4IGNhdXNlOyAgICAvLyAoUmVzZXJ2ZWQgZmllbGQpCit9IGw0YnB3cl9sNGNfc2VydmljZV9tb2RlX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4IGVmdW5fc3RhdGU7Cit9IGw0YnB3cl9sNGNfYXV0b19zdGFydHVwX2luZF9zdHJ1Y3Q7CisKKyNpZiBkZWZpbmVkKF9fTlJfU0FfXykgJiYgZGVmaW5lZChfX05SX1BMVVNfTF9PTkxZX18pCit0eXBlZGVmIHN0cnVjdHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIHZnX29wdGlvbl9lbnVtIHZnX29wdGlvbjsKK31sNGJwd3JfbDRjXzVnb3B0X3NldF9yZXFfc3RydWN0OyAKKwordHlwZWRlZiBzdHJ1Y3R7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCByZXN1bHQ7Cit9bDRicHdyX2w0Y181Z29wdF9zZXRfY25mX3N0cnVjdDsKKyNlbmRpZgorI2VuZGlmIC8qIF9MNEJOV19MNENfU1RSVUNUX0ggKi8KZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0YzJjc21fY2Nfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGMyY3NtX2NjX3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkYTY4ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGMyY3NtX2NjX3N0cnVjdC5oCkBAIC0wLDAgKzEsMTI2NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGw0YzJjc21fY2Nfc3RydWN0LmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgTUFVSQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogICAgICAgICAgICAgSElTVE9SWQorICogQmVsb3cgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBVcHBlciB0aGlzIGxpbmUsIHRoaXMgcGFydCBpcyBjb250cm9sbGVkIGJ5IFBWQ1MgVk0uIERPIE5PVCBNT0RJRlkhIQorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogIFRoaXMgcHJvZHVjdCBoYXMgYmVlbiBkZXZlbG9wZWQgdXNpbmcgYSBwcm90b2NvbCBzdGFjaworKiAgZGV2ZWxvcGVkIGJ5IFNhc2tlbiBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBMaW1pdGVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDIKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBGSUxFTkFNRSA6IGw0YzJjc21fY2Nfc3RydWN0LmgKKyAqICBTWU5PUFNJUyA6IEZ1bmN0aW9ucyBmb3IgZW5jb2RpbmcvZGVjb2RpbmcuCisgKgorICogICAgICAgICAgICAgICAgICAgICAgUiBFIFYgSSBTIEkgTyBOICAgIEggSSBTIFQgTyBSIFkKKyAqCisgKi8KKyNpZm5kZWYgX0w0QzJDU01fQ0NfU1RSVUNUX0gKKyNkZWZpbmUgX0w0QzJDU01fQ0NfU1RSVUNUX0gKKworLy8jaW5jbHVkZSAicHMyc2F0X3N0cnVjdC5oIgorLy8jaW5jbHVkZSAia2FsX25vbl9zcGVjaWZpY19nZW5lcmFsX3R5cGVzLmgiCisvLyNpbmNsdWRlICJsNGNfY29tbW9uX2VudW0uaCIKKy8vI2luY2x1ZGUgImNzbWNjX2VudW1zLmgiCisjaW5jbHVkZSAiY3NtY2NfY29tbW9uX2VudW1zLmgiCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfc3RydWN0LmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKworLy9wb2hhbixGb3IgQ01DQyBBVCBjb21tYW5kIHJlcXVpcmVtZW50CisjaW5jbHVkZSAiY3NtY2NfYXRmdW5jLmgiCisjaW5jbHVkZSAic2ltX3B1YmxpY19lbnVtLmgiCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiCisKKwordHlwZWRlZiBlbnVtCit7CisgIFJETl9BTExPV0VELAorICBSRE5fUkVTVFJJQ1RFRCwKKyAgUkROX1VOQVZBSUxBQkxFLAorICBSRE5fUkVTVFJJQ1RFREFERFIKK30gbDRjY3NtX2NjX3Jkbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgQ05BUF9BTExPV0VELAorICBDTkFQX1JFU1RSSUNURUQsCisgIENOQVBfVU5BVkFJTEFCTEUsCisgIENOQVBfUkVTVFJJQ1RFRE5BTUUKK30gbDRjY3NtX2NjX2NuYXBfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgIEJTQ19CUywKKyAgQlNDX1RTCit9IGw0Y2NzbV9jY19ic2NfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBDQUxMX1JFVFJJRVZFRCwKKyAgIENBTExfT05IT0xECit9IGw0Y2NzbV9jY19ob2xkX2luZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIEVDVF9BTEVSVElORywKKyAgIEVDVF9BQ1RJVkUKK30gbDRjY3NtX2NjX2VjdF9zdGF0ZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIEdFTl9VTlJFQ09HTklaRURfQ09NUCwKKyAgIEdFTl9NSVNUWVBFRF9DT01QLAorICAgR0VOX0JBRF9TVFJVQ1RfQ09NUAorfSBsNGNjc21fY2Nfc3NfZ2VuX3Byb2JfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBJTlZfRFVQX0lOVl9JRCwKKyAgIElOVl9VTlJFQ09HTklaRURfT1AsCisgICBJTlZfTUlTVFlQRURfUEFSQSwKKyAgIElOVl9SRVNPVVJDRV9MSU1JVCwKKyAgIElOVl9JTklUX1JFTEVBU0UsCisgICBJTlZfVU5SRUNPR05JWkVEX0xJTktfSUQsCisgICBJTlZfTElOS19JRF9SU1BfVU5FWFBFQ1RFRCwKKyAgIElOVl9VTkVYUEVDVEVEX0xJTktfT1AKK30gbDRjY3NtX2NjX3NzX2ludl9wcm9iX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgUlJfVU5SRUNPR05JWkVEX0lOVl9JRCwKKyAgIFJSX1VORVhQRUNURUQsCisgICBSUl9NSVNUWVBFRF9QQVJBCit9IGw0Y2NzbV9jY19zc19ycl9wcm9iX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgUkVfVU5SRUNPR05JWkVEX0lOVl9JRCwKKyAgIFJFX1VORVhQRUNURUQsCisgICBSRV9VTlJFQ09HTklaRURfRVJST1IsCisgICBSRV9VTkVYUEVDVEVEX0VSUk9SLAorICAgUkVfTUlTVFlQRURfUEFSQQorfSBsNGNjc21fY2Nfc3NfcmVfcHJvYl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIEw0Q19NT0RJRllfQ01EX05PTkUsCisgICBMNENfTU9ESUZZX0FUQSwKKyAgIEw0Q19NT0RJRllfQVRECit9IGw0Y2NzbV9jY19tb2RpZnlfY21kX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgTDRDQ1NNX0NDX1NUQVJUVVBfTlZSQU0sCisgICBMNENDU01fQ0NfU1RBUlRVUF9TSU0sCisgICBMNENDU01fQ0NfU1RBUlRVUF9JTlZBTElECit9IGw0Y2NzbV9jY19zdGFydHVwX2VudW07ICAgIC8qIE1BVUlfMDE3NDc1MDYgc2VwYXJ0ZSBzdGFydHVwIHRvIFNJTSBhbmQgTlZSQU0gKi8KKwordHlwZWRlZiBlbnVtCit7CisgICBMNENfU1JWQ0NfQ0FMTF9NT0RFX1ZPSUNFLAorICAgTDRDX1NSVkNDX0NBTExfTU9ERV9WSURFTywKKyAgIEw0Q19TUlZDQ19DQUxMX01PREVfRU1FUkdFTkNZLAorICAgTDRDX1NSVkNDX0NBTExfTU9ERV9WT0lDRV9DT05GRVJFTkNFLAorICAgTDRDX1NSVkNDX0NBTExfTU9ERV9WSURFT19DT05GRVJFTkNFLAorICAgTDRDX1NSVkNDX0NBTExfTU9ERV9WT0lDRV9DT05GRVJFTkNFX1BBUlRTLCAvLyBjb25mZXJlbmNlIHZvaWNlIGNhbGwgcGFydGljaXBhbnQKKyAgIEw0Q19TUlZDQ19DQUxMX01PREVfVklERU9fQ09ORkVSRU5DRV9QQVJUUywgLy8gY29uZmVyZW5jZSB2aWRlbyBjYWxsIHBhcnRpY2lwYW50CisgICBMNENfU1JWQ0NfQ0FMTF9NT0RFX01BWAorfSBsNGNjc21fc3J2Y2NfY2FsbF9tb2RlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgTDRDX1NSVkNDX0NBTExfRElSRUNUSU9OX01PLAorICAgTDRDX1NSVkNDX0NBTExfRElSRUNUSU9OX01ULAorICAgTDRDX1NSVkNDX0NBTExfRElSRUNUSU9OX01BWAorfSBsNGNjc21fc3J2Y2NfY2FsbF9kaXJlY3Rpb25fZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBMNENfU1JWQ0NfQ0FMTF9TVEFURV9FQVJMWSwKKyAgIEw0Q19TUlZDQ19DQUxMX1NUQVRFX0VBUkxZX1dJVEhfTUVESUEsCisgICBMNENfU1JWQ0NfQ0FMTF9TVEFURV9BQ1RJVkUsCisgICBMNENfU1JWQ0NfQ0FMTF9TVEFURV9PTkhPTEQsCisgICBMNENfU1JWQ0NfQ0FMTF9TVEFURV9QUkVfQUxFUlRJTkcsCisgICBMNENfU1JWQ0NfQ0FMTF9TVEFURV9QUkVfQUxFUlRJTkdfV0lUSF9NRURJQSwKKyAgIEw0Q19TUlZDQ19DQUxMX1NUQVRFX0FDVElWRV9SRVRSWV9DQ19DT05ORUNULAorICAgTDRDX1NSVkNDX0NBTExfU1RBVEVfTUFYCit9IGw0Y2NzbV9zcnZjY19jYWxsX3N0YXRlX2VudW07CisKKy8qIG10azAxNjAyOiBSRUw0LCBUUyAyNC4wMDggVGFibGUgMTAuNS4xMzVkCisgICBEZWZpbmUgRW1lcmdlbmN5IFNlcnZpY2UgQ2F0ZWdvcmllcyBFbnVtICovCit0eXBlZGVmIGVudW0KK3sKKyAgIFNSVkNDX0VDQ19DQVRFR09SWV9VTlNQRUNJRklFRCA9IDAsIAorICAgU1JWQ0NfRUNDX0NBVEVHT1JZX1BPTElDRSA9IDB4MDAwMSwKKyAgIFNSVkNDX0VDQ19DQVRFR09SWV9BTUJVTEFOQ0UgPSAweDAwMDIsCisgICBTUlZDQ19FQ0NfQ0FURUdPUllfRklSRV9CUklHQURFID0gMHgwMDA0LAorICAgU1JWQ0NfRUNDX0NBVEVHT1JZX01BUklORV9HVUFSRCA9IDB4MDAwOCwKKyAgIFNSVkNDX0VDQ19DQVRFR09SWV9NT1VOVEFJTl9SRVNDVUUgPSAweDAwMTAsCisgICBTUlZDQ19FQ0NfQ0FURUdPUllfR0FTID0gMHgwMTAwLAorICAgU1JWQ0NfRUNDX0NBVEVHT1JZX0FOSU1BTCA9IDB4MDIwMCwKKyAgIFNSVkNDX0VDQ19DQVRFR09SWV9QSFlTSUNJQU4gPSAweDA0MDAsICAgCisgICBTUlZDQ19FQ0NfQ0FURUdPUllfUE9JU09OID0gMFgwODAwLAorICAgU1JWQ0NfRUNDX0NBVEVHT1JZX1RSQUZGSUMgPSAwWDEwMDAsCisgICBTUlZDQ19FQ0NfQ0FURUdPUllfSU5WQUxJRCA9IDBYRkZGRgorfWw0Y2NzbV9zcnZjY19lY2NfY2F0ZWdvcnlfZW51bTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCBjYWxsX2lkOworICAgIGw0Y2NzbV9zcnZjY19jYWxsX21vZGVfZW51bSBjYWxsX21vZGU7CisgICAgbDRjY3NtX3NydmNjX2NhbGxfZGlyZWN0aW9uX2VudW0gY2FsbF9kaXI7CisgICAgbDRjY3NtX3NydmNjX2NhbGxfc3RhdGVfZW51bSBjYWxsX3N0YXRlOworICAgIGw0Y2NzbV9zcnZjY19lY2NfY2F0ZWdvcnlfZW51bSBlY2NfY2F0ZWdvcnk7CisKKyAgICBrYWxfdWludDggc3J2Y2NfbnVtYmVyX3R5cGU7CisgICAga2FsX2Jvb2wgc3J2Y2NfbnVtYmVyX3ByZXNlbnQ7CisgICAga2FsX2NoYXIgc3J2Y2NfbnVtYmVyW01BWF9TSVBfVVJJX0xFTl07CisgICAga2FsX2Jvb2wgc3J2Y2NfYWxwaGFfcHJlc2VudDsKKyAgICBrYWxfY2hhciBzcnZjY19hbHBoYVtNQVhfUFNfTkFNRV9TSVpFICsgMV07IC8vIE1BWF9QU19OQU1FX1NJWkU6IDQyCisgICAga2FsX2Jvb2wgY2xpX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IGNsaTsKKworfSBsNGNjc21fc3J2Y2NfY2FsbF9jbnR4dF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDggYWRkcl9pbmRfcHJlc2VudDsKKyAgICBrYWxfdWludDggYWRkcl9pbmQ7CisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IGFkZHI7Cit9IGw0Y2NzbV9jY19wZWVyX2FkZHJfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAga2FsX3VpbnQ4IHN1Yl9hZGRyX2xlbjsKKyAgICBrYWxfdWludDggc3ViX2FkZHJbMjFdOworfSBsNGNjc21fY2Nfc3ViX2FkZHJfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IHBhcnR5TnVtYmVyOworICAgIGthbF91aW50OCBwYXJ0eU51bWJlclN1YmFkZHJlc3NfcHJlc2VudDsKKyAgICBsNGNjc21fY2Nfc3ViX2FkZHJfc3RydWN0IHBhcnR5TnVtYmVyU3ViYWRkcmVzczsKK30gbDRjY3NtX2NjX3Jkbl9hZGRyX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCBlY3RfcmRuX3ByZXNlbnQ7CisgICAgbDRjY3NtX2NjX3Jkbl9lbnVtIHJkbl9jaG9pY2VfdGFnOworICAgIHVuaW9uIHsKKyAgICAgICAgbDRjY3NtX2NjX3Jkbl9hZGRyX3N0cnVjdCBwcmVzZW50YXRpb25BbGxvd2VkQWRkcmVzczsKKyAgICAgICAga2FsX3VpbnQ4IHByZXNlbnRhdGlvblJlc3RyaWN0ZWQ7CisgICAgICAgIGthbF91aW50OCBudW1iZXJOb3RBdmFpbGFibGVEdWVUb0ludGVyd29ya2luZzsKKyAgICAgICAgbDRjY3NtX2NjX3Jkbl9hZGRyX3N0cnVjdCBwcmVzZW50YXRpb25SZXN0cmljdGVkQWRkcmVzczsKKyAgICB9IHJkbl9jaG9pY2VfdmFsdWU7Cit9IGw0Y2NzbV9jY19lY3RfcmRuX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCBjYWxsaW5nTmFtZV9wcmVzZW50OworICAgIGw0Y2NzbV9jY19jbmFwX2VudW0gY2FsbGluZ05hbWVfY2hvaWNlX3RhZzsKKyAgICB1bmlvbiB7CisgICAgICAgIGw0X2NuYXBfc3RydWN0IGNuYXBQcmVzZW50YXRpb25BbGxvd2VkOworICAgICAgICBsNF9uYW1lX3N0cnVjdCBuYW1lUHJlc2VudGF0aW9uQWxsb3dlZDsKKyAgICAgICAga2FsX3VpbnQ4IHByZXNlbnRhdGlvblJlc3RyaWN0ZWQ7CisgICAgICAgIGthbF91aW50OCBuYW1lVW5hdmFpbGFibGU7CisgICAgICAgIGw0X2NuYXBfc3RydWN0IGNuYXBQcmVzZW50YXRpb25SZXN0cmljdGVkOworICAgICAgICBsNF9uYW1lX3N0cnVjdCBuYW1lUHJlc2VudGF0aW9uUmVzdHJpY3RlZDsKKyAgICB9IGNhbGxpbmdOYW1lX2Nob2ljZV92YWx1ZTsKK30gbDRjY3NtX2NjX25hbWVfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCBjY2JzX2luZGV4X3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IGNjYnNfaW5kZXg7CisgICAga2FsX3VpbnQ4IGJfc3Vic2NyaWJlck51bWJlcl9wcmVzZW50OworICAgIGw0X2FkZHJfYmNkX3N0cnVjdCBiX3N1YnNjcmliZXJOdW1iZXI7CisgICAga2FsX3VpbnQ4IGJfc3Vic2NyaWJlclN1YmFkZHJlc3NfcHJlc2VudDsKKyAgICBsNGNjc21fY2Nfc3ViX2FkZHJfc3RydWN0IGJfc3Vic2NyaWJlclN1YmFkZHJlc3M7CisgICAga2FsX3VpbnQ4IGJzX2NvZGVfcHJlc2VudDsKKyAgICBrYWxfdWludDggYnNfY29kZTsKK30gbDRjY3NtX2NjX2NjYnNfZmVhdHVyZV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDggY2Nic19mZWF0dXJlX3ByZXNlbnQ7CisgICAgbDRjY3NtX2NjX2NjYnNfZmVhdHVyZV9zdHJ1Y3QgY2Nic19mZWF0dXJlOworICAgIGthbF91aW50OCBhbGVydGluZ1BhdHRlcm5fcHJlc2VudDsKKyAgICBrYWxfdWludDggYWx0ZXJ0aW5nUGF0dGVybjsgICAgCit9IGw0Y2NzbV9jY19jY2JzX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDggdHlwZTsKKyAgICBrYWxfYm9vbCAgc3NfY29kZV9wcmVzZW50OworICAgIGthbF91aW50OCBzc19jb2RlOworICAgIGthbF9ib29sICBzdGF0dXNfcHJlc2VudDsKKyAgICBrYWxfdWludDggc3RhdHVzOworICAgIGthbF9ib29sICBub3RpZmljYXRpb25fcHJlc2VudDsKKyAgICBrYWxfdWludDggbm90aWZpY2F0aW9uOworICAgIGthbF91aW50MTYgY3VnX2luZGV4OworICAgIGw0Y2NzbV9jY19lY3RfcmRuX3N0cnVjdCBlY3RfcmRuOworICAgIGw0Y2NzbV9jY19uYW1lX2luZF9zdHJ1Y3QgbmFtZV9pbmQ7CisgICAgbDRjY3NtX2NjX2NjYnNfaW5kX3N0cnVjdCBjY2JzX2luZDsKK30gbDRjY3NtX2NjX25vdGlmeV9zc19hcmdfc3RydWN0OworCisvKm10azAxNjAyLCAwNTMwMDc6IFNBVGUgT3BlbiBDaGFubmVsIGZvciBDU0QqLwordHlwZWRlZiBzdHJ1Y3QgeworCWthbF91aW50OCAgaXNfYWRkcl9wcmVzZW50OworCWw0X2FkZHJfYmNkX3N0cnVjdCAgYWRkcjsKKwlrYWxfdWludDggICBpc19zdWJhZGRyX3ByZXNlbnQ7CisJbDRjY3NtX2NjX3N1Yl9hZGRyX3N0cnVjdCBzdWJhZGRyOworCWthbF91aW50OCAgIGlzX3VzZXJfaWRfcHJlc2VudDsKKwlrYWxfdWludDggICB1c2VyX2lkWzMyXTsKKwlrYWxfdWludDggICBpc191c2VyX3B3ZF9wcmVzZW50OworCWthbF91aW50OCAgIHVzZXJfcHdkWzMyXTsKKwlrYWxfdWludDggICBpc19sb2NhbF9hZGRyX3ByZXNlbnQ7CisJa2FsX3VpbnQ4ICAgbG9jYWxfYWRkclsxNl07IC8vVG8gYmUgY29uZmlybWVkLCBOaWNrIHNldCBpdCBhcyBsZW5ndGggMTYKKwlzYXRfY3NkX2JlYXJlcl9wYXJhX3N0cnVjdCAgc2F0X2Nic3Q7IC8vcmVmZXIgMTEuMTQgNi42LjI3OyBtYW5kYXRvcnkgSUUsIG5vIG1hdHRlciBTSU0gcHJvdmlkZWQgb3IgRGVmYXVsdCBjYXNlLgorfWw0Y2NzbV9jY19zYXRfcHJvZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorfSBsNGNjc21fY2NfZHVtbXlfbG9jYWxfcGFyYV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGluaXRfdHlwZTsgLyogTUFVSV8wMTc0NzUwNiBzZXBhcnRlIHN0YXJ0dXAgdG8gU0lNIGFuZCBOVlJBTSAqLworfSBsNGNjc21fY2Nfc3RhcnR1cF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBpbml0X3R5cGU7IC8qIE1BVUlfMDE3NDc1MDYgc2VwYXJ0ZSBzdGFydHVwIHRvIFNJTSBhbmQgTlZSQU0gKi8KKyAgICBrYWxfdWludDggcmVzcG9uc2U7CisgICAga2FsX3VpbnQxNiBjYXVzZTsKK30gbDRjY3NtX2NjX3N0YXJ0dXBfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGNoYW5uZWxfbW9kZTsKKyAgICBrYWxfdWludDggcmF0OyAgICAJCisgICAga2FsX3VpbnQ4IGlyaG9fc3BlZWNoX29uX29mZjsKK30gbDRjY3NtX2NjX2F0dGFjaF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggcmF0OworICAgIGthbF91aW50OCBpcmhvX3NwZWVjaF9vbl9vZmY7Cit9IGw0Y2NzbV9jY19kZXRhY2hfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKK30gbDRjY3NtX2NjX2FjbV9yZXNldF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCByZXNwb25zZTsKKyAgICBrYWxfdWludDE2IGNhdXNlOworfSBsNGNjc21fY2NfYWNtX3Jlc2V0X2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQzMiBhY21tYXg7Cit9IGw0Y2NzbV9jY19hY21tYXhfc2V0X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IHJlc3BvbnNlOworICAgIGthbF91aW50MTYgY2F1c2U7Cit9IGw0Y2NzbV9jY19hY21tYXhfc2V0X2NuZl9zdHJ1Y3Q7CisKKy8qIE1BVUlfMDE5Mzg0MTQgW0NTTUNDXVtSZXZpc2VdIHN1cHBvcnQgcmVzZXQgbGFzdCBjY20gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7Cit9IGw0Y2NzbV9jY19sYXN0X2NjbV9yZXNldF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKK30gbDRjY3NtX2NjX2Fib3J0X2NhbGxfcmVxX3N0cnVjdDsKKworCisvKiBNQVVJXzAxOTM4NDE0IFtDU01DQ11bUmV2aXNlXSBzdXBwb3J0IHJlc2V0IGxhc3QgY2NtICovCit0eXBlZGVmIHN0cnVjdCB7CisgICBMT0NBTF9QQVJBX0hEUgorICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgIGthbF91aW50OCByZXN1bHQ7CisgICBrYWxfdWludDggZXJyb3JfY2F1c2U7IAorfSBsNGNjc21fY2NfbGFzdF9jY21fcmVzZXRfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggZGlnaXRfY291bnQ7CisgICAga2FsX3VpbnQ4IGR0bWZfZGlnaXRbTUFYX0NDX0RUTUZfQkNEX0xFTl07ICAgCit9IGw0Y2NzbV9jY19hdXRvX2R0bWZfc3RhcnRfaW5kX3N0cnVjdDsKKy8qIG5vX2R0bWYgc2hvbGQgYmUgbGVzcyB0aGFuIE1BWF9DQ19BRERSX0JDRF9MRU4uIAorICAgVGhlIGV4dHJhIGxhc3Qgb25lIGVudHJ5IGlzIGZvciBudWxsIHRlcm1pbmFsLiAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBjYWxsX2lkOworfSBsNGNjc21fY2NfYXV0b19kdG1mX2NvbXBsZXRlX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IHJlZGlyZWN0X251bTsKKyAgICBrYWxfdWludDggcmVkaXJlY3Rfc3ViX2FkZHJfcHJlc2VudDsKKyAgICBsNGNjc21fY2Nfc3ViX2FkZHJfc3RydWN0IHJlZGlyZWN0X3N1Yl9hZGRyOworfSBsNGNjc21fY2NfY2FsbF9kZWZsZWN0aW9uX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAga2FsX3VpbnQ4IHJlc3BvbnNlOworICAgIGthbF91aW50OCBjYXVzZV9wcmVzZW50OworICAgIGthbF91aW50MTYgY2F1c2U7Cit9IGw0Y2NzbV9jY19jYWxsX2RlZmxlY3Rpb25fY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZF9wcmVzZW50OworICAgIGthbF91aW50OCBjYWxsX2lkOworICAgIGthbF91aW50OCBjcnNzX3JlcTsKK30gbDRjY3NtX2NjX2Nyc3NfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZF9wcmVzZW50OworICAgIGthbF91aW50OCBjYWxsX2lkOworICAgIGthbF91aW50OCByZXNwb25zZTsKKyAgICBrYWxfdWludDggY2F1c2VfcHJlc2VudDsKKyAgICBrYWxfdWludDE2IGNhdXNlOworICAgIGthbF91aW50OCAgY3Jzc19yZXE7IC8vbXRrMDE2MDIsIDA3MDcxOAorfSBsNGNjc21fY2NfY3Jzc19jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBjYWxsX2lkOworICAgIGthbF91aW50MzIgY2NtOworICAgIGthbF91aW50MzIgYWNtOworICAgIGthbF91aW50OCBjY3d2OworfSBsNGNjc21fY2NfY2NtX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAga2FsX3VpbnQ4IGNvbm5lY3RlZF9zdWJfYWRkcl9wcmVzZW50OworICAgIGw0Y2NzbV9jY19zdWJfYWRkcl9zdHJ1Y3QgY29ubmVjdGVkX3N1Yl9hZGRyOworfSBsNGNjc21fY2NfY2FsbF9hY2NlcHRfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggcmVzcG9uc2U7CisgICAga2FsX3VpbnQ4IGNhdXNlX3ByZXNlbnQ7CisgICAga2FsX3VpbnQxNiBjYXVzZTsKK30gbDRjY3NtX2NjX2NhbGxfYWNjZXB0X2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAga2FsX3VpbnQ4IGFsZXJ0OworfSBsNGNjc21fY2NfY2FsbF9hbGVydF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBjYWxsX2lkOworICAgIGthbF91aW50OCBjYWxsX3R5cGU7CisgICAga2FsX3VpbnQ4IGNvbm5lY3RlZF9udW1iZXJfcHJlc2VudDsKKyAgICBsNGNjc21fY2NfcGVlcl9hZGRyX3N0cnVjdCBjb25uZWN0ZWRfbnVtYmVyOworICAgIGthbF91aW50OCBjb25uZWN0ZWRfc3ViX2FkZHJfcHJlc2VudDsKKyAgICBsNGNjc21fY2Nfc3ViX2FkZHJfc3RydWN0IGNvbm5lY3RlZF9zdWJfYWRkcjsKK30gbDRjY3NtX2NjX2NhbGxfY29ubmVjdF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBjYWxsX2lkOworfSBsNGNjc21fY2NfY2FsbF9kaXNjX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBjYWxsX2lkOworfSBsNGNjc21fY2NfcmVsX2NvbXBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGlzX210X2NhbGxfYWxsb3dlZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsJCisgICAga2FsX3VpbnQ4IHNlcV9udW07CQkKKyAgICBrYWxfdWludDE2IHJlamVjdF9jYXVzZTsKK30gbDRjY3NtX2NjX2NhbGxfcHJlc2VudF9yc3Bfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBjYWxsX2lkOworICAgIGthbF91aW50OCByZXNwb25zZTsKKyAgICBrYWxfdWludDggY2FsbF90eXBlOworICAgIGthbF91aW50MzIgY2NtOworfSBsNGNjc21fY2NfY2FsbF9kaXNjX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAgbDRjY3NtX2NjX21vZGlmeV9jbWRfZW51bSBtb2RpZnlfY21kOworfSBsNGNjc21fY2NfY2FsbF9tb2RpZnlfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggcmVzcG9uc2U7CisgICAga2FsX3VpbnQ4IGN1cl9jYWxsX3R5cGU7CisgICAga2FsX3VpbnQ4IGNhdXNlX3ByZXNlbnQ7CisgICAga2FsX3VpbnQxNiBjYXVzZTsKK30gbDRjY3NtX2NjX2NhbGxfbW9kaWZ5X2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAga2FsX3VpbnQ4IGN1cl9jYWxsX3R5cGU7Cit9IGw0Y2NzbV9jY19jYWxsX21vZGlmeV9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBjYWxsX2lkOworICAgIGthbF91aW50OCBwcmVlbXB0X3R5cGU7Cit9IGw0Y2NzbV9jY19jYWxsX3ByZWVtcHRfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggY2F1c2VfcHJlc2VudDsKKyAgICBrYWxfdWludDE2IGNhdXNlOworICAgIGthbF91aW50OCBjYWxsX3R5cGU7ICAgIAorICAgIGthbF91aW50MzIgY2NtOworICAgIGthbF9ib29sIGlzX2RpYWdub3N0aWNfcHJlc2VudDsKKyAgICBrYWxfdWludDggZGlhZ25vc3RpYzsKK30gbDRjY3NtX2NjX2NhbGxfcmVsX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IGNhbGxlZF9udW1iZXI7CisgICAga2FsX3VpbnQ4IGNhbGxlZF9zdWJfYWRkcl9wcmVzZW50OworICAgIGw0Y2NzbV9jY19zdWJfYWRkcl9zdHJ1Y3QgY2FsbGVkX3N1Yl9hZGRyOworICAgIGthbF91aW50OCBjdWdfaW5mbzsKKyAgICBrYWxfdWludDggY2xpcl9pbmZvX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IGNsaXJfaW5mbzsKKyAgICBrYWxfdWludDggY2FsbF9wcmlvcml0eV9wcmVzZW50OworICAgIGthbF91aW50OCBjYWxsX3ByaW9yaXR5OworICAgIGthbF91aW50OCBjYWxsX3R5cGU7CisgICAga2FsX3VpbnQ4IHJlZGlhbDsKKyAgICAvL2thbF91aW50OCBjc2RfcHJvZl9pZDsKKyAgICBzYXRfY3NkX2JlYXJlcl9wYXJhX3N0cnVjdCBzYXRfY2JzdDsKKyAgICBrYWxfdWludDggaXNfY2VsbF9sb2NrX2NhbGw7IC8vW01BVUlfMDA3NTE5NzBdCQorICAgIGthbF91aW50OCBwcm9maWxlX3R5cGU7IC8vX19EVENOVF9TSU1fUFJPRklMRVNfU1VQUE9SVF9fCisgICAga2FsX3VpbnQ4IGFsc190eXBlOyAvL01BVUlfMDE2NDc0OTEgQUxTX0RJQUxfQllfU0VUVElORworICAgIGthbF9ib29sIGw0Y19yZXRyeTsgLy9mb3JfbHYKKyAgICBrYWxfYm9vbCAgaXNfZWNhbGw7CisgICAgZWNhbGxfdHlwZV9lbnVtIGVjYWxsX3R5cGU7IAorfSBsNGNjc21fY2NfY2FsbF9zZXR1cF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBjYWxsX2lkX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAga2FsX3VpbnQ4IHJlc3BvbnNlOworICAgIGthbF91aW50OCBjYXVzZV9wcmVzZW50OworICAgIGthbF91aW50MTYgY2F1c2U7CisgICAga2FsX3VpbnQ4IGNhbGxfdHlwZTsgICAgCisgICAgc2F0X2NzZF9iZWFyZXJfcGFyYV9zdHJ1Y3Qgc2F0X2Nic3Q7CisgICAga2FsX3VpbnQ4IHRlcm1pbmFsX3JlczsKKyAgICBrYWxfdWludDggYWRkX3JlczsKKyAgICBrYWxfYm9vbCBpc19kaWFnbm9zdGljX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IGRpYWdub3N0aWM7Cit9IGw0Y2NzbV9jY19jYWxsX3NldHVwX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAga2FsX3VpbnQ4IHNpZ25hbF92YWx1ZV9wcmVzZW50OworICAgIGthbF91aW50OCBzaWduYWxfdmFsdWU7CisgICAga2FsX3VpbnQ4IGFsZXJ0aW5nX3BhdHRlcm5fcHJlc2VudDsKKyAgICBrYWxfdWludDggYWxlcnRpbmdfcGF0dGVybjsKKyAgICBrYWxfdWludDggY3dfZmxhZzsKKyAgICBrYWxfdWludDggYXV0b19hbnN3ZXI7CisgICAga2FsX3VpbnQ4IGNhbGxfdHlwZTsKKyAgICBrYWxfdWludDggY2FsbGluZ19udW1iZXJfcHJlc2VudDsKKyAgICBsNGNjc21fY2NfcGVlcl9hZGRyX3N0cnVjdCBjYWxsaW5nX251bWJlcjsKKyAgICBrYWxfdWludDggY2FsbGluZ19zdWJfYWRkcl9wcmVzZW50OworICAgIGw0Y2NzbV9jY19zdWJfYWRkcl9zdHJ1Y3QgY2FsbGluZ19zdWJfYWRkcjsKKyAgICBrYWxfdWludDggcmVkaXJlY3RpbmdfbnVtYmVyX3ByZXNlbnQ7CisgICAgbDRjY3NtX2NjX3BlZXJfYWRkcl9zdHJ1Y3QgcmVkaXJlY3RpbmdfbnVtYmVyOworICAgIGthbF91aW50OCByZWRpcmVjdGluZ19zdWJfYWRkcl9wcmVzZW50OworICAgIGw0Y2NzbV9jY19zdWJfYWRkcl9zdHJ1Y3QgcmVkaXJlY3Rpbmdfc3ViX2FkZHI7CisgICAga2FsX3VpbnQ4IG5vX2NsaV9jYXVzZV9wcmVzZW50OworICAgIGthbF91aW50OCBub19jbGlfY2F1c2U7CisgICAga2FsX3VpbnQ4IGNhbGxfcHJpb3JpdHlfcHJlc2VudDsKKyAgICBrYWxfdWludDggY2FsbF9wcmlvcml0eTsKK30gbDRjY3NtX2NjX2NhbGxfc2V0dXBfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggY2Nic19wb3NzaWJsZV9wcmVzZW50OworICAgIGthbF91aW50OCBjY2JzX3Bvc3NpYmxlOworICAgIGthbF91aW50MTYgY2F1c2U7CisgICAga2FsX3VpbnQ4IGNhbGxfdHlwZTsKKyAgICBrYWxfYm9vbCBpc19kaWFnbm9zdGljX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IGRpYWdub3N0aWM7Cit9IGw0Y2NzbV9jY19jYWxsX2Rpc2NfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKK30gbDRjY3NtX2NjX2RhdGFfYWN0aXZhdGVfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggcmVzcG9uc2U7Cit9IGw0Y2NzbV9jY19kYXRhX2FjdGl2YXRlX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IGNhbGxlZF9udW1iZXI7CisgICAgLypDb3NpbmUgMDcwNDE1OiBSNCBuZXcgSUUsIEVtZXJnZW5jeSBDYWxsIENhdGVnb3J5Ki8KKyAgICBrYWxfdWludDggc2VydmljZV9jYXRlZ29yeTsKKyAgICBrYWxfYm9vbCBsNGNfcmV0cnk7IC8vZm9yX2x2CisgICAga2FsX2Jvb2wgIGlzX2VjYWxsOworICAgIGVjYWxsX3R5cGVfZW51bSBlY2FsbF90eXBlOyAKK30gbDRjY3NtX2NjX2VtZXJnZW5jeV9jYWxsX3NldHVwX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRjY3NtX2NjX2NhbGxfc2V0dXBfY25mX3N0cnVjdCBsNGNjc21fY2NfZW1lcmdlbmN5X2NhbGxfc2V0dXBfY25mX3N0cnVjdDsKKworI2lmIDAKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBjYWxsX2lkOworICAgIGw0Y2NzbV9jY19ub3RpZnlfc3NfYXJnX3N0cnVjdCBub3RpZnlfc3NfYXJnOworICAgIGthbF91aW50OCBjY2JzX3JlY2FsbF9udW1QOworICAgIGw0X2FkZHJfYmNkX3N0cnVjdCBjY2JzX3JlY2FsbF9udW07CSAgICAJCit9IGw0Y2NzbV9jY19ub3RpZnlfc3NfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggdG9uZTsKK30gbDRjY3NtX2NjX3N0YXJ0X2R0bWZfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggcmVzcG9uc2U7CisgICAga2FsX3VpbnQ4IHRvbmU7CisgICAga2FsX3VpbnQ4IGNhdXNlX3ByZXNlbnQ7CisgICAga2FsX3VpbnQxNiBjYXVzZTsKK30gbDRjY3NtX2NjX3N0YXJ0X2R0bWZfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggdG9uZTsKK30gbDRjY3NtX2NjX3N0b3BfZHRtZl9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBjYWxsX2lkOworICAgIGthbF91aW50OCByZXNwb25zZTsKKyAgICBrYWxfdWludDggdG9uZTsgICAgCisgICAga2FsX3VpbnQ4IGNhdXNlX3ByZXNlbnQ7CisgICAga2FsX3VpbnQxNiBjYXVzZTsgICAgCit9IGw0Y2NzbV9jY19zdG9wX2R0bWZfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggc2F0X2NhbGxfdHlwZTsKKyAgICBrYWxfdWludDggY2FsbGVkX3N1Yl9hZGRyX3ByZXNlbnQ7CisgICAgbDRjY3NtX2NjX3N1Yl9hZGRyX3N0cnVjdCBjYWxsZWRfc3ViX2FkZHI7CisgICAga2FsX3VpbnQ4IGNjcF9wcmVzZW50OworICAgIGthbF91aW50OCBjY3BbTUFYX1NBVF9TSVpFX09GX0NDUF07CisgICAga2FsX3VpbnQ4IHNpemVfb2ZfY2NwOworLy8vLy8gICAga2FsX3VpbnQ4IGlzX2NoYW5nZWRfZnJvbV9zczsgICAgCisgICAga2FsX3VpbnQ4IAl0eXBlX29mX21vZGlmaWNhdGlvbjsvL210azAxNjE2XzA3MDUyMQorICAgIC8qIE1BVUlfMDE3MzY5NjYgW0w0Q11bQ1NNXSBTVEsgc3VwcG9ydCBjbGlyICovCisgICAga2FsX3VpbnQ4IGNsaXJfaW5mb19wcmVzZW50OworICAgIGthbF91aW50OCBjbGlyX2luZm87CisgICAgLypNaWNoYWVsOnRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyIGlzIGFkZGVkIGZvciBTQVQgcmV0cnkqLworICAgIGthbF9ib29sIGw0Y19yZXRyeTsgIAorICAgIGthbF9ib29sIGlzX2VtZXJnZW5jeV9jYWxsOyAvL0Nvc2luZSwgMDcwODMxCit9IGw0Y2NzbV9jY19zYXRfc2V0dXBfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggcmVzcG9uc2U7CisgICAga2FsX3VpbnQ4IHRlcm1pbmFsX3JlczsKKyAgICBrYWxfdWludDggYWRkaXRpb25hbF9yZXM7CisgICAga2FsX3VpbnQ4IGNvbm5lY3RlZF9udW1iZXJfcHJlc2VudDsKKyAgICBsNGNjc21fY2NfcGVlcl9hZGRyX3N0cnVjdCBjb25uZWN0ZWRfbnVtYmVyOworICAgIGthbF91aW50OCBjb25uZWN0ZWRfc3ViX2FkZHJfcHJlc2VudDsKKyAgICBsNGNjc21fY2Nfc3ViX2FkZHJfc3RydWN0IGNvbm5lY3RlZF9zdWJfYWRkcjsKKy8vLy8gICAga2FsX3VpbnQ4IGlzX2NoYW5nZWRfZnJvbV9zczsKKyAgICBrYWxfdWludDggCXR5cGVfb2ZfbW9kaWZpY2F0aW9uOy8vbXRrMDE2MTZfMDcwNTIzCisgICAgLypNaWNoYWVsOiBmb2xsb3dpbmcgNCBwYXJhbWV0ZXJzIGFyZSBhZGRlZCBmb3IgU0FUIHJldHJ5Ki8KKyAgICBrYWxfdWludDggY2F1c2VfcHJlc2VudDsKKyAgICBrYWxfdWludDE2IGNhdXNlOworICAgIGthbF91aW50OCBzaXplX29mX2NjcDsKKyAgICBrYWxfdWludDggY2NwW01BWF9TQVRfU0laRV9PRl9DQ1BdOyAgIAorfSBsNGNjc21fY2Nfc2F0X3NldHVwX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBpc19lc2Nfb2ZmOworICAgIGthbF91aW50OCBwb3J0OworfSBsNGNjc21fY2NfdWFydF90cmFuc2Zlcl9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggcG9ydDsKKyAgICBrYWxfYm9vbCBpc19lc2M7Cit9IGw0Y2NzbV9jY191YXJ0X3RyYW5zZmVyX2luZF9zdHJ1Y3Q7IAorLyogUmlwcGxlOiBtdXN0IHRoZSBzYW1lIHdpdGggY3NtX2wyci90ZHRfZXNjX29uX2luZF9zdHJ1Y3QsIGJlY2FzdWUgQ1NNIHVzZXMgaG9sZF9sb2NhbF9wYXJhKCkuICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfdHlwZTsKKy8vICAgIGthbF91aW50OCBjc2RfcHJvZl9pZDsKKyAgICBrYWxfdWludDMyIHVzZXJfcmF0ZTsKKyAgICBrYWxfdWludDggcHJvZmlsZV90eXBlOyAvL19fRFRDTlRfU0lNX1BST0ZJTEVTX1NVUFBPUlRfXyAKK30gbDRjY3NtX2NjX2NzZF9lc3RfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKKyAgICBrYWxfdWludDggZGlnaXRfY291bnQ7CisgICAga2FsX3VpbnQ4IGR0bWZfZGlnaXRbTUFYX0NDX0RUTUZfQkNEX0xFTl07ICAgIAorfSBsNGNjc21fY2NfYXV0b19kdG1mX3N0YXJ0X3JlcV9zdHJ1Y3Q7CisvKiBub19kdG1mIHNob2xkIGJlIGxlc3MgdGhhbiBNQVhfQ0NfQUREUl9CQ0RfTEVOLiAKKyAgIFRoZSBleHRyYSBsYXN0IG9uZSBlbnRyeSBpcyBmb3IgbnVsbCB0ZXJtaW5hbC4gKi8KKworI2lmZGVmIF9fVENQSVBfXworLy8jaW5jbHVkZSAiY3VzdG9tX252cmFtX2VkaXRvcl9kYXRhX2l0ZW0uaCIgCisvKk1BVUlfMDI1NjAzMTggcmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9mIGhlYWRlciBmaWxlKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgIExPQ0FMX1BBUkFfSERSCisgICBrYWxfdWludDggc3JjX2lkOworICAgbDRjY3NtX2NjX3NhdF9wcm9mX3N0cnVjdCAgc2F0X3Byb2Y7IC8vbXRrMDE2MDIsIDA3MDUzMDogYWRkIGZvciBOaWNrIFNBVGUKKyAgIGthbF91aW50OCBwcm9maWxlX3R5cGU7IC8vX19EVENOVF9TSU1fUFJPRklMRVNfU1VQUE9SVF9fCit9IGw0Y2NzbV9jY19zZXRfY3NkX3Byb2ZfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgTE9DQUxfUEFSQV9IRFIKKyAgIGthbF91aW50OCBzcmNfaWQ7CisgICBrYWxfdWludDggcmVzdWx0OworICAga2FsX3VpbnQ4IGVycm9yX2NhdXNlOyAgIAorICAgc2F0X2NzZF9iZWFyZXJfcGFyYV9zdHJ1Y3QgIHNhdF9jYnN0OyAvL210azAxNjAyOiB1c2UgdG8gc2VuZCBTSU0gbW9kaWZ5IGluZGljYXRpb24KK30gbDRjY3NtX2NjX3NldF9jc2RfcHJvZl9jbmZfc3RydWN0OworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgIExPQ0FMX1BBUkFfSERSCisgICBrYWxfdWludDggc3JjX2lkOworICAga2FsX3VpbnQ4IGxpbmVfaWQ7Cit9IGw0Y2NzbV9jcGhzX2Rpc3BsYXlfYWxzX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgIExPQ0FMX1BBUkFfSERSCisgICBrYWxfdWludDggc3JjX2lkOworICAga2FsX3VpbnQ4IGxpbmVfaWQ7Cit9IGw0Y2NzbV9jY191cGRhdGVfYWxzX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgIExPQ0FMX1BBUkFfSERSCisgICBrYWxfdWludDggc3JjX2lkOworICAga2FsX3VpbnQ4IHJlc3VsdDsKKyAgIGthbF91aW50MTYgZXJyb3JfY2F1c2U7IAorfSBsNGNjc21fY2NfdXBkYXRlX2Fsc19jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICBMT0NBTF9QQVJBX0hEUgorICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgIGthbF9ib29sIGNhbGxfZXhpc3Q7Cit9IGw0Y2NzbV9jY19jYWxsX2luZm9faW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggbm9fZHRtZjsKKyAgICBrYWxfdWludDggZHRtZltNQVhfQ0NfRFRNRl9CQ0RfTEVOXTsKK30gbDRjY3NtX2NjX3NhdF9zZW5kX2R0bWZfcmVxX3N0cnVjdDsKKy8qIG5vX2R0bWYgc2hvbGQgYmUgbGVzcyB0aGFuIE1BWF9DQ19BRERSX0JDRF9MRU4uIAorICAgVGhlIGV4dHJhIGxhc3Qgb25lIGVudHJ5IGlzIGZvciBudWxsIHRlcm1pbmFsLiAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworfSBsNGNjc21fY2Nfc2F0X2Fib3J0X2R0bWZfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgIHNyY19pZDsKKyAgICBrYWxfdWludDgJcmVzOworICAgIGthbF91aW50OAljYXVzZTsKK30gbDRjY3NtX2NjX3NhdF9zZW5kX2R0bWZfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBjc21jY19jcGlfbXNnX3R5cGVfZW51bSBtc2dfdHlwZTsKKyAgICBrYWxfYm9vbCBpc19pYnQ7CisgICAga2FsX2Jvb2wgaXNfdGNoOworICAgIGthbF9ib29sIG51bWJlclA7CisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IG51bWJlcjsKKyAgICBrYWxfdWludDE2IGRpc2NfY2F1c2U7IC8vQWRkIGZvciBXTSBGVEEJCisgICAga2FsX2Jvb2wgaXNfZGlhZ25vc3RpY19wcmVzZW50OworICAgIGthbF91aW50OCBkaWFnbm9zdGljOworICAgIGw0Y19jYWxsX2VudHJ5X3N0cnVjdCBjYWxsX2VudHJ5OworfSBsNGNjc21fY2NfY3BpX2luZF9zdHJ1Y3Q7IC8qbXRrMDA5MjQgYWRkIDA0MTIwOCBmb3IgK0VDUEkqLworCisvKiBNQVVJXzAxMzE1MjUyLCB1cGRhdGUgY2FsbCBzdGF0ZSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQxNiBjYWxsX3N0YXRlOworICAgIGw0Y19jYWxsX2VudHJ5X3N0cnVjdCBjYWxsX2VudHJ5OworfSBsNGNjc21fY2NfdXBkYXRlX2NhbGxfc3RhdGVfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggY2FsbF9pZDsKK30gbDRjY3NtX2NjX2NhbGxfc3luY19pbmRfc3RydWN0OyAvKm10azAwOTI0IGFkZCAwNTA3MjcgZm9yIGluZGljYXRlIE1NSSB0byBnZXQgY2FsbCBpbmZvKi8KKworI2lmZGVmIF9fVklERU9fQ0FMTF9TVVBQT1JUX18KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBjYWxsX2lkOworICAgIGthbF91aW50OCBhY3Rpb247Lypjc21jY192aWRlb19jYWxsX2FjdGlvbl9lbnVtKi8KKyAgICBrYWxfYm9vbCByZXN1bHQ7CisgICAga2FsX3VpbnQ4IGNhdXNlOwkKK30gbDRjY3NtX2NjX3ZpZGVvX2NhbGxfc3RhdHVzX2luZF9zdHJ1Y3Q7IAorI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7CisgICAga2FsX3VpbnQ4IHNpZ25hbF92YWx1ZV9wcmVzZW50OworICAgIGthbF91aW50OCBzaWduYWxfdmFsdWU7CisgICAga2FsX3VpbnQ4IGFsZXJ0aW5nX3BhdHRlcm5fcHJlc2VudDsKKyAgICBrYWxfdWludDggYWxlcnRpbmdfcGF0dGVybjsKKyAgICBrYWxfdWludDggY3dfZmxhZzsKKyAgICBrYWxfdWludDggYXV0b19hbnN3ZXI7CisgICAga2FsX3VpbnQ4IGNhbGxfdHlwZTsKKyAgICBrYWxfdWludDggY2FsbGluZ19udW1iZXJfcHJlc2VudDsKKyAgICBsNGNjc21fY2NfcGVlcl9hZGRyX3N0cnVjdCBjYWxsaW5nX251bWJlcjsKKyAgICBrYWxfdWludDggY2FsbGluZ19zdWJfYWRkcl9wcmVzZW50OworICAgIGw0Y2NzbV9jY19zdWJfYWRkcl9zdHJ1Y3QgY2FsbGluZ19zdWJfYWRkcjsKKyAgICBrYWxfdWludDggY2FsbGVkX3N1Yl9hZGRyX3ByZXNlbnQ7CisgICAgbDRjY3NtX2NjX3N1Yl9hZGRyX3N0cnVjdCBjYWxsZWRfc3ViX2FkZHI7CisgICAga2FsX3VpbnQ4IHJlZGlyZWN0aW5nX251bWJlcl9wcmVzZW50OworICAgIGw0Y2NzbV9jY19wZWVyX2FkZHJfc3RydWN0IHJlZGlyZWN0aW5nX251bWJlcjsKKyAgICBrYWxfdWludDggcmVkaXJlY3Rpbmdfc3ViX2FkZHJfcHJlc2VudDsKKyAgICBsNGNjc21fY2Nfc3ViX2FkZHJfc3RydWN0IHJlZGlyZWN0aW5nX3N1Yl9hZGRyOworICAgIGthbF91aW50OCBub19jbGlfY2F1c2VfcHJlc2VudDsKKyAgICBrYWxfdWludDggbm9fY2xpX2NhdXNlOworICAgIGthbF91aW50OCBjYWxsX3ByaW9yaXR5X3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IGNhbGxfcHJpb3JpdHk7CisgICAga2FsX3VpbnQ4IHNlcV9udW07CQorfWw0Y2NzbV9jY19jYWxsX3ByZXNlbnRfaW5kX3N0cnVjdDsgCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IG51bV9vZl9jYWxsOworICAgIGw0Y2NzbV9zcnZjY19jYWxsX2NudHh0X3N0cnVjdCBjYWxsX3RibFtMNENfTUFYX0NBTExfTElTVF9MRU5dOworfSBsNGNjc21fY2Nfc3J2Y2NfdHJhbnNmZXJfcmVxX3N0cnVjdDsKKworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBjYWxsX2lkOworICAgIGNzbWNjX2NwaV9tc2dfdHlwZV9lbnVtIHR5cGU7CisgICAgY3NtY2NfY2FsbF9vcmlnX2VudW0gZGlyZWN0aW9uOworICAgIGthbF91aW50OCBudW1iZXJbTUFYX0NDX0FERFJfTEVOICsgMV07CisgICAga2FsX2Jvb2wgaXNfZmFyX2VuZDsKKyAgICBrYWxfdWludDE2IGRpc2NfY2F1c2U7Cit9IGw0Y2NzbV9pbXNfY2FsbF9wcm9ncmVzc19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCBjYWxsX3N0YXR1czsKKworfSBsNGNjc21faW1zX2NhbGxfc3RhdHVzX2luZF9zdHJ1Y3Q7CisKKy8vaWYgbDRjY3NtX2NjX3NydmNjX3RyYW5zZmVyX2NuZl9zdHJ1Y3QubnVtX29mX2NhbGwgPSAwLCBtZWFucyBmYWlsLgordHlwZWRlZiBsNGNjc21fY2Nfc3J2Y2NfdHJhbnNmZXJfcmVxX3N0cnVjdCBsNGNjc21fY2Nfc3J2Y2NfdHJhbnNmZXJfY25mX3N0cnVjdDsKKworI2lmZGVmIF9fVEM3X19DU19fU1VQUE9SVF9fCisKK3R5cGVkZWYgZW51bSB7CisgICAgQ0FMTF9FWElTVCA9IDAsCisgICAgQ0FMTF9OT19FWElTVAorfSBjc19jYWxsX3N0YXR1c19lbnVtOworCit0eXBlZGVmIHN0cnVjdCB7CisJa2FsX3VpbnQ4IHJlZl9jb3VudDsKKwlrYWxfdWludDE2IG1zZ19sZW47CisJY3NfY2FsbF9zdGF0dXNfZW51bSBjYWxsX3N0YXR1czsKKwlrYWxfdWludDggaXNfbXRfY2FsbDsKK31sNGN1YXNfY3Nfc3RhdHVzX3JlcV9zdHJ1Y3Q7CisjZW5kaWYgCisKKyNlbmRpZiAKKworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGMycGhiX2VudW1zLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGMycGhiX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc0MTI3YwotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0YzJwaGJfZW51bXMuaApAQCAtMCwwICsxLDc4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKglsNGMycGhiX2VudW1zLmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgTVQ2MjA4CisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgVGhpcyBmaWxlIGlzIGludGVuZHMgZm9yIE5WUkFNLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqICBUaGlzIHByb2R1Y3QgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nIGEgcHJvdG9jb2wgc3RhY2sKKyogIGRldmVsb3BlZCBieSBTYXNrZW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgTGltaXRlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9MNEMyUEhCX0VOVU1TX0gKKyNkZWZpbmUgX0w0QzJQSEJfRU5VTVNfSAorCit0eXBlZGVmIGVudW0geworICAgUEhCX0JZTkFNRSwKKyAgIFBIQl9CWU5BTUVfRVhBQ1QsCisgICBQSEJfQllOVU1CRVIKK30gcGhiX3F1ZXJ5X21ldGhvZF9lbnVtOworCisKKyNkZWZpbmUgUEhCX1RZUEVfVE9UQUwgIFBIQl9UWVBFX0VOVU1fTUFYCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGMycGhiX3N0cnVjdC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjMnBoYl9zdHJ1Y3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzE4ZTg4Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjMnBoYl9zdHJ1Y3QuaApAQCAtMCwwICsxLDM3MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICoJbDRjMnBoYl9zdHJ1Y3QuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNQVVJCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgVGhpcyBmaWxlIGlzIGludGVuZHMgZm9yIHN0cnVjdHVyZSBkZWZpbml0aW9uIGJldHdlZW4gUEhCIGFuZCBMNEMuCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogIFRoaXMgcHJvZHVjdCBoYXMgYmVlbiBkZXZlbG9wZWQgdXNpbmcgYSBwcm90b2NvbCBzdGFjaworKiAgZGV2ZWxvcGVkIGJ5IFNhc2tlbiBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBMaW1pdGVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDIKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBGSUxFTkFNRSA6IGw0YzJwaGJfc3RydWN0LmgKKyAqICBTWU5PUFNJUyA6IEZ1bmN0aW9ucyBmb3IgZW5jb2RpbmcvZGVjb2RpbmcuCisgKgorICogICAgICAgICAgICAgICAgICAgICAgUiBFIFYgSSBTIEkgTyBOICAgIEggSSBTIFQgTyBSIFkKKyAqCisgKi8KKyNpZm5kZWYgX0w0QzJQSEJfU1RSVUNUX0gKKyNkZWZpbmUgX0w0QzJQSEJfU1RSVUNUX0gKKworLy8jaW5jbHVkZSAibDRjMnVlbV9zdHJ1Y3QuaCIKKyNpbmNsdWRlICJsNGNfYXV4X3N0cnVjdC5oIgorLy8jaW5jbHVkZSAia2FsX25vbl9zcGVjaWZpY19nZW5lcmFsX3R5cGVzLmgiCisvLyNpbmNsdWRlICJjb21tb25fbnZyYW1fZWRpdG9yX2RhdGFfaXRlbS5oIgorI2luY2x1ZGUgImw0YzJwaGJfZW51bXMuaCIKKworI2luY2x1ZGUgInBzX3B1YmxpY19lbnVtLmgiCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJudnJhbV9lZGl0b3JfZGF0YV9pdGVtLmgiCisjaW5jbHVkZSAibDRfbnZyYW1fZWRpdG9yLmgiCisjaW5jbHVkZSAicHNfcHVibGljX3N0cnVjdC5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfZGVmcy5oIgorCisjaW5jbHVkZSAic2ltX3BzX2VudW0uaCIKKworI2lmbmRlZiBOVlJBTV9QSEJfU0laRQorI2RlZmluZSBOVlJBTV9QSEJfU0laRSAoNTQrTUFYX1BTX05BTUVfU0laRSkKKyNlbmRpZgorI2lmbmRlZiBQSEJfRU1BSUxfU0laRQorI2RlZmluZSBQSEJfRU1BSUxfU0laRSA2NgorI2VuZGlmCisKKyNpZm5kZWYgUEhCX0FOUl9TSVpFCisjZGVmaW5lIFBIQl9BTlJfU0laRSA0OQorI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDE2IGluZGV4OyAvKiBpbmRleCBtYWludGFpbmVkIGJ5IFBIQiovCisgICAgcGhiX3N0b3JhZ2VfZW51bSBzdG9yYWdlOyAvKiBwaGJfc3RvcmFnZV9lbnVtOyBQaHlzaWNhbCBzdG9yYWdlKi8KKyAgICBwaGJfdHlwZV9lbnVtIHR5cGU7IC8qIGFtYW5kYSBhZGQgKi8KKyAgICBrYWxfdWludDggbnVtX2luZGV4OyAKKyAgICBrYWxfdWludDggYWFzX2lkOyAKKyAgICBrYWxfdWludDE2IHJlY29yZF9pbmRleDsgLyogUmVjb3JkIGluZGV4IGluIHBoeXNpY2FsIHN0b3JhZ2UqLworICAgIGw0X25hbWVfc3RydWN0IGFscGhhX2lkOyAvKiBBbHBoYSBpZGVudGlmaWVyKi8KKyAgICBsNF9hZGRyX2JjZF9zdHJ1Y3QgdGVsX251bWJlcjsgLyogVGVsZXBob25lIG51bWJlciovCisgICAga2FsX3VpbnQ4IGNhcF9jbmZfaWQ7IC8qIENhcGFiaWxpdHkvQ29uZmlndXJhdGlvbiBpZGVudGlmaWVyKi8KK30gcGhiX2VudHJ5X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50MTYgbm9fYXJyYXk7CisgICAga2FsX3VpbnQxNiBhcnJheV9zaXplOworICAgIHBoYl9lbnRyeV9zdHJ1Y3QgKmFycmF5OyAvKiBBcnJheSBvZiByYXcgZGF0YSBlbnRyeShpZXMpLCBlYWNoIGVsZW1lbnQgaXMgdHlwZSBvZiBwaGJfZW50cnlfc3RydWN0LiovCit9IGw0Y3BoYl9waGJfZW50cnlfYXJyYXlfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAga2FsX3VpbnQxNiByZWNvcmRfaW5kZXg7IC8qIFJlY29yZCBpbmRleCBpbiBwaHlzaWNhbCBzdG9yYWdlKi8KKyAgICBrYWxfdWludDE2IGFkbl9yZWNvcmRfaW5kZXg7IC8qIGFkbiByZWNvcmQgaW5kZXggKi8KKyAgICBrYWxfdWludDggYW5yX3R5cGU7IC8qIEFOUkEsIEFOUkIgb3IgQU5SQyAqLworICAgIGthbF91aW50OCBhYXNfaWQ7IC8qIGFuciBhbGhwaGEgaWQgaWRlbnRpZmllciAqLworICAgIGw0X2FkZHJfYmNkX3N0cnVjdCB0ZWxfbnVtYmVyOyAvKiBUZWxlcGhvbmUgbnVtYmVyKi8KKyAgICBrYWxfdWludDggY2FwX2NuZl9pZDsgLyogQ2FwYWJpbGl0eS9Db25maWd1cmF0aW9uIGlkZW50aWZpZXIqLworfSBwaGJfYW5yX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgc2ltX2RuX2VudW0gZG5fdHlwZTsgLyogRGlhbCBudW1iZXIgdHlwZSovCisgICAga2FsX2Jvb2wgaXNfZmRuX2NoYW5nZTsKK30gbDRjcGhiX3N0YXJ0dXBfcmVxX3N0cnVjdDsKKworLyogRUYgZGVzY3JpcHRvciAqLworCit0eXBlZGVmIHN0cnVjdCB7IAorICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHJlc3VsdDsgLyogcGhiX2Vycm5vX2VudW07IE9wZXJhdGlvbiByZXN1bHQqLworICAgIC8qIG9ic29sZXRlICovCisgICAga2FsX3VpbnQxNiBhZG5fc2l6ZTsKKyAgICBrYWxfdWludDE2IHBoYl9zaXplOworICAgIGthbF91aW50OCBhZG5fYWxwaGFfbGVuZ3RoOworICAgIGthbF91aW50OCBmZG5fYWxwaGFfbGVuZ3RoOworICAgIGthbF91aW50OCBiZG5fYWxwaGFfbGVuZ3RoOworICAgIGthbF91aW50OCBtc2lzZG5fYWxwaGFfbGVuZ3RoOworICAgIGthbF91aW50OCBlbWFpbF9sZW5ndGg7IAorICAgICAvKiBvYnNvbGV0ZSAqLworICAgIGthbF91aW50OCBpc19zaW1fcmVmcmVzaDsKKyAgICBsNGNfcGhiX2Rlc2Nfc3RydWN0IGRlc2NbUEhCX1RZUEVfVE9UQUxdOyAvKiBzdGFydCBmcm9tIChQSEJfTk9ORSArIDEpICovCit9IGw0Y3BoYl9zdGFydHVwX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGw0Y19waGJfZGVzY19zdHJ1Y3QgZGVzY1tQSEJfVFlQRV9UT1RBTF07Cit9IGw0Y3BoYl9zdGFydHVwX2JlZ2luX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7IC8qIFJlcXVpcmVkIGZvciBMNEMqLworICAgIHBoYl90eXBlX2VudW0gdHlwZTsgLyogcGhiX3R5cGVfZW51bTsgVHlwZSBvZiBwaG9uZSBudW1iZXIgZW50cmllcyovCisgICAgcGhiX3N0b3JhZ2VfZW51bSBzdG9yYWdlOyAvKiBTcGVjaWZpZXMgc3RvcmFnZSovCisgICAga2FsX3VpbnQ4IG51bV9pbmRleDsgCisgICAga2FsX3VpbnQxNiBpbmRleDsgLyogSW5kZXggb2YgcGhvbmUgbnVtYmVyIGVudHJpZXMqLworICAgIGthbF91aW50MTYgcmVjb3JkX2luZGV4OyAvKiBSZWNvcmQgaW5kZXggb2YgcGh5c2ljYWwgc3RvcmFnZSovCisgICAga2FsX3VpbnQxNiB0b3RhbDsgLyogTnVtYmVyIG9mIGVudHJpZXMgdG8gcmVhZCovCit9IGw0Y3BoYl9yZWFkX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7IC8qIFRoZSAnc3JjX2lkJyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXFlc3QgaXMgZm9yd2FyZGVkIGJhY2sgaW4gdGhpcyBmaWVsZC4qLworICAgIHBoYl9lcnJub19lbnVtIHJlc3VsdDsgLyogcGhiX2Vycm5vX2VudW07IE9wZXJhdGlvbiByZXN1bHQqLworICAgIGthbF91aW50MTYgY2F1c2U7CisgICAga2FsX3VpbnQxNiB0b3RhbDsgLyogTnVtYmVyIG9mIGVudHJpZXMqLworfSBsNGNwaGJfcmVhZF9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOyAvKiBSZXF1aXJlZCBmb3IgTDRDKi8KKyAgICBwaGJfdHlwZV9lbnVtIHR5cGU7IC8qIHBoYl90eXBlX2VudW07IFR5cGUgb2YgcGhvbmUgbnVtYmVyIGVudHJpZXMqLworICAgIGthbF91aW50MTYgdG90YWw7IC8qIE51bWJlciBvZiBlbnRpcmVzIHRvIHBpZ2d5YmFjayovCit9IGw0Y3BoYl93cml0ZV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOyAvKiBUaGUgYHNyY19pZCcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcmVxZXN0IGlzIGZvcndhcmRlZCBiYWNrIGluIHRoaXMgZmllbGQuKi8KKyAgICBwaGJfZXJybm9fZW51bSByZXN1bHQ7IC8qIHBoYl9lcnJub19lbnVtOyBPcGVyYXRpb24gcmVzdWx0Ki8KKyAgICBrYWxfdWludDE2IGNhdXNlOworICAgIGthbF91aW50MTYgdG90YWw7IC8qIE51bWJlciBvZiBlbnRyaWVzKi8KKyAgICBrYWxfdWludDE2IG9sZF9pbmRleDsKK30gbDRjcGhiX3dyaXRlX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7IC8qIFJlcXVpcmVkIGZvciBMNEMqLworICAgIHBoYl90eXBlX2VudW0gdHlwZTsgLyogcGhiX3R5cGVfZW51bTsgVHlwZSBvZiBwaG9uZSBudW1iZXIgZW50cmllcyovCisgICAga2FsX3VpbnQ4IG51bV9pbmRleDsKKyAgICBwaGJfc3RvcmFnZV9lbnVtIHN0b3JhZ2U7CisgICAga2FsX3VpbnQ4IHRvdGFsX3BpZ2d5YmFjazsgLyogTnVtYmVyIG9mIGVudGlyZXMgdG8gcGlnZ3liYWNrKi8KKyAgICBrYWxfdWludDE2IGluZGV4OyAvKiBJbmRleCBvZiBwaG9uZSBudW1iZXIgZW50cmllcyovCisgICAga2FsX3VpbnQxNiB0b3RhbDsgLyogTnVtYmVyIG9mIGVudHJpZXMqLworICAgIGthbF91aW50MTYgcmVjb3JkX2luZGV4OworfSBsNGNwaGJfZGVsZXRlX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7IC8qIFRoZSAnc3JjX2lkJyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXFlc3QgaXMgZm9yd2FyZGVkIGJhY2sgaW4gdGhpcyBmaWVsZC4qLworICAgIHBoYl9lcnJub19lbnVtIHJlc3VsdDsgLyogcGhiX2Vycm5vX2VudW07IE9wZXJhdGlvbiByZXN1bHQqLworICAgIGthbF91aW50MTYgY2F1c2U7CisgICAga2FsX3VpbnQxNiB0b3RhbDsgLyogTnVtYmVyIG9mIGVudHJpZXMqLworICAgIHBoYl90eXBlX2VudW0gdHlwZTsgICAgCisgICAga2FsX3VpbnQxNiBvbGRfaW5kZXg7Cit9IGw0Y3BoYl9kZWxldGVfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsgLyogUmVxdWlyZWQgZm9yIEw0QyovCisgICAga2FsX3VpbnQxNiB0b3RhbDsgLyogTnVtYmVyIG9mIGVudGlyZXMgdG8gcGlnZ3liYWNrKi8KKyAgICBwaGJfdHlwZV9lbnVtIHR5cGU7IC8qIHBoYl90eXBlX2VudW07IFR5cGUgb2YgcGhvbmUgbnVtYmVyIGVudHJpZXMqLworICAgIHBoYl9xdWVyeV9tZXRob2RfZW51bSBwYXR0ZXJuX3RhZzsKKyAgICB1bmlvbiB7CisgICAgICAgIGw0X25hbWVfc3RydWN0IGFscGhhX2lkOworICAgICAgICBsNF9hZGRyX2JjZF9zdHJ1Y3QgdGVsX251bWJlcjsKKyAgICB9IHBhdHRlcm5fdmFsdWU7Cit9IGw0Y3BoYl9zZWFyY2hfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsgLyogVGhlICdzcmNfaWQnIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlcWVzdCBpcyBmb3J3YXJkZWQgYmFjayBpbiB0aGlzIGZpZWxkLiovCisgICAgcGhiX2Vycm5vX2VudW0gcmVzdWx0OyAvKiBwaGJfZXJybm9fZW51bTsgT3BlcmF0aW9uIHJlc3VsdCovCisgICAga2FsX3VpbnQxNiBjYXVzZTsKKyAgICBrYWxfdWludDE2IHRvdGFsOyAvKiBOdW1iZXIgb2YgZW50cmllcyovCit9IGw0Y3BoYl9zZWFyY2hfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsgLyogUmVxdWlyZWQgZm9yIEw0QyovCisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IHRlbF9udW1iZXI7IC8qIFRoZSB0ZWxlcGhvbmUgbnVtYmVyIHRvIGJlIGFwcHJvdmVkKi8KKyAgICBrYWxfdWludDggaXNfcmV0cmlldmU7IC8qIFdoZXRoZXIgcmV0cmlldmluZyB0aGUgaGl0IGVudHJ5IG9mIHRoZSBnaXZlbiBudW1iZXIgaXMgcmVxdWlyZWQqLworICAgIGw0Y19waGJfYXBwcm92YWxfdHlwZV9lbnVtIGFwcHJvdmFsX3R5cGU7IC8qIGw0Y19waGJfYXBwcm92YWxfdHlwZV9lbnVtICovCit9IGw0Y3BoYl9hcHByb3ZlX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7IC8qIFRoZSBgc3JjX2lkJyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXFlc3QgaXMgZm9yd2FyZGVkIGJhY2sgaW4gdGhpcyBmaWVsZC4qLworICAgIHBoYl9lcnJub19lbnVtIHJlc3VsdDsgLyogcGhiX2Vycm5vX2VudW07IE9wZXJhdGlvbiByZXN1bHQqLworICAgIGthbF91aW50MTYgY2F1c2U7CisgICAgcGhiX3R5cGVfZW51bSB0eXBlOyAvKiBwaGJfdHlwZV9lbnVtOyBUeXBlIG9mIHBob25lIG51bWJlciBlbnRyaWVzKi8KKyAgICBrYWxfdWludDggZXNjOworfSBsNGNwaGJfYXBwcm92ZV9jbmZfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGw0X2FkZHJfYmNkX3N0cnVjdCAgIG51bWJlcjsKK30gbDRjcGhiX2Zkbl9nZXRfbmFtZV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBwaGJfZXJybm9fZW51bSByZXN1bHQ7CisgICAga2FsX3VpbnQxNiBjYXVzZTsKKyAgICBsNF9uYW1lX3N0cnVjdCBhbHBoYV9pZDsKK30gbDRjcGhiX2Zkbl9nZXRfbmFtZV9jbmZfc3RydWN0OworCisvKiBfX1JFTDVfXyAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCBjYXRlZ29yeTsKKyAgICBsNF9hZGRyX2JjZF9zdHJ1Y3QgdGVsX251bWJlcjsKK31sNF9lY2NfbnVtYmVyX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IG5vX2VjYzsKKyAgICBsNF9lY2NfbnVtYmVyX3N0cnVjdCBlY2NfbGlzdFsxNl07Cit9bDRjcGhiX3VwZGF0ZV9ud19lY2NfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCBtYXhfbmFtZV9sZW47CisgICAga2FsX3VpbnQ4IG1heF9udW1fbGVuOworICAgIGthbF91aW50MTYgZnJlZV9udW07CisgICAga2FsX3VpbnQxNiB0b3RhbF9udW07CisgICAga2FsX3VpbnQxNiBleHRfZnJlZV9udW07ICAgIAorfWw0Y3BoYl9maWxlX2luZm9fc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBwaGJfdHlwZV9lbnVtIHR5cGU7CisgICAga2FsX3VpbnQxNiByZWNvcmRfaW5kZXg7CisgICAga2FsX3VpbnQ4IG9jY3VycmVuY2U7Cit9IGw0Y3BoYl9yZWFkX3VzaW1fcmVxX3N0cnVjdDsKKwordHlwZWRlZiBsNGNwaGJfcmVhZF91c2ltX3JlcV9zdHJ1Y3QgbDRjcGhiX3dyaXRlX3VzaW1fcmVxX3N0cnVjdDsKK3R5cGVkZWYgbDRjcGhiX3JlYWRfdXNpbV9yZXFfc3RydWN0IGw0Y3BoYl9kZWxldGVfdXNpbV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBwaGJfZXJybm9fZW51bSByZXN1bHQ7CisgICAga2FsX3VpbnQxNiBjYXVzZTsKKyAgICBwaGJfdHlwZV9lbnVtIHR5cGU7CisgICAga2FsX3VpbnQxNiByZWNvcmRfaW5kZXg7CisgICAga2FsX3VpbnQ4IG9jY3VycmVuY2U7Cit9IGw0Y3BoYl9yZWFkX3VzaW1fY25mX3N0cnVjdDsKKwordHlwZWRlZiBsNGNwaGJfcmVhZF91c2ltX2NuZl9zdHJ1Y3QgbDRjcGhiX3dyaXRlX3VzaW1fY25mX3N0cnVjdDsKK3R5cGVkZWYgbDRjcGhiX3JlYWRfdXNpbV9jbmZfc3RydWN0IGw0Y3BoYl9kZWxldGVfdXNpbV9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggZmlsZV9iaXRtYXBbUEhCX1RZUEVfVE9UQUxdOworICAgIGthbF91aW50MTYgcmVjb3JkX2luZGV4OworfSBsNGNwaGJfY2hlY2tfd3JpdGVfdXNpbV9lbnRyeV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBwaGJfZXJybm9fZW51bSByZXN1bHQ7CisgICAga2FsX3VpbnQ4IG9jY3VycmVuY2U7CisgICAga2FsX3VpbnQxNiByZWNvcmRfaW5kZXg7Cit9IGw0Y3BoYl9jaGVja193cml0ZV91c2ltX2VudHJ5X2NuZl9zdHJ1Y3Q7CisKKworLy9NU0dfSURfTDRDX1BIQl9VVF9SRVEKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9waGJfdXNlcjsKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgICAgIHBoYl91c2VyOworCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfcGhiX2N1cnJlbnRfYWN0aW9uOworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICAgICAgcGhiX2N1cnJlbnRfYWN0aW9uOworCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfcGhiX3JlYWR5X2ZsYWc7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICBwaGJfcmVhZHlfZmxhZzsKKyAgICAKKyAgICAvL2w0X251bWJlcl9zdHJ1Y3QgICAgICAgICAgICAgICAgbDRjcGhiX2FwcHJvdmVfcmVxX3N0cmluZzsKKworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX3BoYl91cGRhdGVfZnJvbV9jcnNtOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgcGhiX3VwZGF0ZV9mcm9tX2Nyc207IC8vIHVwZGF0ZSBQSEIgcmVjb3JkIGlmIENSU00gaXMgdXNlZAorCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfcGhiX2FwcHJvdmVfdXNzZDsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIHBoYl9hcHByb3ZlX3Vzc2Q7CisKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9pc19mZG5fY2hhbmdlOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgaXNfZmRuX2NoYW5nZTsKKworfWw0Y19waGJfdXRfcmVxX3N0cnVjdDsKKworCisjZW5kaWYKKworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGMyc21zYWxfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGMyc21zYWxfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg2MTBlYgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0YzJzbXNhbF9zdHJ1Y3QuaApAQCAtMCwwICsxLDEyNDIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBsNGMyc21zYWxfc3RydWN0LmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgTUFVSQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogICAgICAgICAgICAgSElTVE9SWQorICogQmVsb3cgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVXBwZXIgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqICBUaGlzIHByb2R1Y3QgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nIGEgcHJvdG9jb2wgc3RhY2sKKyogIGRldmVsb3BlZCBieSBTYXNrZW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgTGltaXRlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDAyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgRklMRU5BTUUgOiBsNGMyc21zYWxfc3RydWN0LmgKKyAqICBTWU5PUFNJUyA6IEZ1bmN0aW9ucyBmb3IgZW5jb2RpbmcvZGVjb2RpbmcuCisgKgorICogICAgICAgICAgICAgICAgICAgICAgUiBFIFYgSSBTIEkgTyBOICAgIEggSSBTIFQgTyBSIFkKKyAqCisgKi8KKyNpZm5kZWYgX0w0QzJTTVNBTF9TVFJVQ1RfSAorI2RlZmluZSBfTDRDMlNNU0FMX1NUUlVDVF9ICisKKyNpbmNsdWRlICJwc19wdWJsaWNfc3RydWN0LmgiCisvLyNpbmNsdWRlICJsNGNfYXV4X3N0cnVjdC5oIgorLy8jaW5jbHVkZSAia2FsX25vbl9zcGVjaWZpY19nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKyNpbmNsdWRlICJpcmF0X2NvbW1vbl9lbnVtcy5oIgorI2luY2x1ZGUgImwzX2luY19lbnVtcy5oIgorI2luY2x1ZGUgInNtc2FsX2w0Y19lbnVtLmgiCisKKwordHlwZWRlZiBzdHJ1Y3QgCit7CisJa2FsX3VpbnQ4ICBmbzsKKwlrYWxfdWludDggIHBpZDsKKwlrYWxfdWludDggIGRjczsKKwlrYWxfdWludDggIG9yaV9kY3M7CisKKwlrYWxfdWludDggIHZwX2Zvcm1hdDsKKwlrYWxfdWludDggIHZwOworCisJa2FsX3VpbnQxNiBub19tc2dfZGF0YTsKKwlsNF9hZGRyX2JjZF9zdHJ1Y3Qgc2NhOworCWw0X2FkZHJfYmNkX3N0cnVjdCBkYTsKKworfSBzbXNhbF9zdWJtaXRfbXNnX2hkcl9zdHJ1Y3Q7CisvKiB0byByZXBsYWNlIHNtc2FsX3N1Ym1pdF9tc2dfc3RydWN0ICovCisKK3R5cGVkZWYgc3RydWN0IAoreworCWthbF91aW50OCBmbzsKKwlrYWxfdWludDggcGlkOworCWthbF91aW50OCBkY3M7CisJa2FsX3VpbnQ4IG9yaV9kY3M7CisKKwlrYWxfdWludDggcGFkaW5nOworCWthbF91aW50OCBzY3RzWzddOworCisJa2FsX3VpbnQxNiBub19tc2dfZGF0YTsKKwlsNF9hZGRyX2JjZF9zdHJ1Y3Qgc2NhOworCWw0X2FkZHJfYmNkX3N0cnVjdCBvYTsKKworfSBzbXNhbF9kZWxpdmVyX21zZ19oZHJfc3RydWN0OworLyogdG8gcmVwbGFjZSBzbXNhbF9kZWxpdmVyX21zZ19zdHJ1Y3QgKi8KKwordHlwZWRlZiBzdHJ1Y3QgCit7CisJa2FsX3VpbnQ4IGZvOworCWthbF91aW50OCBwaWQ7CisJa2FsX3VpbnQ4IGRjczsKKwlrYWxfdWludDggb3JpX2RjczsKKworCWthbF91aW50OCBtcjsKKwlrYWxfdWludDggc2N0c1s3XTsKKworCWthbF91aW50MTYgbm9fbXNnX2RhdGE7CisJbDRfYWRkcl9iY2Rfc3RydWN0IHJhOworCWthbF91aW50OCBkdFs3XTsKKwlrYWxfdWludDggc3Q7CisKK30gc21zYWxfc3RhdHVzX3JlcG9ydF9tc2dfaGRyX3N0cnVjdDsKKy8qIHRvIHJlcGxhY2Ugc21zYWxfc3RhdHVzX3JlcG9ydF9tc2dfc3RydWN0OyAqLworCit0eXBlZGVmIHN0cnVjdCAKK3sKKwlrYWxfdWludDggZm87CisJa2FsX3VpbnQ4IGN0OworCWthbF91aW50OCBtbjsKKwlrYWxfdWludDggcGlkOworCWthbF91aW50MTYgbm9fbXNnX2RhdGE7CisJbDRfYWRkcl9iY2Rfc3RydWN0IGRhOworfSBzbXNhbF9jb21tYW5kX21zZ19oZHJfc3RydWN0OworLyogdG8gcmVwbGFjZSBzbXNhbF9jb21tYW5kX21zZ19zdHJ1Y3Q7ICovCisKK3R5cGVkZWYgc3RydWN0IAoreworCWthbF91aW50OCBwcm9maWxlX25vX3RhZzsKKwlrYWxfdWludDggcHJvZmlsZV9ubzsKKwlrYWxfdWludDE2ICBwYXJhX2luZDsKKwlrYWxfdWludDggcGlkOworCWthbF91aW50OCBkY3M7CisJa2FsX3VpbnQ4IHZwOworCWthbF91aW50OCB1ZGhpOworICAgICAgICBrYWxfdWludDggICB0cF9zcnI7CisgICAgICAgIGthbF91aW50OCAgIHRwX3JwOworCWthbF91aW50OCBkYV90YWc7CisJbDRfYWRkcl9iY2Rfc3RydWN0IGRhOworCWw0X2FkZHJfYmNkX3N0cnVjdCBzY19hZGRyOworfSBzbXNhbF9zZW5kX21zZ19yZXFfaGRyX3N0cnVjdDsKKy8qIHRvIHJlcGxhY2Ugc21zYWxfc2VuZF9tc2dfcmVxX3N0cnVjdCAqLworCit0eXBlZGVmIHN0cnVjdCAKK3sKKyAgICBrYWxfdWludDE2ICBwYXJhX2luZDsKKyAgICBrYWxfdWludDggICB0cF9tbXM7CisgICAga2FsX3VpbnQ4ICAgdHBfcnA7CisgICAga2FsX3VpbnQ4ICAgdHBfdWRoaTsKKyAgICBrYWxfdWludDggICB0cF9zcmk7CisKKyAgICBrYWxfdWludDggICBwaWQ7CisgICAga2FsX3VpbnQ4ICAgZGNzOworICAgIGthbF91aW50OCAgIHRwX3NjdHNbN107CisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IG9hOworICAgIGw0X2FkZHJfYmNkX3N0cnVjdCBzY19hZGRyOworfSBzbXNhbF9yZWNlaXZlX21zZ19oZHJfc3RydWN0OworCit0eXBlZGVmIHVuaW9uIHsKKyAgIHNtc2FsX2RlbGl2ZXJfbXNnX2hkcl9zdHJ1Y3QgICAgICAgZGVsaXZlcjsKKyAgIHNtc2FsX3N1Ym1pdF9tc2dfaGRyX3N0cnVjdCAgICAgICAgc3VibWl0OworICAgc21zYWxfc3RhdHVzX3JlcG9ydF9tc2dfaGRyX3N0cnVjdCBzdGF0dXNfcmVwOworfSBzbXNhbF9oZWFkZXJfaW5mb191bmlvbjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCBtdDsgLyogTVQgU2VydmljZSBNb2RlKi8KKyAgICBrYWxfdWludDggbW87IC8qIE1PIFNlcnZpY2UgTW9kZSovCisgICAga2FsX3VpbnQ4IGJtOyAvKiBCcm9hZGNhc3QgTWVzc2FnZSBTZXJ2aWNlIE1vZGUqLworfSBzbXNhbF9zZXJ2aWNlX21vZGVfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAga2FsX3VpbnQ4IG1vZGU7IC8qIEJ1ZmZlcmluZyBNb2RlKi8KKyAgICBrYWxfdWludDggbXQ7IC8qIE1UIE1lc3NhZ2UgUm91dGUgTW9kZSovCisgICAga2FsX3VpbnQ4IGRzOyAvKiBTdGF0dXMgUmVwb3J0IFJvdXRlIE1vZGUqLworICAgIGthbF91aW50OCBibTsgLyogQnJvYWRjYXN0IE1lc3NhZ2UgUm91dGUgTW9kZSovCit9IHNtc2FsX210X21zZ19yb3V0ZV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDggbWVtMTsgLyogU3RvcmFnZSB0eXBlIGZvciBNZW1vcnkxKi8KKyAgICBrYWxfdWludDggbWVtMjsgLyogU3RvcmFnZSB0eXBlIGZvciBNZW1vcnkyKi8KKyAgICBrYWxfdWludDggbWVtMzsgLyogU3RvcmFnZSB0eXBlIGZvciBNZW1vcnkzKi8KK30gc21zYWxfc2VsZWN0X21lbV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBsNF9uYW1lX3N0cnVjdCBuYW1lOworICAgIGw0X2FkZHJfYmNkX3N0cnVjdCBhZGRyOworICAgIGthbF91aW50OCBjYXBhYmlsaXR5X2lkOworICAgIGthbF91aW50OCBleHRlbnNpb25faWQ7Cit9IHNtc2FsX21haWxib3hfYWRkcl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7IC8qIFNvdXJjZSBDb2RlKi8KKyAgICBrYWxfdWludDggaXNfc2ltX2NoYW5nZTsgLyogVFJVRTogaWYgbGFzdCBJTVNJIGNoYW5nZWQgKi8KKyAgICBrYWxfdWludDggaW5pdF90eXBlOworfSBsNGNzbXNhbF9pbml0X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgIGw0Y3Ntc2FsX2luaXRfcmVxX3N0cnVjdCBsNGNzbXNhbF9pbml0X21lX3Ntc19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKK30gbDRjc21zYWxfZGVfaW5pdF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF91aW50OCAgc3JjX2lkOyAvKiBTb3VyY2UgQ29kZSovCisgICAga2FsX3VpbnQ4ICByZXFfdHlwZTsgLyogUmVxdWVzdCBUeXBlKi8KKyAgICBrYWxfdWludDggIHN0YXR1czsgLyogU3RhdHVzKi8KKyAgICBrYWxfdWludDggIGNoYW5nZV9zdGF0dXM7IC8qIGNoYW5nZSBzdGF0dXMqLworICAgIGthbF91aW50MTYgaW5kZXg7IC8qIE1lc3NhZ2UgSW5kZXgqLworfSBsNGNzbXNhbF9yZWFkX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IGRlc3Rfbm87IC8qIFNwZWNpZnkgc2V0IHRhcmdldCwgcHJvZmlsZV9ubyBvciBsaW5lX25vKi8KKyAgICBrYWxfdWludDE2IHBhcmFfaW5kOyAvKiBTcGVjaWZ5IHdoaWNoIHBhcmFtZXRlcnMgc2hhbGwgYmUgc2V0Ki8KKyAgICBrYWxfdWludDggZm87CisgICAga2FsX3VpbnQ4IHN1cHBvcnRfY29uY2F0OworICAgIGthbF91aW50OCBkaXJlY3RfZGlzcGxheTsKKyAgICBrYWxfdWludDggYmVhcmVyX3Nlcml2Y2U7CisgICAgc21zYWxfc2VsZWN0X21lbV9zdHJ1Y3QgcHJlZmVyX21lbTsKKyAgICBzbXNhbF9tYWlsYm94X2FkZHJfc3RydWN0IG1haWxib3hfYWRkcjsKKyAgICBrYWxfdWludDggdnA7CisgICAga2FsX3VpbnQ4IHBpZDsKKyAgICBrYWxfdWludDggZGNzOworICAgIGw0X2FkZHJfYmNkX3N0cnVjdCBzY2E7CisgICAgbDRfbmFtZV9zdHJ1Y3QgcHJvZmlsZV9uYW1lOworICAgIGthbF91aW50OCBjYmNoX3JlcTsKKyAgICBrYWxfYm9vbCAgaXNfYWxsX2xhbmd1YWdlX29uOworfSBsNGNzbXNhbF9zZXRfcGFyYW1ldGVyX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgc3JjX2lkOworICAgIGthbF91aW50OCAgcHJvZmlsZV9ubzsgICAgICAgIC8vaWYgcGFyYV9pbmQ9U01TQUxfUEFSQV9TQVZFX1BST0ZJTEUsIG9ubHkgdGhpcyBmaWVsZCBpcyBhdmFpbGFibGUuIChGb3IgQVQgb25seSkKKyAgICBrYWxfdWludDE2IHBhcmFfaW5kOyAgICAgICAgIC8qIFNwZWNpZnkgd2hpY2ggcGFyYW1ldGVycyBzaGFsbCBiZSBzZXQqLworICAgIGthbF91aW50OCAgcGlkOyAgICAgICAgICAgICAgIC8vU01TQUxfUEFSQV9QSUQKKyAgICBrYWxfdWludDggIGRjczsgICAgICAgICAgICAgICAvL1NNU0FMX1BBUkFfRENTCisgICAga2FsX3VpbnQ4ICB2cDsgICAgICAgICAgICAgICAgLy9TTVNBTF9QQVJBX1ZQCisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IHNjYTsgICAgICAgLy9TTVNBTF9QQVJBX1NDQQorICAgIGw0X25hbWVfc3RydWN0IHByb2ZpbGVfbmFtZTsgIC8vU01TQUxfUEFSQV9QUk9GSUxFX05BTUUKK30gbDRjc21zYWxfc2V0X3Byb2ZpbGVfcGFyYV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBrYWxfdWludDggIGRlc3Rfbm87ICAvKiBpbmRleCBvZiBtYWlsYm94IGxpc3QgYmFzZWQgb24gc21zYWxfZ2V0X21haWxib3hfYWRkciAqLworICAgIGthbF91aW50MTYgcGFyYV9pbmQ7IC8qIFNwZWNpZnkgd2hpY2ggcGFyYW1ldGVycyBzaGFsbCBiZSBzZXQqLworICAgIGthbF91aW50OCAgZm87ICAgICAgICAgICAgICAgICAvL1NNU0FMX0NPTV9QQVJBX0ZPCisgICAga2FsX3VpbnQ4ICBiZWFyZXJfc2VyaXZjZTsgICAgIC8vU01TQUxfQ09NX1BBUkFfQkVBUkVSCisgICAga2FsX3VpbnQ4ICBzdGF0dXNfcmVwb3J0OyAgICAgIC8vU01TQUxfQ09NX1NUQVRVU19SRVAgCisgICAga2FsX3VpbnQ4ICByZXBseV9wYXRoOyAgICAgICAgIC8vU01TQUxfQ09NX1JFUExZX1BBVEggCisgICAga2FsX3VpbnQ4ICBjYmNoX3JlcTsgICAgICAgICAgIC8vU01TQUxfQ09NX0NCQ0hfUkVRCisgICAga2FsX3VpbnQ4ICBpc19hbGxfbGFuZ3VhZ2Vfb247IC8vU01TQUxfQ09NX1BBUkFfQUxMX0NCX0xBTkcKKyAgICBzbXNhbF9zZWxlY3RfbWVtX3N0cnVjdCBwcmVmZXJfbWVtOyAgICAgLy9TTVNBTF9DT01fUEFSQV9QUkVGRVJfTUVNCisgICAgc21zYWxfbWFpbGJveF9hZGRyX3N0cnVjdCBtYWlsYm94X2FkZHI7IC8vU01TQUxfQ09NX1BBUkFfTUFJTEJPWF9BRERSCisgICAga2FsX3VpbnQ4ICBtc3Bfbm87CisgICAgc21zYWxfbWJpX3N0cnVjdCAgbWJpOworfSBsNGNzbXNhbF9zZXRfY29tbW9uX3BhcmFfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4CXNyY19pZDsKKyAgICBrYWxfdWludDgJbGluZV9ubzsgICAgICAJLyogbWVzc2FnZSB3YWl0aW5nIGxpbmUgbm8gKi8KKyAgICBrYWxfdWludDgJd2FpdGluZ19udW07CS8qIG1lc3NhZ2Ugd2FpdGluZyBudW1iZXIgKi8KKyAgICBrYWxfdWludDgJaW5kX3R5cGU7CS8qIG1lc3NhZ2Ugd2FpdGluZyB0eXBlICovCit9bDRjc21zYWxfc2V0X21zZ193YWl0aW5nX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICBzcmNfaWQ7CisgICAga2FsX3VpbnQ4ICByZXFfdHlwZTsKKyAgICBrYWxfdWludDggIHNlcV9udW07CisgICAga2FsX3VpbnQ4ICBmZG5fY2hlY2s7ICAgLyogdHJ1ZTogRkROIGVuYWJsZSAqLworICAgIGthbF91aW50OCAgbW1zX21vZGU7IAorICAgIGthbF91aW50MTYgcmVwbHlfaW5kZXg7CisgICAga2FsX3VpbnQxNiBtZXNzYWdlX2xlbjsgLyogTGVuZ3RoIG9mIE1lc3NhZ2UqLworICAgIHVuaW9uIHsKKyAgICAgICBzbXNhbF9zZW5kX21zZ19yZXFfaGRyX3N0cnVjdCAgICAgIHN1Ym1pdDsKKyAgICAgICBzbXNhbF9jb21tYW5kX21zZ19oZHJfc3RydWN0ICAgICAgIGNvbW1hbmQ7CisgICAgfSBtc2dfaGVhZGVyOyAgCit9IGw0Y3Ntc2FsX3NlbmRfcmVxX3N0cnVjdCwgbDRjc21zYWxfaW1zX3NlbmRfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBzbXNfYWRkcl9zdHJ1Y3Qgc2NfYWRkcjsgLyogc2VydmljZSBjZW50cmUgYWRkcmVzcyovCit9IGw0Y3Ntc2FsX2ltc19zbXNfZGVsaXZlcl9yZXFfc3RydWN0LCBsNGNzbXNhbF9pbXNfc21zX3N0YXR1c19yZXFfc3RydWN0LGw0Y3Ntc2FsX2ltc19yZWN2X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICBzcmNfaWQ7CisgICAga2FsX3VpbnQ4ICByZXN1bHQ7ICAgICAgLyogUmVzdWx0IENvZGUqLworICAgIGthbF91aW50MTYgZXJyb3JfY2F1c2U7IC8qIEVycm9yIENhdXNlKi8KKyAgICBrYWxfdWludDggIG1yOyAgICAgICAgICAvKiBNZXNzYWdlIHJlZmVyZW5jZSovCisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IHNjX2FkZHI7CisKK30gbDRjc21zYWxfaW1zX3NlbmRfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBrYWxfdWludDggIHJlc3VsdDsgICAgICAvKiBSZXN1bHQgQ29kZSovCisgICAga2FsX3VpbnQxNiBlcnJvcl9jYXVzZTsgLyogRXJyb3IgQ2F1c2UqLworCit9IGw0Y3Ntc2FsX2ltc19yZWN2X2NuZl9zdHJ1Y3QsIGw0Y3Ntc2FsX2ltc19zbXNfZGVsaXZlcl9jbmZfc3RydWN0LCBsNGNzbXNhbF9pbXNfc21zX3N0YXR1c19jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF91aW50OCBzcmNfaWQ7ICAgLyogaWRlbnRpZnkgYmFja2dyb3VuZCBzZW5kaW5nIG9yIGVsc2UgKi8KK30gbDRjc21zYWxfaW1zX3NlbmRfc21tYV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF91aW50OCBtcjsgICAgICAgLyogTWVzc2FnZSBSZWZlcmVuY2UqLworICAgIGthbF91aW50OCBzcmNfaWQ7ICAgLyogaWRlbnRpZnkgYmFja2dyb3VuZCBzZW5kaW5nIG9yIGVsc2UgKi8KK30gbDRjc21zYWxfaW1zX3NlbmRfc21tYV9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF91aW50OCBzbW1hOyAgIC8qIDA6YWJvcnQsIDE6c2VuZCBzbW1hICovCit9IGw0Y3Ntc2FsX2ltc19zZW5kX3NtbWFfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDggcmVzdWx0OyAvKiBSZXN1bHQgKi8KK30gbDRjc21zYWxfaW1zX3NlbmRfc21tYV9yZXN1bHRfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsJCisgICAga2FsX3VpbnQ4IHNlcV9udW07CQorfSBsNGNzbXNhbF9zZW5kX2Fib3J0X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBrYWxfdWludDggIHNlcV9udW07CisgICAga2FsX3VpbnQ4ICBmZG5fY2hlY2s7IC8vdHJ1ZTogRkROIGVuYWJsZQorICAgIGthbF91aW50MTYgaW5kZXg7CisgICAga2FsX3VpbnQxNiByZXBseV9pbmRleDsKKyAgICBrYWxfdWludDggIGRhX3RhZzsgLyogSW5kaWNhdGUgd2hldGhlciB0byB1c2UgZGEgYXMgZGVzdGluYXRpb24gYWRkcmVzcyovCisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IGRhOyAvKiBEZXN0aW5hdGlvbiBBZGRyZXNzKi8KKyAgICBrYWxfdWludDggcHJvZmlsZV9ub190YWc7CisgICAga2FsX3VpbnQ4IHByb2ZpbGVfbm87CisJI2lmZGVmIF9fSU1TX1NVUFBPUlRfXworICAgIHNtc19hZGRyX3N0cnVjdCBzY2E7CisgICAga2FsX2Jvb2wgaXNfcmV0cnk7CisJa2FsX3VpbnQ4IG1zZ19yZWY7CisgICAgc21zYWxfZG9tYWluX2VudW0gZG9tYWluOworCSNlbmRpZgorfSBsNGNzbXNhbF9zZW5kX2Zyb21fc3RvcmFnZV9yZXFfc3RydWN0LCBsNGNzbXNhbF9pbXNfc2VuZF9mcm9tX3N0b3JhZ2VfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBrYWxfdWludDggIHN0YXR1czsKKyAgICBrYWxfdWludDggc2N0c1s3XTsKKyAgICBrYWxfdWludDE2IHJlcGxhY2VfaW5kZXg7CisgICAga2FsX3VpbnQxNiBtZXNzYWdlX2xlbjsgLyogTGVuZ3RoIG9mIE1lc3NhZ2UqLworICAgIHVuaW9ueworICAgICAgICBzbXNhbF9yZWNlaXZlX21zZ19oZHJfc3RydWN0IG10X3Ntc19oZHI7CisgICAgICAgIHNtc2FsX3NlbmRfbXNnX3JlcV9oZHJfc3RydWN0IG1vX3Ntc19oZHI7CisgICAgfWhkcjsKK30gbDRjc21zYWxfd3JpdGVfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggIGRlbF9mbGFnOworICAgIGthbF91aW50MTYgaW5kZXg7CisgICAga2FsX3VpbnQ4ICBtc2dfYml0bWFwWzQ4MF07IC8qIGxlbmd0aCBpcyBub3QgZmluYWwgdmFsdWUgKi8KKyAgICAKK30gbDRjc21zYWxfZGVsZXRlX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgc3JjX2lkOworICAgIGthbF91aW50OCBzZXFfbnVtOyAKKyAgICBrYWxfdWludDggIGlzX3Ntc19wYWNrZWRfcmVxdWlyZWQ7CisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IHNjX2FkZHI7CisgICAga2FsX3VpbnQ4ICB0cGR1X2xlbmd0aDsKKyAgICBrYWxfdWludDggIHRwZHVbMTc1XTsKK30gbDRjc21zYWxfc2F0X3NlbmRfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggcmVzdWx0OyAvKiBSZXN1bHQgQ29kZSovCit9IGw0Y3Ntc2FsX2luaXRfY25mX3N0cnVjdDsKKwordHlwZWRlZiAgbDRjc21zYWxfaW5pdF9jbmZfc3RydWN0IGw0Y3Ntc2FsX2luaXRfbWVfc21zX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IHJlc3VsdDsgLyogUmVzdWx0IENvZGUqLworfSBsNGNzbXNhbF9kZV9pbml0X2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBsaW5lX25vOyAvKiBOdW1iZXIgb2YgTGluZSovCisgICAga2FsX3VpbnQ4ICBtc3Bfbm87CisgICAga2FsX3VpbnQ4IHdhaXRpbmdfbnVtOworICAgIGthbF91aW50OCBpbmRfdHlwZTsKKyAgICBrYWxfYm9vbCAgaXNfc2hvd19udW07CisgICAga2FsX2Jvb2wgIGlzX2NsZWFyOworICAgIGthbF9ib29sICBpc19mcm9tX3N0b3JhZ2U7CisKKyAgICBrYWxfdWludDggZXh0X2luZGljYXRvcjsgIC8vIGluZGljYXRlIGhvdyBtYW55ICJtZXNzYWdlIHdhaXRpbmciIGZvbGxvd3MKKyAgICBsNGNzbXNhbF9tc2dfd2FpdGluZ19pbmRfZXh0X3N0cnVjdCBtc2dfd2FpdGluZ1s1XTsKK30gbDRjc21zYWxfbXNnX3dhaXRpbmdfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGRlc3Q7IC8qIERlc3RpbmF0aW9uIENvZGUqLworICAgIGthbF91aW50OCBzdG9yYWdlX3R5cGU7CisgICAga2FsX3VpbnQxNiBpbmRleDsgLyogTWVzc2FnZSBJbmRleCovCisgICAga2FsX3VpbnQxNiBkZXN0X3BvcnQ7IAorICAgIGthbF91aW50MTYgc3JjX3BvcnQ7CisgICAgc21zYWxfY29uY2F0X3N0cnVjdCBjb25jYXRfaW5mbzsgLyogQ29uY2F0LiBJbmZvKi8KKyAgICAKKyAgICBsNF9hZGRyX2JjZF9zdHJ1Y3Qgb2E7IC8qIE9yaWdpbmF0aW5nIEFkZHJlc3MgKi8KKyAgICAKKyAgICBrYWxfdWludDggbXRpOworICAgIGthbF91aW50OCBzY3RzWzddOworICAgIAorfSBsNGNzbXNhbF9uZXdfbXNnX2luZGV4X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICBkZXN0OyAvKiBEZXN0aW5hdGlvbiBDb2RlKi8gIAorICAgIGthbF91aW50OCAgaWQ7IC8qIElkIGZvciBkaXN0aW5ndWlzaCBDTk1BKi8KKyAgICBrYWxfdWludDggIG10aTsgLyogTWVzc2FnZSBUeXBlIElkZW50aWZpZXIqLworICAgIGthbF91aW50MTYgbWVzc2FnZV9sZW47IC8qIExlbmd0aCBvZiBNZXNzYWdlKi8KK30gbDRjc21zYWxfbmV3X21zZ19wZHVfaW5kX3N0cnVjdCwgbDRjc21zYWxfaW1zX25ld19tc2dfcGR1X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICAgZGVzdDsgLyogRGVzdGluYXRpb24gQ29kZSovCisgICAga2FsX3VpbnQ4ICAgaWQ7IC8qIElkIGZvciBkaXN0aW5ndWlzaCBDTk1BKi8KKyAgICBrYWxfdWludDE2ICBpbmRleDsKKyAgICBrYWxfdWludDggICBtdGk7IC8qIE1lc3NhZ2UgVHlwZSBJZGVudGlmaWVyKi8KKyAgICBrYWxfdWludDggICBybWlfdXNlX2hleDsKKyAgICBrYWxfdWludDggICBkaXNwbGF5X3R5cGU7CisgICAga2FsX3VpbnQ4ICAgc3RvcmFnZV90eXBlOworICAgIGthbF91aW50MTYgIGRlc3RfcG9ydDsgCisgICAga2FsX3VpbnQxNiAgc3JjX3BvcnQ7CisgICAga2FsX3VpbnQxNiAgbWVzc2FnZV9sZW47IC8qIExlbmd0aCBvZiBNZXNzYWdlKi8KKyAgICBzbXNhbF9jb25jYXRfc3RydWN0IGNvbmNhdF9pbmZvOyAvKiBDb25jYXQuIEluZm8qLworICAgIHNtc2FsX2hlYWRlcl9pbmZvX3VuaW9uIG1zZ19oZWFkZXI7Cit9IGw0Y3Ntc2FsX25ld19tc2dfdGV4dF9pbmRfc3RydWN0LCBsNGNzbXNhbF9pbXNfbmV3X21zZ190ZXh0X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgc3JjX2lkOworICAgIGthbF91aW50OCAgcmVzdWx0OyAvKiBSZXN1bHQgQ29kZSovCisgICAga2FsX3VpbnQxNiBlcnJvcl9jYXVzZTsgLyogRXJyb3IgQ2F1c2UqLworICAgIGthbF91aW50OCAgc3RhdHVzOyAvKiBNZXNzYWdlIFN0YXR1cyovCisgICAga2FsX3VpbnQ4ICBuZXdfc3RhdHVzOyAgLyogRm9yICtDTUdSIGFuZCBzeW5jLiB0byBNTUkgKi8KKyAgICBrYWxfdWludDggIG10aTsgLyogTWVzc2FnZSBUeXBlIElkZW50aWZpZXIqLworICAgIGthbF91aW50OCAgc3RvcmFnZV90eXBlOworICAgIGthbF91aW50OCAgcm1pX3VzZV9oZXg7CisgICAga2FsX3VpbnQxNiBpbmRleDsgLyogRm9yICtDTUdMKi8KKyAgICBrYWxfdWludDE2IG5leHRfaW5kZXg7IC8qIEluZGljYXRlIHRoZSBuZXh0IGluZGV4Ki8KKyAgICBrYWxfdWludDE2ICBkZXN0X3BvcnQ7IAorICAgIGthbF91aW50MTYgIHNyY19wb3J0OworICAgIGthbF91aW50OCBzY3RzWzddOworICAgIGthbF91aW50OCBwYWRkaW5nOworICAgIGthbF91aW50MTYgbWVzc2FnZV9sZW47IC8qIExlbmd0aCBvZiBNZXNzYWdlKi8KKyAgICBzbXNhbF9jb25jYXRfc3RydWN0IGNvbmNhdF9pbmZvOyAvKiBDb25jYXQuIEluZm8qLworICAgIHNtc2FsX2hlYWRlcl9pbmZvX3VuaW9uIG1zZ19oZWFkZXI7Cit9IGw0Y3Ntc2FsX3JlYWRfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggcmVzdWx0OyAvKiBSZXN1bHQgQ29kZSovCisgICAga2FsX3VpbnQxNiBlcnJvcl9jYXVzZTsgLyogRXJyb3IgQ2F1c2UqLworICAgIGthbF91aW50OCBwcm9maWxlOyAKK30gbDRjc21zYWxfc2V0X3BhcmFtZXRlcl9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCByZXN1bHQ7IC8qIFJlc3VsdCBDb2RlKi8KKyAgICBrYWxfdWludDE2IGVycm9yX2NhdXNlOyAvKiBFcnJvciBDYXVzZSovCisgICAga2FsX3VpbnQ4IHByb2ZpbGU7IAorfSBsNGNzbXNhbF9zZXRfcHJvZmlsZV9wYXJhX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBzcmNfaWQ7CisgICAga2FsX3VpbnQ4IHJlc3VsdDsgLyogUmVzdWx0IENvZGUqLworICAgIGthbF91aW50MTYgZXJyb3JfY2F1c2U7IC8qIEVycm9yIENhdXNlKi8KKyAgICBrYWxfdWludDggcHJvZmlsZTsgCit9IGw0Y3Ntc2FsX3NldF9jb21tb25fcGFyYV9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgCisgICAga2FsX2Jvb2wgICByZXN1bHQ7CisgICAga2FsX3VpbnQxNiBjYXVzZTsKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBrYWxfdWludDggIGxpbmVfbm87ICAgICAgCS8qIG1lc3NhZ2Ugd2FpdGluZyBsaW5lIG5vICovCisgICAga2FsX3VpbnQ4ICB3YWl0aW5nX251bTsJLyogbWVzc2FnZSB3YWl0aW5nIG51bWJlciAqLworICAgIGthbF91aW50OCAgaW5kX3R5cGU7CS8qIG1lc3NhZ2Ugd2FpdGluZyB0eXBlICovCit9bDRjc21zYWxfc2V0X21zZ193YWl0aW5nX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICBzcmNfaWQ7CisgICAga2FsX3VpbnQ4ICByZXN1bHQ7IC8qIFJlc3VsdCBDb2RlKi8KKyAgICBrYWxfdWludDE2IGVycm9yX2NhdXNlOyAvKiBFcnJvciBDYXVzZSovCisgICAga2FsX3VpbnQ4ICBtcjsgLyogTWVzc2FnZSByZWZlcmVuY2UqLyAgICAKKyAgICBrYWxfdWludDggIHNlcV9udW07CisgICAga2FsX3VpbnQ4ICBzY3RzWzddOworICAgIHNtc2FsX2NvbmNhdF9zdHJ1Y3QgY29uY2F0X2luZm87IC8qIENvbmNhdC4gSW5mbyovICAKKworfSBsNGNzbXNhbF9zZW5kX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICBzcmNfaWQ7CisgICAga2FsX3VpbnQ4ICByZXN1bHQ7IC8qIFJlc3VsdCBDb2RlKi8KKyAgICBrYWxfdWludDE2IGVycm9yX2NhdXNlOyAvKiBFcnJvciBDYXVzZSovCisgICAga2FsX3VpbnQxNiBpbmRleDsKKyAgICBrYWxfdWludDggIHN0YXR1czsgLyogc3RhdHVzIG9mIG1zZyAqLworICAgIGthbF91aW50OCAgc3RvcmFnZV90eXBlOworfSBsNGNzbXNhbF93cml0ZV9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBrYWxfdWludDggIHJlc3VsdDsgLyogUmVzdWx0IENvZGUqLworICAgIGthbF91aW50MTYgZXJyb3JfY2F1c2U7IC8qIEVycm9yIENhdXNlKi8KKyAgICBrYWxfdWludDE2IGluZGV4OworICAgIGthbF91aW50OCAgZGVsX2ZsYWc7CisgICAga2FsX3VpbnQ4ICBzdG9yYWdlX3R5cGU7CisgICAga2FsX3VpbnQ4ICBtc2dfYml0bWFwWzQ4MF07IC8qIGxlbmd0aCBpcyBub3QgZmluYWwgdmFsdWUgKi8KK30gbDRjc21zYWxfZGVsZXRlX2NuZl9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggcmVzdWx0OyAvKiBSZXN1bHQgQ29kZSovCisgICAga2FsX3VpbnQxNiBlcnJvcl9jYXVzZTsgLyogRXJyb3IgQ2F1c2UqLworICAgIGthbF91aW50OCBzZXFfbnVtOworfWw0Y3Ntc2FsX3NlbmRfYWJvcnRfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICB0eXBlOworfSBsNGNzbXNhbF9tZW1fZnVsbF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggIHR5cGU7Cit9IGw0Y3Ntc2FsX21lbV9leGNlZWRfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICB0eXBlOworfSBsNGNzbXNhbF9tZW1fYXZhaWxhYmxlX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50MTYgbGVuZ3RoOyAgICAvL2xlbmd0aCBvZiBwZWVyIGJ1ZiBkYXRhOyB1bml0OmJ5dGUKKyAgICBrYWxfdWludDggICBhY2Nlc3NfaWQ7Cit9IGw0Y3Ntc2FsX3Ntc19kZXBlcnNvbmFsaXphdGlvbl9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICByZXNwb25zZTsKKyAgICBrYWxfdWludDggICBjYXVzZV9wcmVzZW50OworICAgIGthbF91aW50MTYgY2F1c2U7CisgICAga2FsX3VpbnQxNiBsZW5ndGg7ICAgIC8vbGVuZ3RoIG9mIHBlZXIgYnVmIGRhdGE7IHVuaXQ6Ynl0ZQorICAgIGthbF91aW50OCAgIGFjY2Vzc19pZDsgLy9TTVUgcGlnZ3ktYmFjaworfSBsNGNzbXNhbF9zbXNfZGVwZXJzb25hbGl6YXRpb25fcnNwX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggcmVzOyAvKiBTQVQgcmVzcG9uc2UgY29kZSovCisgICAga2FsX3VpbnQ4IGNhdXNlOyAvKiBFcnJvciBDYXVzZSovCit9IGw0Y3Ntc2FsX3NhdF9zZW5kX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBjYmNoX3JlcTsKK30gbDRjc21zYWxfY2JjaF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50MTYgbWlbNjBdOyAgICAgICAgICAvLyA9IFtTTVNBTF9NTUlfQ0JNSV9NQVhfRU5UUlldCisgICAga2FsX3VpbnQxNiBkY3NbMzBdOyAgICAgICAgIC8vID0gW1NNU0FMX0NCX01BWF9FTlRSWV0KKyAgICBrYWxfYm9vbCBtaV9tYXNrWzYwXTsgICAgICAgLy8gPSBbU01TQUxfTU1JX0NCTUlfTUFYX0VOVFJZXQorICAgIGthbF9ib29sIGRjc19tYXNrWzMwXTsgICAgICAvLyA9IFtTTVNBTF9DQl9NQVhfRU5UUlldCisKKyAgICAvKiBmb2xsb3dzIGFkZGVkIGJ5IEtldmluICovCisgICAga2FsX2Jvb2wgbWlyX21hc2tbMzBdOyAgICAgIC8vID0gW1NNU0FMX0NCX01BWF9FTlRSWV0KKyAgICBrYWxfdWludDE2IG1pcls2MF07ICAgICAgICAgLy8gPSBbU01TQUxfQ0JfTUFYX0VOVFJZKjJdCisgICAga2FsX3VpbnQ4ICBpc19hbGxfbGFuZ3VhZ2Vfb247CisgICAga2FsX3VpbnQ4ICBwYXJhX2luZDsvKiBzbXNhbF9jYl9wYXJhX2VudW0gKi8KKyAgICAKKyAgICBsNGNfY2Jfc2V0X3R5cGVfZW51bSAgICBzZXRfdHlwZTsKKyAgICBzbXNhbF9jYl9jbWRfZW51bSAgICAgICBjYl9jbWQ7Cit9IGw0Y3Ntc2FsX2NiX3VwZGF0ZV9yZXFfc3RydWN0OworCisvKiBDQiBVUERBVEUgQ05GIGFkZGVkIGJ5IEtldmluICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCByZXN1bHQ7IC8qIFJlc3VsdCBDb2RlKi8KKyAgICBrYWxfdWludDE2IGVycm9yX2NhdXNlOyAvKiBFcnJvciBDYXVzZSovCisgICAgc21zYWxfY2JfY21kX2VudW0gY2JfY21kOworfSBsNGNzbXNhbF9jYl91cGRhdGVfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQxNiBtaTsKKyAgICBrYWxfdWludDggZGNzOworICAgIGthbF91aW50MTYgbXNnX2xlbmd0aDsgLyogbWF4IGxlbmd0aCBpcyA5MyB4IDE1ID0gMTM5NSAqLworICAgIGthbF91aW50OCBtc2dfZGF0YVsxXTsKK30gbDRjc21zYWxfY2JfbXNnX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICBkZXN0OyAvKiBSTU1JIG9yIExNTUkqLworICAgIGthbF91aW50MTYgc247CisgICAga2FsX3VpbnQxNiBtaTsKKyAgICBrYWxfdWludDggIGRjczsKKyAgICBrYWxfdWludDggIHBhZ2U7CisgICAga2FsX3VpbnQ4ICBwYWdlczsKKyAgICBrYWxfdWludDggIHJtaV91c2VfaGV4OworICAgIGthbF91aW50MTYgbXNnX2xlbmd0aDsgLyogbWF4IGxlbmd0aCBpcyA5MyB4IDE1ID0gMTM5NSAqLworICAgIGthbF91aW50OCAgbXNnX2RhdGFbMV07Cit9IGw0Y3Ntc2FsX2NiX21zZ190ZXh0X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBnZW9ncmFwaHlfdHlwZTsKK30gbDRjc21zYWxfY2JfZ3NfY2hhbmdlX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgZGVzdDsgCisgICAga2FsX3VpbnQxNiBtc2dfbGVuZ3RoOyAKKyAgICBrYWxfdWludDggIG1zZ19kYXRhW0NCX01BWF9EQVRBX05VTV9QRVJfUEFHRV07CisJcmF0X2VudW0gICByYXQ7Cit9IGw0Y3Ntc2FsX2NiX21zZ19wZHVfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHBsbW5bTUFYX1BMTU5fTEVOKzFdOworICAgIHJhdF9lbnVtIHJhdDsgCit9IGw0Y3Ntc2FsX2NiX3NlcnZpY2VfYnlfcGxtbl9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDE2ICBtaWQ7CisgICAga2FsX3VpbnQxNiAgc247Cit9IGw0Y3Ntc2FsX2NiX21zZ19yZW1vdmFsX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgCisgICBrYWxfdWludDE2IGRlc3RfbW9kX2lkOyAgCisgICBrYWxfdWludDE2IGRlc3RfcG9ydDsgCisgICBrYWxfdWludDE2IHNyY19wb3J0OworICAga2FsX3VpbnQ4ICBkY3M7CisgICBrYWxfdWludDggIG10aTsgLyogTWVzc2FnZSBUeXBlIElkZW50aWZpZXIqLworCisgICBrYWxfdWludDggc2N0c1s3XTsKKyAgIHNtc2FsX2NvbmNhdF9zdHJ1Y3QgY29uY2F0X2luZm87IC8qIENvbmNhdC4gSW5mbyovICAKKyAgIGw0X2FkZHJfYmNkX3N0cnVjdCBvYTsgLyogT3JpZ2luYXRpbmcgQWRkcmVzcyAqLworICAga2FsX3VpbnQxNiBtZXNzYWdlX2xlbjsgLyogTGVuZ3RoIG9mIE1lc3NhZ2UqLworIAorfWw0Y3Ntc2FsX2FwcF9kYXRhX2luZF9zdHJ1Y3Q7ICAgCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDggIGRlc3Q7IC8qIERlc3RpbmF0aW9uIENvZGUqLworICAgIGthbF91aW50OCAgc3RhcnR1cF9zZXFfbnVtOyAKKyAgICBrYWxfdWludDggIG10aTsgLyogTWVzc2FnZSBUeXBlIElkZW50aWZpZXIqLworICAgIGthbF91aW50OCAgc3RhdHVzOworICAgIGthbF91aW50OCAgc3RvcmFnZV90eXBlOworICAgIGthbF91aW50OCAgc2N0c1s3XTsKKyAgICBrYWxfdWludDggIHBhZGRpbmc7CisgICAga2FsX3VpbnQxNiBpbmRleDsKKyAgICBrYWxfdWludDE2IG1lc3NhZ2VfbGVuOyAvKiBMZW5ndGggb2YgTWVzc2FnZSovCisgICAga2FsX3VpbnQxNiBkZXN0X3BvcnQ7IAorICAgIGthbF91aW50MTYgc3JjX3BvcnQ7CisgICAgc21zYWxfY29uY2F0X3N0cnVjdCBjb25jYXRfaW5mbzsgLyogQ29uY2F0LiBJbmZvKi8KKyAgICBzbXNhbF9oZWFkZXJfaW5mb191bmlvbiBtc2dfaGVhZGVyOworfSBsNGNzbXNhbF9zdGFydHVwX3JlYWRfbXNnX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKworCSBrYWxfdWludDggYWNjZXNzX2lkOyAgICAKKyAgICBsNF9hZGRyX2JjZF9zdHJ1Y3QJc2NfYWRkcjsKKwkgbDRfYWRkcl9iY2Rfc3RydWN0CWRhOworfSBsNGNzbXNhbF9mZG5fY2hlY2tfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICByZXN1bHQ7IC8vdHJ1ZTogaW4gRkROIGxpc3Qoc2VuZCksIGZhbHNlOiBub3QgaW4gRkROIGxpc3QKKyAgICBrYWxfdWludDE2IGNhdXNlOyAvL1BIQl9MNENfRVJST1IKK30gbDRjc21zYWxfZmRuX2NoZWNrX3JzcF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgCisgICBrYWxfdWludDggIGFjdGlvbjsKKyAgIGthbF91aW50OCAgZHN0X3N0b3JhZ2U7CisgICBrYWxfdWludDE2IHNyY19pbmRleDsKKyAgIGthbF91aW50OCBzcmNfaWQ7Cit9bDRjc21zYWxfY29weV9tc2dfcmVxX3N0cnVjdDsgICAKKworLyogX19VTklGSUVEX01FU1NBR0VfQkFDS0dST1VORF9TRU5EX1NVUFBPUlRfXyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAKKyAgIGthbF91aW50OCAgbmV3X3N0YXR1czsgIC8qICBzbXNhbF9zdGF0dXNfZW51bSAqLworICAga2FsX3VpbnQxNiBpbmRleDsKKyAgIGthbF91aW50OCBzcmNfaWQ7Cit9bDRjc21zYWxfc2V0X3N0YXR1c19yZXFfc3RydWN0OyAKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAKKyAgIGthbF91aW50OCAgcmVzdWx0OyAvKiBSZXN1bHQgQ29kZSovCisgICBrYWxfdWludDE2IGVycm9yX2NhdXNlOyAvKiBFcnJvciBDYXVzZSovCisgICBrYWxfdWludDggIGFjdGlvbjsKKyAgIGthbF91aW50OCAgZHN0X3N0b3JhZ2U7CisgICBrYWxfdWludDE2IHNyY19pbmRleDsKKyAgIGthbF91aW50MTYgZHN0X2luZGV4OworICAga2FsX3VpbnQ4IHNyY19pZDsKK31sNGNzbXNhbF9jb3B5X21zZ19jbmZfc3RydWN0OyAgIAorCisvKiBfX1VOSUZJRURfTUVTU0FHRV9CQUNLR1JPVU5EX1NFTkRfU1VQUE9SVF9fICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgIGthbF91aW50MTYgaW5kZXg7ICAKKyAgIGthbF91aW50OCAgcmVzdWx0OyAvKiBSZXN1bHQgQ29kZSovCisgICBrYWxfdWludDE2IGVycm9yX2NhdXNlOyAvKiBFcnJvciBDYXVzZSovCisgICBrYWxfdWludDggc3JjX2lkOworfWw0Y3Ntc2FsX3NldF9zdGF0dXNfY25mX3N0cnVjdDsgIAorCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgIAorICAga2FsX3VpbnQ4ICBhY3Rpb247Cit9bDRjc21zYWxfaHpfY2JfYWN0X3JlcV9zdHJ1Y3Q7ICAgCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgIGthbF91aW50OCAgZGVzdDsgLyogbm90IHVzZWQgKi8KKyAgIGthbF91aW50MTYgc247CisgICBrYWxfdWludDE2IG1pOworICAga2FsX3VpbnQ4ICBkY3M7CisgICBrYWxfdWludDggIHBhZ2U7CisgICBrYWxfdWludDggIHBhZ2VzOworICAga2FsX3VpbnQ4ICBybWlfdXNlX2hleDsgLyogbm90IHVzZWQgKi8KKyAgIGthbF91aW50MTYgbXNnX2xlbmd0aDsgCisgICBrYWxfdWludDggIG1zZ19kYXRhWzFdOworfSBsNGNzbXNhbF9oel9jYl9tc2dfaW5kX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICBrYWxfdWludDggc3JjX2lkOworfWw0Y3Ntc2FsX2dldF9tYWlsYm94X251bV9yZXFfc3RydWN0OyAKKworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgIGthbF91aW50OCAgcmVzdWx0OyAvKiBSZXN1bHQgQ29kZSovCisgICBrYWxfdWludDE2IGVycm9yX2NhdXNlOyAvKiBFcnJvciBDYXVzZSovCisgICBrYWxfdWludDggc3JjX2lkOworfWw0Y3Ntc2FsX2dldF9tYWlsYm94X251bV9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBrYWxfdWludDE2IGluZGV4OyAgLy8gTWVzc2FnZSBJbmRleAorfSBsNGNzbXNhbF9yZWFkX3Jhd19kYXRhX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgc3JjX2lkOworICAgIGthbF91aW50OCAgcmVzdWx0OyAgICAgICAvLyBSZXN1bHQgQ29kZQorICAgIGthbF91aW50MTYgZXJyb3JfY2F1c2U7ICAvLyBFcnJvciBDYXVzZQorICAgIGthbF91aW50MTYgaW5kZXg7ICAgICAgICAvLyBNZXNzYWdlIEluZGV4CisgICAga2FsX3VpbnQ4ICBzdGF0dXM7ICAgICAgIC8vIFN0YXR1cyBvZiBtc2cKKyAgICBrYWxfdWludDggIHN0b3JhZ2VfdHlwZTsgLy8gU01TQUxfU00gb3IgU01TQUxfTUUKKyAgICBrYWxfdWludDE2IGRhdGFfbGVuOyAgICAgLy8gTWVzc2FnZSBsZW5ndGgKK30gbDRjc21zYWxfcmVhZF9yYXdfZGF0YV9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBrYWxfdWludDggIHN0b3JhZ2VfdHlwZTsgICAvLyBTTVNBTF9TTSBvciBTTVNBTF9NRQorfSBsNGNzbXNhbF93cml0ZV9yYXdfZGF0YV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBrYWxfdWludDggIHJlc3VsdDsgICAgICAgLy8gUmVzdWx0IENvZGUKKyAgICBrYWxfdWludDE2IGVycm9yX2NhdXNlOyAgLy8gRXJyb3IgQ2F1c2UKKyAgICBrYWxfdWludDE2IGluZGV4OyAgICAgICAgLy8gTWVzc2FnZSBJbmRleAorICAgIGthbF91aW50OCAgc3RhdHVzOyAgICAgICAvLyBTdGF0dXMgb2YgbXNnCisgICAga2FsX3VpbnQ4ICBzdG9yYWdlX3R5cGU7IC8vIFNNU0FMX1NNIG9yIFNNU0FMX01FCit9IGw0Y3Ntc2FsX3dyaXRlX3Jhd19kYXRhX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBrYWxfdWludDggIHJlc3VsdDsKKyAgICBrYWxfdWludDMyIGVycm9yX2NhdXNlOworICAgIGthbF91aW50OCB1aWQ7Cit9bDRjc21zYWxfc2VuZF9kZWxpdmVyX3JlcG9ydF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICBzcmNfaWQ7CisgICAga2FsX3VpbnQ4ICByZXN1bHQ7CisgICAga2FsX3VpbnQzMiBlcnJvcl9jYXVzZTsKKyAgICBrYWxfdWludDggdWlkOwkKK31sNGNzbXNhbF9zZW5kX2RlbGl2ZXJfcmVwb3J0X2NuZl9zdHJ1Y3Q7CisKKyB0eXBlZGVmIHN0cnVjdAorIHsKKyAgICAgTE9DQUxfUEFSQV9IRFIKKyAgICAga2FsX3VpbnQ4ICBzcmNfaWQ7CisgICAgIGthbF91aW50MzIgc21fbWF4X251bTsKKyAgICAga2FsX3VpbnQzMiBzbV9jdXJyZW50X251bTsKKyAgICAga2FsX3VpbnQzMiBtZV9tYXhfbnVtOworICAgICBrYWxfdWludDMyIG1lX2N1cnJlbnRfbnVtOworICAgICBrYWxfdWludDMyIHNyX21heF9udW07CisgICAgIGthbF91aW50MzIgc3JfY3VycmVudF9udW07CisgfWw0Y3Ntc2FsX3N5bmNfbXNnX3N0b3JhZ2VfcmVxX3N0cnVjdDsKKworIHR5cGVkZWYgc3RydWN0CisgeworICAgICBMT0NBTF9QQVJBX0hEUgorICAgICBrYWxfdWludDggIHJlc3VsdDsKKyAgICAga2FsX3VpbnQzMiBjYXVzZTsKKyB9bDRjc21zYWxfbXRfc21zX2ZpbmFsX2Fja19pbmRfc3RydWN0OworCisvLyB0eXBlZGVmIHNtc2FsX2V2bWlfc3RydWN0IGw0Y3Ntc2FsX2VuaGFuY2VkX3ZvaWNlX21haWxfaW5kX3N0cnVjdDsKKy8vIGw0Y3Ntc2FsX2VuaGFuY2VkX3ZvaWNlX21haWxfaW5kX3N0cnVjdCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgc21zYWxfZXZtaV9zdHJ1Y3QKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4ICAgZXZtX3BkdV90eXBlOworICAgIGthbF91aW50OCAgIG11bHRpX3N1Yl9wcm9maWxlOworICAgIGthbF91aW50OCAgIGlzX3N0b3JlOworICAgIGthbF91aW50OCAgIHZtX2FsbW9zdF9mdWxsOworICAgIGthbF91aW50OCAgIHZtX2Z1bGw7CisgICAga2FsX3VpbnQ4ICAgdm1fc3RhdHVzX2V4dF9mbGc7CisKKyAgICBsNF9hZGRyX2JjZF9zdHJ1Y3QgICB2bV9hY2Nlc3NfYWRkcjsKKyAgICBrYWxfdWludDggICBudW1iZXJfb2Zfdm1fdW5yZWFkOyAgLy8gc2hvdWxkIGJlIHN0b3JlZCBpbiAoVSlTSU0KKyAgICBrYWxfdWludDggICBudW1iZXJfb2Zfdm1fbm90aWZ5OyAgLy8gbWF4IDE1CisgICAga2FsX3VpbnQ4ICAgbnVtYmVyX29mX3ZtX2RlbGV0ZTsgIC8vIG1heCAzMQorCisgICAga2FsX3VpbnQ4ICAgbDRfc3RhdHVzOyAgICAgICAgLy8gMDppbml0LCAxOiBzZW50IHRvIE1NSSwgMjpmcmVlCisKKyAgICBrYWxfdWludDggICB2bV9zdGF0dXNfZXh0X2xlbjsKKyAgICBrYWxfdWludDggICAqdm1fc3RhdHVzX2V4dF9kYXRhOworCisgICAgc21zYWxfZXZtaV9tc2dfc3RydWN0ICp2bV9tc2dbMzJdOworCit9bDRjc21zYWxfZW5oYW5jZWRfdm9pY2VfbWFpbF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgaXJhdF90eXBlX2VudW0gaXJhdF90eXBlOworICAgIHJhdF90eXBlX2VudW0gc291cmNlX3JhdDsKKyAgICByYXRfdHlwZV9lbnVtIHRhcmdldF9yYXQ7Cit9IGw0Y3Ntc2FsX3JhdF9jaGFuZ2Vfc3RhcnRfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGlyYXRfdHlwZV9lbnVtIGlyYXRfdHlwZTsKKyAgICByYXRfdHlwZV9lbnVtIHNvdXJjZV9yYXQ7CisgICAgcmF0X3R5cGVfZW51bSB0YXJnZXRfcmF0OworICAgIGlyYXRfcmVzdWx0X2VudW0gaXJhdF9yZXN1bHQ7Cit9IGw0Y3Ntc2FsX3JhdF9jaGFuZ2VfZmluaXNoX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICBzcmNfaWQ7CisgICAga2FsX3VpbnQ4ICByZXN1bHQ7ICAgICAgLyogUmVzdWx0IENvZGUqLworICAgIGthbF91aW50MTYgZXJyb3JfY2F1c2U7IC8qIEVycm9yIENhdXNlKi8KKyAgICBrYWxfdWludDggIG1yOyAgICAgICAgICAvKiBNZXNzYWdlIHJlZmVyZW5jZSovCisgICAgbDRfYWRkcl9iY2Rfc3RydWN0IHNjX2FkZHI7CisJc21zYWxfZG9tYWluX2VudW0gIGRvbWFpbjsKKworfSBsNGNzbXNhbF9pbXNfc2VuZF9mcm9tX3N0b3JhZ2VfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDggIHNyY19pZDsKKyAgICBrYWxfdWludDggIHJlc3VsdDsgICAgICAvKiBSZXN1bHQgQ29kZSovCisgICAga2FsX3VpbnQ4ICBtcjsgICAgICAgICAgLyogTWVzc2FnZSByZWZlcmVuY2UqLworfSBsNGNzbXNhbF9pbXNfdXBkYXRlX21zZ2JveF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF91aW50OCAgc3JjX2lkOworICAgIGthbF91aW50OCAgcmVzdWx0OyAgICAgIC8qIFJlc3VsdCBDb2RlKi8KK30gbDRjc21zYWxfaW1zX3VwZGF0ZV9tc2dib3hfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBrYWxfYm9vbCBlbmFibGU7Cit9IGw0Y3Ntc2FsX3VwZGF0ZV9zbXNfb3Zlcl9zZ3NfY2ZnX3JlcV9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBrYWxfYm9vbCBpc19mdWxsX2NoYW5nZWQ7Cit9IGw0Y3Ntc2FsX3N5bmNfbXNnX2luZF9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgIC8qIHNtc2FsX21iX2VudHJ5X3N0YXRlX2VudW0gKi8KKyAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdGF0ZSBvZiB0aGUgZW50cnkgKi8KKworICAgLyogc21zYWxfc3RvcmFnZV9lbnVtICovCisgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdG9yYWdlIHR5cGUgb2YgdGhlIGVudHJ5ICovCisKKyAgIC8qIHNtc2FsX210aV9lbnVtICovCisgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgICBtdGk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtZXNzYWdlIHR5cGUgaWRlbnRpZmllciAqLworCisgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM7ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0YXR1cyBvZiB0aGUgbWVzc2FnZSAqLworCisgICBrYWxfdWludDE2ICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRfbm87ICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZGljYXRlIHJlY29yZCBudW1iZXIgaW4gc3RvcmFnZSAqLworCisgICBrYWxfdWludDE2ICAgICAgICAgICAgICAgICAgICAgICBtYl90eXBlX2luZDsgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYml0bWFwIGZvciBzcGVjaWZpYyB0eXBlIFNNLCBpZS4gUElEIHdpdGggcmVwbGFjZSB0eXBlLCAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZPIHdpdGggcmVwbHkgcGF0aC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKK30gc21zYWxfbWJfZW50cnlfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIgCisJa2FsX3VpbnQ4IHNyY19pZDsJCQorICAgIGthbF91aW50OCBkb21haW47CisgICAga2FsX3VpbnQ4IGRpcmVjdGlvbjsJCit9IGw0Y3Ntc2FsX3Ntc19lbmRfaW5kX3N0cnVjdDsKKworCisjZW5kaWYgCisKKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjMnRjbV9zdHJ1Y3QuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0YzJ0Y21fc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYyMTk1ZAotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0YzJ0Y21fc3RydWN0LmgKQEAgLTAsMCArMSw3NTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogTDRDMlRDTV9TVFJVQ1QuSAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNQVVJCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgY29tbW9uIHN0cnVjdCBvZiBUQ00gYW5kIEw0Qy4KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAgICAgICAgICAgICBISVNUT1JZCisgKiBCZWxvdyB0aGlzIGxpbmUsIHRoaXMgcGFydCBpcyBjb250cm9sbGVkIGJ5IFBWQ1MgVk0uIERPIE5PVCBNT0RJRlkhIQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFVwcGVyIHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiAgVGhpcyBwcm9kdWN0IGhhcyBiZWVuIGRldmVsb3BlZCB1c2luZyBhIHByb3RvY29sIHN0YWNrCisqICBkZXZlbG9wZWQgYnkgU2Fza2VuIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIExpbWl0ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfTDRDMlRDTV9TVFJVQ1RfSAorI2RlZmluZSBfTDRDMlRDTV9TVFJVQ1RfSAorCisjaW5jbHVkZSAicHNfcHVibGljX3N0cnVjdC5oIgorCisjaW5jbHVkZSAibDRjMmFibV9zdHJ1Y3QuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2FwaS5oIgorI2luY2x1ZGUgInRjbV9hcGkuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfZW51bS5oIgorI2luY2x1ZGUgImw0YzJ0Y21fZnVuYy5oIgorI2luY2x1ZGUgImlyYXRfY29tbW9uX3N0cnVjdC5oIgorI2luY2x1ZGUgImw0Y19jb21tb25fZW51bS5oIgorCisvKiBfX01FRElBVEVLX1NNQVJUX1FPU19fICovCisjaW5jbHVkZSAibnZyYW1fZWRpdG9yX2RhdGFfaXRlbS5oIgorCisjaW5jbHVkZSAiYzJrX2lyYXRfbXNnX3N0cnVjdC5oIgorCisvKiBfX0FQUF9TRUNPTkRBUllfUERQX1NVUFBPUlRfXyAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgY29udGV4dF9pZDsKK30gdGNtX3BkcF9yZWFjdGl2YXRlX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgIGNvbnRleHRfaWQ7Cit9IGw0Y190Y21fZXBzX2F0dGFjaF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsgCisgICAga2FsX2Jvb2wgY2F1c2UyX3ByZXNlbnQ7CisgICAgcHNfY2F1c2VfZW51bSBjYXVzZTI7ICAKK30gbDRjX3RjbV9lcHNfYXR0YWNoX3Bkbl9hY3RfaW5kX3N0cnVjdDsgLy8gY29udmVydCBpdCB0byBDR0VWIAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICBjb250ZXh0X2lkOworICAgIGw0Y3RjbV9hY3RfcmVhc29uICByZXFfcmVhc29uOyAgICAgLyogVXNlZCBieSBFVENNICovICAgCisgICAgbDRjdGNtX2VnYWN0X3N1cHBvcnRfcmF0X2VudW0gcmF0OworICAgIC8vbDRjdGNtX2VnYWN0X2NhdXNlX2VudW0gY2F1c2U7Cit9IHRjbV9wZHBfYWN0aXZhdGVfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgY29udGV4dF9pZDsKK30gdGNtX3BkcF9hY3RpdmF0ZV9yZWpfcnNwX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgY29udGV4dF9pZDsKKyAgICBrYWxfdWludDggICBxZmk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlZCBvbmx5IGJ5IHZndGNtLCAwIGZvciBhY3RpdmF0ZSBmbG93LCAweGZmIGZvciBub3JtYWwgbW9kaWZ5LCBvdGhlcnMgZm9yIGRlYWN0aXZhdGUgc3BlY2lmaWVkIGZsb3cKK30gdGNtX3BkcF9tb2RpZnlfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgY29udGV4dF9pZDsKKyAgICAjaWZkZWYgX19MT0NBTF9ERUFDVElWQVRFX1BEUF9TVVBQT1JUX18KKyAgICBrYWxfYm9vbCBsb2NhbF9kZWFjdGl2YXRlX3BkcDsgLyogX19MT0NBTF9ERUFDVElWQVRFX1BEUF9TVVBQT1JUX18gKi8JCisgICAgI2VuZGlmIC8vIH4gX19MT0NBTF9ERUFDVElWQVRFX1BEUF9TVVBQT1JUX18KKyAgICB0Y21fcGRwX2RlYWN0X3JlYXNvbl9lbnVtIGRlYWN0X3JlYXNvbjsgLy8gVXNlZCBvbmx5IGluIFJBVF9UQ00gPj4gRVRDTSA+PiBFU00gKGR1ZSB0byBNU0dfSURfVENNX1JBVF9UQ01fSU5JVF9ERUFDVElWQVRFX0NPTlRFWFRfSU5EKS4KKyAgICBsNGN0Y21fZWdhY3Rfc3VwcG9ydF9yYXRfZW51bSAgIHJhdDsKK30gdGNtX3BkcF9kZWFjdGl2YXRlX3JlcV9zdHJ1Y3Q7CisKKy8qIGZvciBfX0FQUF9TRUNPTkRBUllfUERQX1NVUFBPUlRfXyAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICBrYWxfdWludDgJICAgICAgICAgICAgY29udGV4dF9pZDsKKyAgIGthbF9ib29sCSAgICAgICAgICAgICAgICBpc19xb3NfcHJlc2VudDsgLy8gaW5kaWNhdGVzIGlmIFFvUyBtb2RpZmljYXRpb24KKyAgIG52cmFtX2VkaXRvcl9xb3Nfc3RydWN0CW1vZGlmeV9xb3M7ICAgICAvLyBtb2RpZnlpbmcgUW9TIHZhbHVlCit9IGx0Y21fcGRwX3Fvc190ZnRfbW9kaWZ5X3JlcV9zdHJ1Y3Q7CisvKiB+Zm9yIF9fQVBQX1NFQ09OREFSWV9QRFBfU1VQUE9SVF9fICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgIGNvbnRleHRfaWQ7CisgICAga2FsX3VpbnQ4ICAgYXBuX2xlbmd0aDsKKyAgICBrYWxfdWludDggICBhcG5bMTAwXTsKKyAgICBrYWxfdWludDggICBkY29tcF9hbGdvOworICAgIGthbF91aW50OCAgIGhjb21wX2FsZ287CisgICAga2FsX3VpbnQ4ICAgcGRwX3R5cGU7CisgICAga2FsX3VpbnQ4ICAgcGRwX2FkZHJfbGVuOworICAgIGthbF91aW50OCAgIGFkZHJfdmFsWzE2XTsgICAvLyBBVCtDR0RDT05UIHNob3VsZCBub3Qgc2V0IHN0YXRpYyBJUHY2IGFkZHJlc3MsIHNvIDE2KnU4IHNpemUgaXMgb2theT8KKyAgICBrYWxfdWludDggICBpcHY0YWRkcmFsbG9jOyAgLy8gX19SRUw4X18KKyAgICBrYWxfdWludDggICBwX2NzY2ZfZGlzY292ZXJ5OyAgICAgICAgIC8vUjEwCisgICAga2FsX3VpbnQ4ICAgaW1fY25fc2lnbmFsbGluZ19mbGFnOyAgICAvL1IxMAorICAgIGthbF91aW50OCAgIHJlcXVlc3RfdHlwZTsgICAgICAgICAgICAgLy9SMTIKKyAgICBsNGNfY21kX2NvbmZsaWN0X2NoZWNrX29wdGlvbl9lbnVtIGNoZWNrX29wdGlvbjsKKyAgICBuYXNfcHJpb3JpdHlfY29uZmlnX2VudW0gbmFzX3ByaW9yaXR5X2NvbmZpZyA7ICAgLy8gX19NVENfU1VQUE9SVF9fCisgICAgZWFiX292ZXJyaWRlX2NvbmZpZ19lbnVtIGVhYl9vdmVycmlkZV9jb25maWcgOyAgIC8vIF9fTVRDX1NVUFBPUlRfXworICAgIGw0Y190Y21fc2VjdXJlcGNvX2VudW0gIHNlY3VyZV9wY287IC8vIG5vIHVzZT8KKyAgICBsNGNfdGNtX2FjdGl2YXRlX3BkcF9yZXF1ZXN0X2lwdjRfbXR1X2VudW0gYWN0X3BkcF93aXRoX3Bjb19yZXFfdjRfbXR1OworICAgIGw0Y190Y21fbG9jYWxfYWRkcl9pbmRfZW51bSBsb2NhbF9hZGRyX2luZDsgLy9ubyB1c2U/CisgICAgbDRjX3RjbV9ub25faXBfbXR1X2Rpc2NvdmVyeV9lbnVtICAgbm9uX2lwX210dV9kaXNjb3Zlcnk7IAorICAgIGw0Y190Y21fcmVsaWFibGVfZGF0YV9zZXJ2aWNlX2VudW0gIHJlbGlhYmxlX2RhdGFfc2VydmljZTsgCisgICAgbDRjX3RjbV9zc2NfbW9kZV9lbnVtICAgICAgICAgICAgICAgc3NjX21vZGU7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc19uc3NhaV9wcmVzZW50OworICAgIGw0Y190Y21fc19uc3NhaV9zdHJ1Y3QgICAgICAgICAgICAgIHNfbnNzYWk7IAorICAgIGw0Y190Y21fYWNjZXNzX3R5cGVfZW51bSAgICAgICAgICAgIGFjY2Vzc190eXBlOyAKKyAgICBsNGNfdGNtX3Jxb3NfaW5kX2VudW0gICAgICAgICAgICAgICBycW9zX2luZDsKKyAgICBsNGNfdGNtX21oNl9wZHVfZW51bSAgICAgICAgICAgICAgICBtaDZfcGR1OworICAgIGw0Y190Y21fYWx3YXlzX29uX3BkdV9lbnVtICAgICAgICAgIGFsd2F5c19vbl9wZHU7CisgICAga2FsX3VpbnQ4IHBzaTsKKyAgICBrYWxfYm9vbCAgb2xkX3BzaV9wcmVzZW50OyAKKyAgICBrYWxfdWludDggb2xkX3BzaTsgCisgICAga2FsX2Jvb2wgIHZncGRwX3R5cGVfcHJlc2VudDsKKyAgICBrYWxfdWludDggdmdwZHBfdHlwZTsKKyAgICBrYWxfYm9vbCAgdmdhcG5fcHJlc2VudDsKKyAgICBrYWxfdWludDggdmdhcG5fbGVuZ3RoOworICAgIGthbF91aW50OCB2Z2FwblsxMDBdOworICAgIGw0Y190Y21fbGFkbl9kbm5fZW51bSAgICAgICAgICAgICAgIGxhZG5fZG5uOworfSBsNGN0Y21fc2V0X3ByaV9wZHBfaW5mb19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsKK30gbDRjdGNtX3NldF90aGlzX2lzX2FuX2ludmFsaWRfYXBuX25vdGlmeV9yZXFfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBjb250ZXh0X2lkOworICAgIHBkcF9hZGRyX3R5cGVfZW51bSByb2FtaW5nX2lwX3R5cGU7CisgICAga2FsX3VpbnQ4IHBzaTsKK30gbDRjdGNtX3NldF9leHRlbmRlZF9wZHBfaW5mb19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCBjbGVhcl9hbGxfYXBuX2luZm87CisgICAga2FsX3VpbnQ4IGFwbl9pZHg7IC8qIGFwbiB0YWJsZSBlbnRyeSBpbmRleCAqLworICAgIGthbF91aW50OCBhcG5fbGVuZ3RoOworICAgIGthbF91aW50OCBhcG5bTUFYX0FQTl9MRU5dOworICAgIGthbF91aW50MTYgaW5hY3Rpdml0eV90aW1lOworfWw0Y3RjbV9zeW5jX2Fwbl9pbmZvX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfYm9vbCBpc19tb2JpbGVfZGF0YV9lbmFibGVfcHJlc2VudDsKKyAgICBrYWxfYm9vbCBpc19tb2JpbGVfZGF0YV9lbmFibGU7CisgICAga2FsX2Jvb2wgaXNfbW9iaWxlX2RhdGFfcm9hbWluZ19lbmFibGVfcHJlc2VudDsKKyAgICBrYWxfYm9vbCBpc19tb2JpbGVfZGF0YV9yb2FtaW5nX2VuYWJsZTsKKyAgICBrYWxfYm9vbCBpc192b2x0ZV9lbmFibGVfcHJlc2VudDsKKyAgICBrYWxfYm9vbCBpc192b2x0ZV9lbmFibGU7CisgICAga2FsX2Jvb2wgaXNfdnp3X2ltc190ZXN0X21vZGVfZW5hYmxlX3ByZXNlbnQ7CisgICAga2FsX2Jvb2wgaXNfdnp3X2ltc190ZXN0X21vZGVfZW5hYmxlOyAKK30gbDRjX2NlbGx1bGFyX25ldHdvcmtfY29uZmlnOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBsNGNfY2VsbHVsYXJfbmV0d29ya19jb25maWcgY29uZmlnOworfWw0Y3RjbV9jZWxsdWxhcl9uZXR3b3JrX2NvbmZpZ19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICBjb250ZXh0X2lkOworICAgIGthbF91aW50OCAgIHByaW1fY29udGV4dF9pZDsKKyAgICBrYWxfdWludDggICBkY29tcF9hbGdvOworICAgIGthbF91aW50OCAgIGhjb21wX2FsZ287CisgICAga2FsX3VpbnQ4ICAgaW1fY25fc2lnbmFsbGluZ19mbGFnOyAgICAvL1IxMAorfSBsNGN0Y21fc2V0X3NlY19wZHBfaW5mb19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsKKyAgICBrYWxfdWludDggcW9zX3R5cGU7CisgICAga2FsX3VpbnQ4IGRlbGF5X2NsYXNzOworICAgIGthbF91aW50OCByZWxpYWJpbGl0eV9jbGFzczsKKyAgICBrYWxfdWludDggcGVha190aHJvdWdocHV0OworICAgIGthbF91aW50OCBwcmVjZWRlbmNlX2NsYXNzOworICAgIGthbF91aW50OCBtZWFuX3Rocm91Z2hwdXQ7Cit9IGw0Y3RjbV9zZXRfcW9zX2luZm9fcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWQ7CisgICAga2FsX3VpbnQ4IHFvc190eXBlOworICAgIGthbF91aW50OCB0cmFmZmljX2NsYXNzOworICAgIGthbF91aW50OCBkZWxpdmVyeV9vcmRlcjsKKyAgICBrYWxfdWludDggZGVsaXZlcnlfb2ZfZXJyX3NkdTsKKyAgICBrYWxfdWludDggbWF4X3NkdV9zaXplOworICAgIGthbF91aW50OCBtYXhfYml0cmF0ZV91cF9sbms7CisgICAga2FsX3VpbnQ4IG1heF9iaXRyYXRlX2Rvd25fbG5rOworICAgIGthbF91aW50OCByZXNpZHVhbF9iaXRfZXJyX3JhdGU7CisgICAga2FsX3VpbnQ4IHNkdV9lcnJfcmF0aW87CisgICAga2FsX3VpbnQ4IHRyYW5zZmVyX2RlbGF5OworICAgIGthbF91aW50OCB0cmFmZmljX2huZGxfcHJpb3JpdHk7CisgICAga2FsX3VpbnQ4IGd1YXJudGRfYml0X3JhdGVfdXBfbG5rOworICAgIGthbF91aW50OCBndWFybnRkX2JpdF9yYXRlX2Rvd25fbG5rOworICAgIGthbF91aW50OCBzaWduYWxsaW5nX2luZGljYXRpb247CisgICAga2FsX3VpbnQ4IHNvdXJjZV9zdGF0aXN0aWNzX2Rlc2NyaXB0b3I7CisgICAga2FsX3VpbnQ4IGV4dF9tYXhfYml0cmF0ZV9kb3duX2xuazsKKyAgICBrYWxfdWludDggZXh0X2d1YXJudGRfYml0X3JhdGVfZG93bl9sbms7CisgICAga2FsX3VpbnQ4IGV4dF9tYXhfYml0cmF0ZV91cF9sbms7CisgICAga2FsX3VpbnQ4IGV4dF9ndWFybnRkX2JpdF9yYXRlX3VwX2xuazsKKyAgICBrYWxfdWludDggZXh0Ml9tYXhfYml0cmF0ZV9kb3duX2xuazsKKyAgICBrYWxfdWludDggZXh0Ml9ndWFybnRkX2JpdF9yYXRlX2Rvd25fbG5rOworICAgIGthbF91aW50OCBleHQyX21heF9iaXRyYXRlX3VwX2xuazsKKyAgICBrYWxfdWludDggZXh0Ml9ndWFybnRkX2JpdF9yYXRlX3VwX2xuazsgICAgCit9IGw0Y3RjbV9zZXRfZXFvc19pbmZvX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0eworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHBkbl9udW07IC8qKjwgUEROIE5vLiAqLworICAgIHBkbl9pbmZvX3N0cnVjdCBwZG5bTUFYX1BETl9OVU1dOyAvKio8IFBETiBpbmZvcm1hdGlvbiAqLworfWw0Y3RjbV9zZXRfbXVsdGlwbGVfcGRuX2luZm9fcmVxX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4IGFjdGlvbl9jb250ZXh0X2lkOworCisgICAgLyoqIFNldCB0YXJnZXQgZmllbGQgdG8gdGhpcyB2YWx1ZSAqLworICAgIGthbF91aW50MzIgdmFsdWU7CisKKyAgICAvKiogVXNlZCB0byBpbmRpY2F0ZSB3aGljaCBmaWVsZCB3ZSB3YW50IHRvIGNoYW5nZSAqLworICAgIGw0Y3RjbV9zZXNzaW9uX2luZm9fYmxvY2tfZmllbGRfZW51bSBmaWVsZDsKK31sNGN0Y21fc2V0X3NwZWNpZmljX2NvbnRleHRfcmVxX3N0cnVjdDsKKworLy9tdGswNDEyMQordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgY29udGV4dF9pZDsKKyAgICBrYWxfdWludDggICBxY2k7CisgICAga2FsX3VpbnQ4ICAgbWF4X2JpdHJhdGVfdXBfbG5rOworICAgIGthbF91aW50OCAgIG1heF9iaXRyYXRlX2Rvd25fbG5rOworICAgIGthbF91aW50OCAgIGd1YXJudGRfYml0X3JhdGVfdXBfbG5rOworICAgIGthbF91aW50OCAgIGd1YXJudGRfYml0X3JhdGVfZG93bl9sbms7CisgICAga2FsX3VpbnQ4ICAgZXh0X21heF9iaXRyYXRlX3VwX2xuazsKKyAgICBrYWxfdWludDggICBleHRfbWF4X2JpdHJhdGVfZG93bl9sbms7CisgICAga2FsX3VpbnQ4ICAgZXh0X2d1YXJudGRfYml0X3JhdGVfdXBfbG5rOworICAgIGthbF91aW50OCAgIGV4dF9ndWFybnRkX2JpdF9yYXRlX2Rvd25fbG5rOworICAgIGthbF91aW50OCAgIGV4dDJfbWF4X2JpdHJhdGVfdXBfbG5rOworICAgIGthbF91aW50OCAgIGV4dDJfbWF4X2JpdHJhdGVfZG93bl9sbms7CisgICAga2FsX3VpbnQ4ICAgZXh0Ml9ndWFybnRkX2JpdF9yYXRlX3VwX2xuazsKKyAgICBrYWxfdWludDggICBleHQyX2d1YXJudGRfYml0X3JhdGVfZG93bl9sbms7CisKKyAgICBrYWxfYm9vbCAgICBpc191c2VfZXh0X3Fvc19mb3JfZGxfZ2JyOworICAgIGthbF9ib29sICAgIGlzX3VzZV9leHRfcW9zX2Zvcl91bF9nYnI7CisgICAga2FsX2Jvb2wgICAgaXNfdXNlX2V4dF9xb3NfZm9yX2RsX21icjsKKyAgICBrYWxfYm9vbCAgICBpc191c2VfZXh0X3Fvc19mb3JfdWxfbWJyOworICAgIGthbF91aW50NjQgIGV4dF9lcHNfcW9zX2RsX2dicjsKKyAgICBrYWxfdWludDY0ICBleHRfZXBzX3Fvc191bF9nYnI7CisgICAga2FsX3VpbnQ2NCAgZXh0X2Vwc19xb3NfZGxfbWJyOworICAgIGthbF91aW50NjQgIGV4dF9lcHNfcW9zX3VsX21icjsgICAgIAorfSBsNGN0Y21fc2V0X2Vwc19xb3NfaW5mb19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBsNGNfdmdxb3Nfc3RydWN0IHFvc19pbmZvOyAKK30gbDRjdGNtX3NldF92Z3Fvc19pbmZvX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorfSBsNGN0Y21fc3RhcnRfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWQ7CisgICAga2FsX3VpbnQ4IGF1dGhfdHlwZTsKK30gbDRjdGNtX3NldF9wcHBfYXV0aF9pbmZvX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgbDRjX2NnYXV0aF9pbmZvX3N0cnVjdCBjZ2F1dGhfaW5mbzsKKyAgICBrYWxfdWludDggcHNpOworfSBsNGN0Y21fc2V0X2NnYXV0aF9pbmZvX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBjb250ZXh0X2lkOworICAgIGthbF91aW50MzIgY2hhbm5lbF9pZDsKKyAgICBwZHBfYWRkcl90eXBlX2VudW0gcGRwX3R5cGU7Cit9bDRjdGNtX2VudGVyX2RhdGFfbW9kZV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsKK31sNGN0Y21fbGVhdmVfZGF0YV9tb2RlX3JlcV9zdHJ1Y3Q7CisKKy8qIF9fTUVESUFURUtfU01BUlRfUU9TX18gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF9ib29sICAgaXNfbXNxX29uIDsgIC8qIFRydWU6IFVzZSBSNiBRT1MgaWYgdGhlIGN1cnJlbnQgUExNTiAoTlcvU0lNKSBpcyBvbiBNU1EgbGlzdCAobnZyYW1fZWZfbXNxX2xpc3Rfc3RydWN0KS4gKi8gCit9IGw0Y3RjbV9zZXRfbXNxX21vZGVfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgbnZyYW1fZWZfbXNxX2VudHJ5X3N0cnVjdCAgZW50cnkgOworfSBsNGN0Y21fc2V0X21zcV9lbnRyeV9yZXFfc3RydWN0OworLyogX19NRURJQVRFS19TTUFSVF9RT1NfXyAqLworCisvKiBtdGswMDcxNCB3MDYzNzogQVQgZGVmaW5pdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgY29udGV4dF9pZDsKKyAgICBrYWxfdWludDE2ICB1bmRlZmluZV9hY3Rpb247IC8vbDRjX2FjdGlvbl9lbnVtCit9IGw0Y3RjbV91bmRlZmluZV9wZHBfaW5mb19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4CW9uX29mZjsKK30gbDRjdGNtX3NldF9hY2xfbW9kZV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisJa2FsX3VpbnQxNglzdGFydF9pbmRleDsKKwlrYWxfdWludDE2CW1heF9yZWFkX2VudHJpZXM7Cit9IGw0Y3RjbV9nZXRfYWNsX2VudHJpZXNfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggYXBuW01BWF9BUE5fTEVOXTsKK30gdGNtX2FjbF9lbnRyeV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWQ7CisgICAga2FsX2Jvb2wgaXNfc3VjY2VzczsKKyAgICBwc19jYXVzZV9lbnVtIGVycm9yX2NhdXNlOworfSBsNGN0Y21fYXRfcmVwb3J0X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCWthbF91aW50MTYJICAgICAgIGluZGV4OworCXRjbV9hY2xfZW50cnlfc3RydWN0CWFjbF9lbnRyeTsKK30gbDRjdGNtX3NldF9hY2xfZW50cnlfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlMT0NBTF9QQVJBX0hEUgorCXRjbV9hY2xfZW50cnlfc3RydWN0CWFjbF9lbnRyeTsKK30gbDRjdGNtX2FkZF9hY2xfZW50cnlfcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlMT0NBTF9QQVJBX0hEUgorCWthbF9ib29sCWRlbF9hbGw7CisJa2FsX3VpbnQxNglpbmRleDsKKwl0Y21fYWNsX2VudHJ5X3N0cnVjdAlhY2xfZW50cnk7Cit9IGw0Y3RjbV9kZWxfYWNsX2VudHJ5X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisJTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggcXVlcnlfaWQ7CisgICAga2FsX3VpbnQ4IGxhc3RfY2lkOworfSBsNGN0Y21fcXVlcnlfZXh0X2dwcnNfaGlzdG9yeV9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworCUxPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgcmVzZXRfaWQ7IAorICAgIGthbF9ib29sICAgIHJlc2V0X2FsbDsgCisgICAga2FsX2Jvb2wgICAgcmVzZXRfY2VydGFpbl9jaWRfbGFzdF9oaXN0b3J5OworICAgIGthbF91aW50OCAgIGNvbnRleHRfaWQ7IAorICAgIGthbF9ib29sICAgIHJlc2V0X3RvdGFsX2hpc3Rvcnk7Cit9IGw0Y3RjbV9yZXNldF9leHRfZ3Byc19oaXN0b3J5X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisJTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbAlpc19tYWluX3BzOworfSBsNGN0Y21fZGF0YV9hbGxvd19yZXFfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsKKyAgICBrYWxfYm9vbCBjbGVhbl9lZ3Bjb19jb250ZXh0OworCisgICAga2FsX2Jvb2wgcmVxX3Y0X2RuczsvLzAwMEQKKyAgIAorICAgIGthbF9ib29sIHJlcV92Nl9kbnM7IC8vMDAwMworICAgIAorICAgIGthbF9ib29sIHJlcV9tc2lzZG47IC8vMDAwRQorCisgICAga2FsX2Jvb2wgcmVxX3Bjc2NmX3Jlc2VsZWN0aW9uX3N1cHBvcnQ7IC8vMDAxMgorCisgICAga2FsX2Jvb2wgcHNfZGF0YV9vZmZfc3VwcG9ydF9wcmVzZW50OyAgLy8wMDE3CisgICAga2FsX3VpbnQ4IHBzX2RhdGFfb2ZmX3N1cHBvcnRfdmFsdWU7IAorCisgICAga2FsX2Jvb2wgcmVxX29wX3Bjb19pZDsgLy9GRjAwCisgICAga2FsX3VpbnQzMiBvcF9wY29faWQ7CisgICAgcGxtbl9pZF9yYXRfc3RydWN0IG9wX3Bjb19wbG1uX2lkOworCisgICAga2FsX2Jvb2wgcmVxX3Y2X2VwZGc7IC8vRkYwMQorICAgIHBsbW5faWRfcmF0X3N0cnVjdCBlcGRnX3Y2X2NvaW50YWluZXI7IC8vIFZaX1JFUV9MVEVEQVRBXzQwOTIzIDogYWx3YXlzIHNldCB0byAzMTE0ODAKKworICAgIGthbF9ib29sIHJlcV92NF9lcGRnOyAvL0ZGMDIKKyAgICBwbG1uX2lkX3JhdF9zdHJ1Y3QgZXBkZ192NF9jb2ludGFpbmVyOyAvLyBWWl9SRVFfTFRFREFUQV80MDkyMyA6IGFsd2F5cyBzZXQgdG8gMzExNDgwIAorCisgICAga2FsX2Jvb2wgcmVxX3Z6d181Z3V3OyAvL0ZGMDMKKyAgICBwbG1uX2lkX3JhdF9zdHJ1Y3Qgdnp3XzVndXdfY29pbnRhaW5lcjsgLy8gVW5pZmllZF81R19JY29uX0xvZ2ljIDogYWx3YXlzIHNldCB0byAzMTE0ODAgCisKKyAgICBrYWxfdWludDggcHNpOyAKK31sNGN0Y21fc2V0X2VncGNvX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsgICAgCisgICAgTE9DQUxfUEFSQV9IRFIgICAgCisgICAga2FsX2Jvb2wgaXNfaW1zX3JvYW1pbmdfZW5hYmxlOworfSBsNGN0Y21fc2V0X2VpbXNyb2FtX2NvbmZpZ192YWx1ZV9yZXFfc3RydWN0OworCisKKyNlbmRpZiAKKworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfY2NfY21kLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfY2NfY21kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYzODRiMgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y19jY19jbWQuaApAQCAtMCwwICsxLDIyMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICoJbDRjX2NjX2NtZC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1UNjIwOAorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBpcyBpbnRlbmRzIGZvciDvv71LLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0w0Q19DQ19DTURfSAorI2RlZmluZSBfTDRDX0NDX0NNRF9ICisKKy8vI2luY2x1ZGUgImthbF9ub25fc3BlY2lmaWNfZ2VuZXJhbF90eXBlcy5oIgorLy8jaW5jbHVkZSAibDRjX2F1eF9zdHJ1Y3QuaCIKKy8vI2luY2x1ZGUgInBzMnNhdF9zdHJ1Y3QuaCIKKy8vI2luY2x1ZGUgImw0Y19jb21tb25fZW51bS5oIgorI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAicHNfcHVibGljX3N0cnVjdC5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19lbnVtLmgiCisjaW5jbHVkZSAibDRjMmNzbV9jY19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJsNF92ZG1fZW51bS5oIgorCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX2V4ZV9yZXNldF9hY21fcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCAqcGluKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19nZXRfYWNtX3ZhbHVlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDMyICphY20pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX3NldF9hY21fbWF4X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKnBpbiwga2FsX3VpbnQzMiB2YWwpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX2dldF9hY21fbWF4X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDMyICphY21fbWF4KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19nZXRfY2NtX3ZhbHVlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDMyICpjY20pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX2V4ZV9yZXNldF9jY21fcmVxKGthbF91aW50OCBzcmNfaWQpOyAKKworZXh0ZXJuIHZvaWQgbDRjX2NjX3NlbmRfY3NtX2NhbGxfYWJvcnRfcmVxKHZvaWQpOworCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2Nfc2V0X2JlYXJlcl9zZXJ2aWNlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggc3BlZWQsIGthbF91aW50OCBuYW1lLCBrYWxfdWludDggY2UpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX2dldF9iZWFyZXJfc2VydmljZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICpzcGVlZCwga2FsX3VpbnQ4ICpuYW1lLCBrYWxfdWludDggKmNlKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19zZXRfbGluZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGxpbmUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX3NldF9jdWdfcGFyYW1zX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggaW5kZXgsIGthbF91aW50OCBtb2RlLCBrYWxfdWludDggaW5mbyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2NfZ2V0X2N1Z19wYXJhbXNfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCAqaW5kZXgsIGthbF91aW50OCAqbW9kZSwga2FsX3VpbnQ4ICppbmZvKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19leGVfY2hsZF9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBvcGNvZGUsIC8qIGNzbWNjX2Nyc3NfcmVxX2VudW0gKi8KKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNhbGxfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX2V4ZV9oYW5ndXBfYWN0aXZlX2NhbGxfcmVxKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX2dldF9jYWxsX2xpc3RfcmVxKGthbF91aW50OCBzcmNfaWQsIGw0Y19jYWxsX2xpc3Rfc3RydWN0ICpjYWxsX2xpc3QsIGthbF9ib29sIGlzX2NsY2NzKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19zZXRfY2FsbF9tb2RlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggbW9kZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2Nfc2V0X2NhbGxfY2FwYWJpbGl0eShrYWxfdWludDMyIGNhcGFiaWxpdHkpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX2dldF9jYWxsX21vZGVfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCAqbW9kZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2NfZ2V0X3Bob25lX2FjdGl2aXR5X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKmFjdCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2Nfc2V0X3NpbmdsZV9udW1fcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBtb2RlKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19nZXRfc2luZ2xlX251bV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICptb2RlKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19leGVfY2FsbF9kZWZsZWN0X3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAgbDRjX251bWJlcl9zdHJ1Y3QgZGVzdCwKKyAgICAgICAgICAgICAgICAgICAga2FsX2Jvb2wgc3ViX2FkZHJfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgbDRjX3N1Yl9hZGRyX3N0cnVjdCBzdWJfZGVzdCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2NfZXhlX3NlbmRfZHRtZl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGRpZ2l0LGthbF91aW50OCBjYWxsX2lkLGw0X2R0bWZfYWN0aW9uX2VudW0gY21kKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19leGVfc3RvcF9kdG1mX3JlcShrYWxfdWludDggc3JjX2lkLGthbF91aW50OCBjYWxsX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19leGVfc3RhcnRfYXV0b19kdG1mX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKmRpZ2l0KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19leGVfYXRhX3JlcShrYWxfdWludDggc3JjX2lkKTsKKworI2lmZGVmIF9fU0FUQ0VfXworZXh0ZXJuIGthbF9ib29sIGw0Y19zYXRfY3NkX2NhbGxfc2V0dXBfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc2l6ZV9vZl9hZGRyLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmFkZHIsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzaXplX29mX3N1YmFkZHIsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqc3ViYWRkciwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNhbGxfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgc2F0X2NzZF9iZWFyZXJfcGFyYV9zdHJ1Y3QgYmVhcmVyX3BhcmEpOworI2VuZGlmIC8qIF9fU0FUQ0VfXyAqLyAKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2NfZXhlX2NhbGxfc2V0dXBfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBsNGNfbnVtYmVyX3N0cnVjdCBkZXN0LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcmVkaWFsX2NvdW50LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggY2FsbF90eXBlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggY2xpcl9mbGFnLCAvKiBjc21jY19jbGlyX2luZm9fZW51bSAqLworICAgICAgICAgICAgICAgICAgICBrYWxfYm9vbCBjdWdfb3B0aW9uLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggYWxzX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBlY2NfaW5mbyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2NfZXhlX2NhbGxfbW9kaWZ5X3JlcShrYWxfdWludDggc3JjX2lkKTsKKworI2lmbmRlZiBfX1VDTV9TVVBQT1JUX18KK2V4dGVybiBrYWxfYm9vbCBsNGNfY2NfZXhlX2F0aF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwgbDRjX2F0aF9yZXFfZW51bSBvcF9jb2RlKTsKKyNlbmRpZiAvKl9fVUNNX1NVUFBPUlRfXyovCisKK2V4dGVybiB2b2lkIGFwcGVuZF9zaG9ydF9saXN0KAorICAgICAgICAgICAgICAgIGw0Y19jYWxsX2xpc3Rfc3RydWN0ICpvdXRwdXQsCisgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGluZGV4LAorICAgICAgICAgICAgICAgIGthbF91aW50OCBjYWxsX2lkLAorICAgICAgICAgICAgICAgIGthbF91aW50OCBjYWxsX3N0YXRlLAorICAgICAgICAgICAgICAgIGthbF91aW50OCBtcHR5LAorICAgICAgICAgICAgICAgIGthbF91aW50OCAqbnVtYmVyKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19leGVfZGlzY19hdXhfcmVxKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX3JlbF9jb21wX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggY2FsbF9pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2NfZ2V0X2ludGVyX3dvcmtpbmdfZnVuY19yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICppd2YpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX3NldF9pbnRlcl93b3JraW5nX2Z1bmNfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBpd2YpOworCitleHRlcm4gdm9pZCBsNGNfbW1pX3VjbV9hdF9yZXNfcmVxKGthbF91aW50OCBzb3VyY2VfaWQsIGthbF91aW50OCByZXN1bHQsIGthbF91aW50OCBjYXVzZSk7CisKK2V4dGVybiB2b2lkIGw0Y19tbWlfdWNtX3Jjb2RlX3JlcSgKKyAgICAgICAgICAgICAgICBrYWxfdWludDggc291cmNlX2lkLAorICAgICAgICAgICAgICAgIGthbF91aW50OCB0eXBlLAorICAgICAgICAgICAgICAgIGthbF91aW50OCBjYWxsX2lkLAorICAgICAgICAgICAgICAgIGthbF91aW50OCBjYWxsX3R5cGUsCisgICAgICAgICAgICAgICAgbDRjX251bWJlcl9zdHJ1Y3QgbnVtYmVyKTsKKworZXh0ZXJuIHZvaWQgbDRjX21taV91Y21faGZfY2lldl9yZXEoa2FsX3VpbnQ4IGluZF90eXBlLCBrYWxfdWludDggZXZlbnQpOworCitleHRlcm4gdm9pZCBsNGNfY2NfY2FsbF9wcmVzZW50X3Jlc19yZXEoa2FsX3VpbnQ4IGlzX210X2NhbGxfYWxsb3dlZCxrYWxfdWludDggY2FsbF9pZCxrYWxfdWludDggc2VxX251bSwga2FsX3VpbnQxNiByZWplY3RfY2F1c2UpOworCitleHRlcm4gdm9pZCBsNGNfY2NfZXhlX2NwaV9yZXEoa2FsX3VpbnQzMiBtb2RlKTsKKworZXh0ZXJuIHZvaWQgbDRjX3NldF9jdXJyZW50X2FjdGlvbihrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDE2IGFjdGlvbik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2NfZ2V0X3Rvbl9yZXEoa2FsX3VpbnQ4ICp0b25fdHlwZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2Nfc2V0X3Rvbl9yZXEoa2FsX3VpbnQ4IHRvbl90eXBlKTsKKworZXh0ZXJuIHZvaWQgbDRjX2N0bV9zZXRfc3RhdHVzX3JlcShrYWxfdWludDggbW9kZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcnR0X3N0cl9yZXEoa2FsX3VpbnQ4IGNhbGxfaWQsIGthbF91aW50OCAqcnR0X3N0ciwga2FsX3VpbnQxNiBydHRfc3RyX2xlbik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2NfZXhlX3NydmNjX3JlcShrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBudW1fY2FsbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDRjY3NtX3NydmNjX2NhbGxfY250eHRfc3RydWN0ICpjYWxsX3RibCk7CisKKyNpZiBkZWZpbmVkKF9fSU1TX1NVUFBPUlRfXykKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2NfaW1zX2NhbGxfcHJvZ3Jlc3NfcmVxKGthbF91aW50OCBjYWxsX2lkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBkaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfYm9vbCBpc19mYXJfZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyIGRpc2NfY2F1c2UpOworCisjZW5kaWYKKworZXh0ZXJuIHZvaWQgbDRjX2NjX2NhbGxfcmVsZWFzZV9pbmQodm9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19jY19jYWxsX2Nvbm5lY3RfaW5kKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGNfY2NfY2FsbF9jaGxkX2luZChrYWxfdWludDggY2FsbF9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19jY19jYWxsX3dhaXRfaW5kKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGNfY2NfY2FsbF9hbGVydF9pbmQoa2FsX3VpbnQ4IGFsZXJ0KTsKKworZXh0ZXJuIHZvaWQgbDRjX2NjX2NvbnRleHRfc3dpdGNoKGw0Y19tZV9yZWNvbmZpZ19lbnVtIHJlY29uZmlnX3R5cGUpOworI2VuZGlmIC8qIF9MNENfQ0NfQ01EX0ggKi8KKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX2Npc3NfY21kLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfY2lzc19jbWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjJiMDA0Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX2Npc3NfY21kLmgKQEAgLTAsMCArMSwyMTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqCWw0Y19jaXNzX2NtZC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1UNjIwOAorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBpcyBpbnRlbmRzIGZvciDvv71LLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogCQkJCUhJU1RPUlkKKyAqIEJlbG93IHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFVwcGVyIHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0w0Q19DSVNTX0NNRF9ICisjZGVmaW5lIF9MNENfQ0lTU19DTURfSAorCisvLyNpbmNsdWRlICJrYWxfbm9uX3NwZWNpZmljX2dlbmVyYWxfdHlwZXMuaCIKKy8vI2luY2x1ZGUgImw0Y19hdXhfc3RydWN0LmgiCisvLyNpbmNsdWRlICJsNGNfY29tbW9uX2VudW0uaCIKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfZW51bS5oIgorCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NzX2V4ZV9lbWxwcF9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBvcGNvZGUsIC8qIG9wX2NvZGVfZW51bSAqLworICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcHJpb3JpdHkpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NzX2V4ZV9yZXBlYXRfQ0NGQ19yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBtb2RlLCAvKiBvcF9jb2RlX2VudW0gKi8KKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJlYXNvbiwgLyogc3NfY29kZV9lbnVtICovCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBic19jb2RlLCAvKiAoY2xhc3MpIGJzX2NvZGVfZW51bSAqLworICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdGltZXIsCisgICAgICAgICAgICAgICAgICAgIGw0Y19udW1iZXJfc3RydWN0IGRlc3QsCisgICAgICAgICAgICAgICAgICAgIGthbF9ib29sIHN1Yl9hZGRyX2ZsYWcsCisgICAgICAgICAgICAgICAgICAgIGw0Y19zdWJfYWRkcl9zdHJ1Y3Qgc3ViX2Rlc3QpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NzX2V4ZV9jYWxsX2ZvcndhcmRfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggb3Bjb2RlLCAvKiBvcF9jb2RlX2VudW0gKi8KKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHR5cGUsIC8qIHNzX2NvZGVfZW51bSAqLworICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggYnNfY29kZSwgLyogYnNfY29kZV9lbnVtICovCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0aW1lciwKKyAgICAgICAgICAgICAgICAgICAgbDRjX251bWJlcl9zdHJ1Y3QgZGVzdCwKKyAgICAgICAgICAgICAgICAgICAga2FsX2Jvb2wgc3ViX2FkZHJfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgbDRjX3N1Yl9hZGRyX3N0cnVjdCBzdWJfZGVzdCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc3NfZXhlX3JlcGVhdF9DQ1dBX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG1vZGUsIC8qIG9wX2NvZGVfZW51bSAqLworICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggY2xhc3N4IC8qIChjbGFzcykgYnNfY29kZV9lbnVtICovICk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc3NfZXhlX2NhbGxfd2FpdF9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBvcGNvZGUsIC8qIG9wX2NvZGVfZW51bSAqLworICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggYnNfY29kZSk7IC8qIGJzX2NvZGVfZW51bSAqLworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NzX2V4ZV9pbnRlcnJvZ2F0ZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHR5cGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NzX2V4ZV9yZXBlYXRfQ0xDS19TU19yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBtb2RlLCAvKiBvcF9jb2RlX2VudW0gKi8KKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJlYXNvbiwgLyogc3NfY29kZV9lbnVtICovCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBjbGFzc3gsIC8qIChjbGFzcykgYnNfY29kZV9lbnVtICovCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcGFzc3dkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zc19leGVfY2FsbF9iYXJyaW5nX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG9wY29kZSwgLyogb3BfY29kZV9lbnVtICovCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0eXBlLCAvKiBzc19jb2RlX2VudW0gKi8KKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGJzX2NvZGUsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcGFzc3dkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zc19nZXRfcHJpb3JpdHlfc3RhdHVzX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKnByaW9yaXR5KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zc19zZXRfY2xpcl9mbGFnX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggY2xpcl9mbGFnKTsgICAgICAgIC8qIHJtbWlfY2xpcl9lbnVtICovCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc3NfZXhlX2NoYW5nZV9wYXNzd29yZF9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0eXBlLCAvKiBzc19jb2RlX2VudW0gKi8KKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpvbGQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqbmV3MSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpuZXcyKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zc19leGVfdXNzZF9yZXFfZXh0KGthbF91aW50OCBzcmNfaWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGFjdGlvbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnN0ciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggZGNzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBsZW5ndGgpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NzX2V4ZV91c3NkX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKnN0ciwga2FsX3VpbnQ4IGRjcywga2FsX3VpbnQxNiBsZW5ndGgpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NzX2V4ZV9lY3VzZF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICpzdHIsIGthbF91aW50OCBkY3MsIGthbF91aW50MTYgbGVuZ3RoKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zc19leGVfY2Nic19yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG9wX2NvZGUsIGthbF91aW50OCBpbmRleCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc3NfZXhlX2Fib3J0X3JlcShrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zc19leGVfYWNrX3JlcSAoa2FsX3VpbnQ4IHNyY19pZCxrYWxfdWludDggY2F1c2UpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NhdF9zZW5kX3Vzc2RfcmVxKGthbF91aW50OCBpbnB1dFtNQVhfRElHSVRTX1VTU0RdLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGRjcywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBsZW5ndGgsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdHlwZV9vZl9tb2RpZmljYXRpb24pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NhdF9zZW5kX3NzX3JlcShrYWxfdWludDggaW5wdXRbTUFYX0RJR0lUU19VU1NEXSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBkY3MsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbGVuZ3RoLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHR5cGVfb2ZfbW9kaWZpY2F0aW9uKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lbV9zZXRfZXNzcF9yZXEoa2FsX3VpbnQzMiBtb2RlKTsKK2V4dGVybiBrYWxfdWludDMyIGw0Y19lbV9nZXRfZXNzcF9yZXEodm9pZCk7CisjZW5kaWYgLyogX0w0Q19DSVNTX0NNRF9IICovIAorCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfY29tbW9uX2VudW0uaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y19jb21tb25fZW51bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZDI1OGYKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfY29tbW9uX2VudW0uaApAQCAtMCwwICsxLDE5MjkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqCWw0Y19jb21tb25fZW51bS5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1BVUkKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBUaGlzIGZpbGUgaXMgaW50ZW5kcyBmb3IgLi4uCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiAgVGhpcyBwcm9kdWN0IGhhcyBiZWVuIGRldmVsb3BlZCB1c2luZyBhIHByb3RvY29sIHN0YWNrCisqICBkZXZlbG9wZWQgYnkgU2Fza2VuIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIExpbWl0ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKyNpZm5kZWYgX0w0Q19DT01NT05fRU5VTV9ICisjZGVmaW5lIF9MNENfQ09NTU9OX0VOVU1fSAorCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKyNpbmNsdWRlICJsNGNfY29tbW9uX2VudW1fcHVibGljLmgiCisKKworI2luY2x1ZGUgImdsb2JhbF9kZWYuaCIKKworI2luY2x1ZGUgInBzX3B1YmxpY19kZWYuaCIKKyNpbmNsdWRlICJhdHBfcHVibGljX2RlZnMuaCIKKworI2RlZmluZSBMNENfTUFYX05BTUVfTEVOICAgICAgICAgMTAKKworI2RlZmluZSBNQVhfUElOX0xFTkdUSCAgICAgICAgICAgOCAgLyogdG8gYmUgcmVtb3ZlZCAqLworCisvKiNkZWZpbmUgTUFYX0NDX1NVQl9BRERSX0JDRF9MRU4gIDIxICAtbW92ZSB0byBwc19wdWJsaWNfZW51bS5oKi8KKworCisjZGVmaW5lIE1BWF9TU19QQVNTV0RfTEVOICAgICAgICA5CisjZGVmaW5lIE1BWF9TU19QQVNTV0RfQkNEX0xFTiAgICA1CisKKyNkZWZpbmUgTUFYX1BMTU5fQkNEX0xFTiAgICAgICAgIDMKKworCisjZGVmaW5lIE1BWF9TSU1fUEFTU1dEX0JDRF9MRU4gICA1CisKKyNkZWZpbmUgSU5WQUxJRF9CU19DT0RFICAgICAgICAgIDAKKworI2RlZmluZSBMNENfVVNFX0RFRkFVTFRfVkFMVUUgICAgMjU1CisjZGVmaW5lIEw0Q19NQVhfUkVUUllfQ09VTlQgICAgICAyCisKKyNkZWZpbmUgTUFYX0NSRUVfU1RSX0xFTiAgICAgICAgIDc1CisKKyNkZWZpbmUgbDRDX01BWF9UUkFOU19OVU0gICAgICAgICAxMgorCisgCisjaWYgKCghZGVmaW5lZChfX01US19UQVJHRVRfXykpICYmIGRlZmluZWQoX19UQ01fVVRfXykpIC8vIG9ubHkgdXNlZCBmb3IgVVQgUmVncmVzc2lvbgorI2RlZmluZSBUQ01fTUFYX0FDTF9GSUxFX1NJWkVfU1VQUE9SVCAgMTAwMAorI2Vsc2UgLy8gI2lmICgoIWRlZmluZWQoX19NVEtfVEFSR0VUX18pKSAmJiBkZWZpbmVkKF9fVENNX1VUX18pKSAvLyBvbmx5IHVzZWQgZm9yIFVUIFJlZ3Jlc3Npb24KKyNkZWZpbmUgVENNX01BWF9BQ0xfRklMRV9TSVpFX1NVUFBPUlQgIDI1NQorI2VuZGlmIC8vIH4gI2lmICgoIWRlZmluZWQoX19NVEtfVEFSR0VUX18pKSAmJiBkZWZpbmVkKF9fVENNX1VUX18pKSAvLyBvbmx5IHVzZWQgZm9yIFVUIFJlZ3Jlc3Npb24KKworI2RlZmluZSBUQ01fQklORElOR19JRF9OT1RfQklORCAweEZGRkYKKworI2RlZmluZSBMNENfTE9OR1BSRVNTX1RJTUVSICAyMCAvKiAyIHNlYyAqLworI2RlZmluZSBMNENfUkVQRUFURURfVElNRVIgIDEwIC8qIDIgc2VjICovCisKKyNkZWZpbmUgTDRDX0RPV05MT0FEX0VSUk9SX1RJTUVSICAxMDAgLyogMTAgc2VjICovCisjZGVmaW5lIEw0Q19ET1dOTE9BRF9TTEVFUF9USU1FUiAxMCAvKiAxIHNlYyAqLyAgCisvKgorICAgIE1BVUlfMDI1OTg0OTUsIGN1c3RvbSBncHJzIGRldGFjaCB0aW1lcgorICAgICNkZWZpbmUgTDRDX0dQUlNfQ09OTkVDVF9USUVNUiAgIDIwIAorKi8KKworI2RlZmluZSBMNENfTUFYX0VNX1BEUF9OVU0JMwkvL210azAwNzE0IHcwNjM0CisKKyNkZWZpbmUgTDRDX1NFVF9QU19DT05GX1RFU1RfUFJPRklMRV9PSyAgICAgICAgICAgIDAgCisjZGVmaW5lIEw0Q19TRVRfUFNfQ09ORl9URVNUX1BST0ZJTEVfQ09ORkxJQ1QgICAgIC0xCisjZGVmaW5lIEw0Q19TRVRfUFNfQ09ORl9URVNUX1BST0ZJTEVfV1JJVEVfRkFJTCAgIC0yCisKKyNkZWZpbmUgSU5GT19FVkVOVCAgMAorI2RlZmluZSBJTkZPX1JFUSAgICAxCisKKy8vIGhhbm51Lmh1dXNrbyBtb3ZlIHRoZSBkZWZpbml0aW9uIEw0Q19JTlZBTElEX1JTX1NOUiB0byBwc19wdWJsaWNfZGVmLmggZm9yIEVSUkMgTE1PQiBpbiBMMSByZWZlcmVuY2UKKyNkZWZpbmUgTDRDX0lOVkFMSURfU0VSVl9CQU5EIDB4ZmZmZgorI2RlZmluZSBMNENfUU9TX0JJVFJBVEVfMTBfR0JQUyAoKGthbF91aW50NjQpMTAwMDAwMDApIC8vIDEwR2JwcyA9PSAxME0gS2JwcworCisjZGVmaW5lIEw0Q19FQ0VMTF9JTlZBTElEX1ZBTFVFIDB4MGZmZmZmZmYKKyNkZWZpbmUgTDRDX0VDRUxMX0lOVkFMSURfQlNJQyAweGZmZmYKKyNkZWZpbmUgTDRDX0VDRUxMX01BWF9CVUZGRVJfU0laRSAyMDQ4CisjZGVmaW5lIEw0Q19FQ0VMTF9NQVhfREFUQV9TSVpFX1BFUl9DRUxMIDM5MiAvLyByZWZlciB0byB0aGUgbWF4IGluY3JlYXNpbmcgc2l6ZSBvZiBybW1pX2VjZWxsX3Jlc3VsdF9jb2RlX2ZtdHRyKCkKKyNkZWZpbmUgTDRDX0VDRUxMX01BWF9EQVRBX1NJWkVfT0ZfQzJLX0NFTEwgMTkyIC8vIHJlZmVyIHRvIHRoZSBtYXggaW5jcmVhc2luZyBzaXplIG9mIGw0Y19ud19lY2VsbF9hcHBlbmRfYzJrX25icl9jZWxsX2luZm8oKQorCisKKyNkZWZpbmUgTDRDX05XX0lOVkFMSURfQ0VMTF9JRCAweDBGRkZGRkZGCisjZGVmaW5lIEw0Q19OV19JTlZBTElEX0xBQyAweEZGRkYKKyNkZWZpbmUgTDRDX05XX0lOVkFMSURfUkFDIDB4RkYKKworI2RlZmluZSBMNENfTlNTQUlfQlVGRkVSX1NJWkUgMjA0OAorI2RlZmluZSBMNENfUFJFRkVSUkVEXzNHUFBfTlNTQUkgICAgICAgMHgwMQorI2RlZmluZSBMNENfUFJFRkVSUkVEX05PTjNHUFBfTlNTQUkgICAgMHgwMgorCisjZGVmaW5lIEw0Q19OV19JTlZBTElEX1NSWExFViBMNENfSU5WQUxJRF9TSUdOQUxfSU5UMTYKKyNkZWZpbmUgTDRDX05XX0lOVkFMSURfU1FVQUwgIEw0Q19JTlZBTElEX1NJR05BTF9JTlQxNgorCisKKwordHlwZWRlZiBlbnVtIAoreworICAgIEw0Q19LRVlfRlJPTV9EUlZLUEQgPSAwLAorICAgIEw0Q19LRVlfRlJPTV9DS1BECit9bDRjX2tleXBhZF9wcmVzc190eXBlX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisJQUNMX05PVF9TVVBQT1JULAorCUFDTF9ESVNBQkxFLAorCUFDTF9FTkFCTEUKK30gbDRjX2FjbF9tb2RlX2VudW07CisKK2VudW0KK3sKKyAgIEdTTV9PTkxZLAorICAgR1BSU19PTkxZLAorICAgR1NNX0FORF9HUFJTCit9OworCit0eXBlZGVmIGVudW0KK3sKKyAgIFRDTV9JTlZBTElEX0wyUCwKKyAgIFRDTV9DQ01OSV9MMlAsCisgICBUQ01fUk5ESVNfTDJQLAorICAgVENNX01CSU1fTDJQLAorICAgLy9UQ01fSVBDT1JFX0wyUCwKKyAgIC8vVENNX1VQU19MMlAsCisgICAvL1RDTV9XTV9MMlAsCisgICBUQ01fUFBQX0wyUCwKKyAgIFRDTV9MSElGX0wyUCwKK31sNGNfdGNtX2wycF9lbnVtOworCit0eXBlZGVmIGVudW17CisgICAgRUkzR1BQSVJBVF9TUk9VQ0VfUkFUX1NUQVJUID0gMSwKKyAgICBFSTNHUFBJUkFUX1RBUkdFVF9SQVRfU1RBUlQgPSAyLAorICAgIEVJM0dQUElSQVRfU09VUkNFX1JBVF9GSU5JU0ggPSAzLAorICAgIEVJM0dQUElSQVRfVEFSR0VUX1JBVF9GSU5JU0ggPSA0LAorfSBlaTNncHBpcmF0X2FjdGlvbl9lbnVtOworCisKK3R5cGVkZWYgZW51bXsKKyAgICBFUEROQ1RSQU5TX1NSQ19SQVRfUEROX1RSQU5TRkVSX1NUQVJUID0gMSwKKyAgICBFUEROQ1RSQU5TX1RBUkdFVF9SQVRfUEROX1JFQ0VJVkVfU1RBUlQgPSAyLAorICAgIEVQRE5DVFJBTlNfU1JDX1JBVF9QRE5fVFJBTlNGRVJfRU5EID0gMywKKyAgICBFUEROQ1RSQU5TX1RBUkdFVF9SQVRfUEROX1JFQ0VJVkVfRU5EID0gNCwKK30gZXBkbmN0cmFuc19hY3Rpb25fZW51bTsKKworCit0eXBlZGVmIGVudW17CisgICAgTDRDX0MyS19TRVRfT05FLAorICAgIEw0Q19DMktfUkVTRVRfT05FLAorICAgIEw0Q19DMktfRk9SQ0VfU0VUX09ORSwKK30gbDRjX2Mya19mdW5jX2FjdGlvbl9lbnVtOworCisKK3R5cGVkZWYgZW51bXsKKyAgICBMNENfQzJLX0xXQ0dfUEROX1RSQU5TRkVSX1NUQVRFX05PTkUsCisgICAgTDRDX0MyS19MV0NHX1dBSVRJTkdfSUFfUVVFUllfQ05GLAorICAgIEw0Q19DMktfTFdDR19XQUlUSU5HX1RDTV9TRVRfSUFfUEROX0NORiwKKyAgICBMNENfQzJLX0xXQ0dfU0VUVElOR19QRE5fUkVDRUlWRURfRlJPTV9DMkssCit9IGw0Y19jMmtfbHdjZ19wZG5fY29udGV4dF90cmFuc2Zlcl9zdGF0ZV9lbnVtOworCit0eXBlZGVmIGVudW17CisgICAgTDRDX0MyS19JUkFUX05PTkUsCisgICAgTDRDX0MyS19JUkFUX09OR09JTkdfQzJLX1RPX0xURSwKKyAgICBMNENfQzJLX0lSQVRfT05HT0lOR19MVEVfVE9fQzJLLAorfSBsNGNfYzJrX2lyYXRfc3RhdGVfZW51bTsKKwordHlwZWRlZiBlbnVteworICAgIEw0Q19DMktfTENfbWQzX3RyYW5zZmVyX2NpZDBfd2l0aF9pYSwKKyAgICBMNENfQzJLX0xDX21kM190cmFuc2Zlcl9jaWQwX3dpdGhvdXRfaWEsCisgICAgTDRDX0MyS19MQ19tZDNfdHJhbnNmZXJfb3RoZXJfY2lkX3dpdGhfaWEsCisgICAgTDRDX0MyS19MQ19tZDNfbm90X3RyYW5zZmVyX2NpZDBfYnV0X3dpdGhfb3RoZXJfY2lkX2lhLAorICAgIEw0Q19DMktfTENfbWQzX25vdF90cmFuc2Zlcl9jaWQwX2FuZF9hbnlfaWEsCit9IGw0Y19jMmtfbGNfaXJhdF9kZWJ1Z19lbnVtOworCit0eXBlZGVmIGVudW17CisgICAgTDRDX1BTX0RFQlVHX0NNRF9NT0RFX05PVF9TVVBQT1JULAorICAgIAorICAgIEw0Q19QU19ERUJVR19FR1BDT19DSURfRVJST1IsCisgICAgTDRDX1BTX0RFQlVHX0VHUENPX0lFSURfSURFTlRJRllfRVJST1IsCisgICAgTDRDX1BTX0RFQlVHX0VHUENPXzAwMTdfRVJST1IsCisgICAgTDRDX1BTX0RFQlVHX0VHUENPX0ZGMDBfRVJST1IsCisgICAgTDRDX1BTX0RFQlVHX0VHUENPX0ZGMDFfRVJST1IsCisgICAgTDRDX1BTX0RFQlVHX0VHUENPX0ZGMDJfRVJST1IsCisgICAgTDRDX1BTX0RFQlVHX0VHUENPX0ZGMDNfRVJST1IsCisKKyAgICAKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9NYXhCaXRSYXRlVUxfRGVjb2RlRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfTWF4Qml0UmF0ZURMX0RlY29kZUVycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX0d1YXJhbnRlZUJpdHJhdGVVTF9EZWNvZGVFcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9HdWFyYW50ZWVCaXRyYXRlRExfRGVjb2RlRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfTWF4U2R1U2l6ZV9EZWNvZGVFcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9TZHVFcnJvclJhdGlvX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX1Jlc2lkdWFsQml0RXJyUmF0ZV9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9UcmFuc2ZlckRlbGF5X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19Ob3RTdXBwb3J0X1BmRGlyZWN0aW9uLAorICAgIEw0Q19QU19ERUJVR19HZXRFcHNRb3NFcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dEQ09OVF9QZHBUeXBlX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0RDT05UX1BkcFR5cGVfcGFyc2VfcmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0RDT05UX0FQTl9sZW5fMTAwX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR1RGVF9QYWNrZXRGaWx0ZXJJZGVudGlmaWVyX3BhcnNlX3Jlc3VsdF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dURlRfUHJvdG9jb2xOdW1iZXJOZXh0SGVhZGVyX3BhcnNlX3Jlc3VsdF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dURlRfTG9jYWxQb3J0UmFuZ2VfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHVEZUX1JlbW90ZVBvcnRSYW5nZV9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dURlRfSXBzZWNTcGlfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHVEZUX1Rvc1RyYWZmaWNDbGFzc0FuZE1hc2tfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHVEZUX0Zsb3dMYWJlbF9wYXJzZV9yZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHVEZUX1BmRGlyZWN0aW9uX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR1RGVF9QZkRpcmVjdGlvbl9wYXJzZV9yZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHVEZUX0xvY2FsQWRkckFuZFN1Ym5ldE1hc2tfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHVEZUX1FSSV9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dRUkVRX1ByZWNlZGVuY2VDbGFzc19FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dRUkVRX0RlbGF5Q2xhc3NfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHUVJFUV9SZWxpYWJpbGl0eUNsYXNzX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR1FSRVFfUGVha1Rocm91Z2hwdXRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHUVJFUV9NZWFuVGhyb3VnaHB1dF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dRTUlOX1ByZWNlZGVuY2VDbGFzc19FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dRTUlOX0RlbGF5Q2xhc3NfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHUU1JTl9SZWxpYWJpbGl0eUNsYXNzX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR1FNSU5fUGVha1Rocm91Z2hwdXRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHUU1JTl9NZWFuVGhyb3VnaHB1dF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9VbmRlZmluZUNvbW1hbmRDb25mbGljdCwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9UcmFmZmljX2NsYXNzX0JpZ2dlcl9UaGFuXzMsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfVHJhZmZpY0NsYXNzX1BhcnNlUmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX01heEJpdFJhdGVVTF9FbmNvZGVFcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9SZWFsVGltZVFvU19NdXN0TmVlZF9NYXhCaXRSYXRlVUwsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfTWF4Qml0UmF0ZVVMX1BhcnNlUmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX01heEJpdFJhdGVETF9FbmNvZGVFcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9SZWFsVGltZVFvU19NdXN0TmVlZF9NYXhCaXRSYXRlREwsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfTWF4Qml0UmF0ZURMX1BhcnNlUmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX0d1YXJhbnRlZUJpdFJhdGVVTF9FbmNvZGVFcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9SZWFsVGltZVFvU19NdXN0TmVlZF9HdWFyYW50ZWVCaXRSYXRlVUwsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfR3VhcmFudGVlZEJpdHJhdGVVTF9QYXJzZVJlc3VsdF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9HdWFyYW50ZWVCaXRSYXRlRExfRW5jb2RlRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfUmVhbFRpbWVRb1NfTXVzdE5lZWRfR3VhcmFudGVlQml0UmF0ZURMLAorICAgIEw0Q19QU19ERUJVR19DR0VRX0d1YXJhbnRlZWRCaXRyYXRlRExfUGFyc2VSZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfRGVsaXZlcnlPcmRlcl9CaWdnZXJUaGFuXzEsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfRGVsaXZlcnlPcmRlcl9QYXJzZVJlc3VsdF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9NYXhTZHVTaXplX0VuY29kZV9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9NYXhTZHVTaXplX1ZhbHVlX1VuZXhwZWN0ZWQsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfTWF4U2R1U2l6ZV9QYXJzZVJlc3VsdF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9TZHVFcnJvclJhdGlvX1ZhbHVlX1VuZXhwZWN0ZWQsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfU2R1RXJyb3JSYXRpb19QYXJzZVJlc3VsdF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9SZXNpZHVhbEJpdEVycm9yUmF0aW9fVmFsdWVfVW5leHBlY3RlZCwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9SZXNpZHVhbEJpdEVycm9yUmF0aW9fUGFyc2VSZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfRGVsaXZlcnlPZkVycm9uZW91c1NkdV9WYWx1ZV9VbmV4cGVjdGVkLAorICAgIEw0Q19QU19ERUJVR19DR0VRX0RlbGl2ZXJ5T2ZFcnJvbmVvdXNTZHVfUGFyc2VSZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFfVHJhbnNmZXJEZWxheV9FbmNvZGVFcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUV9UcmFuc2ZlckRlbGF5X1BhcnNlUmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX1RyYWZmaWNIYW5kbGluZ1ByaW9yaXR5X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX1RyYWZmaWNIYW5kbGluZ1ByaW9yaXR5X1BhcnNlUmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX1NvdXJjZVN0YXRpc3RpY3NEZXNjcmlwdG9yX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX1NvdXJjZVN0YXRpc3RpY3NEZXNjcmlwdG9yX1BhcnNlUmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX1NpZ25hbGxpbmdJbmRpY2F0aW9uX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX1NpZ25hbGxpbmdJbmRpY2F0aW9uX1BhcnNlUmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VRX0NvbW1hbmRDb25mbGljdCwKKyAgICBMNENfUFNfREVCVUdfQ0dBQ1RfQ0lEX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0NNT0RfQ0lEX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR1BBRERSX0dldEFkZHJfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHQVVUT19DZ2F1dG9OX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0FOU19MMlBfT25seUNhbkJlX1BQUF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dBTlNfQ0lEX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DR0VSRVBfbW9kZV9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUkVQX2Jmcl9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUU9TX1FjaV9wYXJzZV9yZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NHRVFPU19RQ0lfMF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUU9TX1FDSV82NV82Nl82OV83MF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUU9TX0RsR2JyX2VuY29kZV9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUU9TX0RsR2JyX3BhcnNlX3Jlc3VsdF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUU9TX1VsR2JyX2VuY29kZV9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUU9TX1VsR2JyX3BhcnNlX3Jlc3VsdF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUU9TX0RsTWJyX2VuY29kZV9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUU9TX0RsTWJyX3BhcnNlX3Jlc3VsdF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUU9TX1VsTWJyX2VuY29kZV9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dFUU9TX1VsTWJyX3BhcnNlX3Jlc3VsdF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQ0dBVVRIX0F1dGhQb3J0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19FQ05DRkdfTW9iaWxlRGF0YV9wYXJzZV9yZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0VDTkNGR19EYXRhUm9hbWluZ19wYXJzZV9yZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0VDTkNGR192b2x0ZV9wYXJzZV9yZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0VDTkNGR19JbXNUdGVzdE1vZGVfcGFyc2VfcmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19FR0RDT05UX1JvYW1pbmdJcFR5cGVfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX1ZaV0FQTkVfYXBuYl9wYXJzZV9yZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX1ZaV0FQTkVfYXBuZWRfcGFyc2VfcmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19FR0FDVF9DSURfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0FDVFRFU1RfQ0lEX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19FR0RFTFBGX3BmaWRfcGFyc2VfcmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19FR0RFTFBGX3BmaWRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0VHTE5LUEZfcGZpZF9wYXJzZV9yZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0VHTE5LUEZfcGZpZF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfRURBTExPV19tb2RlX0Vycm9yLAorCisgICAgTDRDX1BTX0RFQlVHX0VBUE5TWU5DX0FQTl9sZW5fMTAwX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19FQVBOU1lOQ19pbmFjdGl2aXR5X3RpbWVfRXJyb3IsCisKKyAgICBMNENfUFNfREVCVUdfQ01EX01PREVfTk9UX1NVUFBPUlRfSU5fVTY0X0hBTkRMRVIsCisgICAgTDRDX1BTX0RFQlVHX1VORVhQRUNURURfSUxNX1NFTlRfVE9fVTY0X0hBTkRMRVIsCisKKyAgICBMNENfUFNfREVCVUdfQzVHUU9TX1ZRSV9wYXJzZV9yZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0M1R1FPU19WUUlfMF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQzVHUU9TX1ZRSV82NV82Nl82OV83MF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQzVHUU9TX0RMX0dGQlJfcGFyc2VfcmVzdWx0X0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DNUdRT1NfVUxfR0ZCUl9wYXJzZV9yZXN1bHRfRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0M1R1FPU19ETF9NRkJSX3BhcnNlX3Jlc3VsdF9FcnJvciwKKyAgICBMNENfUFNfREVCVUdfQzVHUU9TX1VMX01GQlJfcGFyc2VfcmVzdWx0X0Vycm9yLAorCisgICAgTDRDX1BTX0RFQlVHX0dldFZnUW9zRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0dldFBkdVNlc3Npb25BbWJyRXJyb3IsCisgICAgTDRDX1BTX0RFQlVHX0NMQUROX1BhcnNlX0Vycm9yLAorICAgIEw0Q19QU19ERUJVR19DTEFETlVfTGVuZ3RoX0Vycm9yLAorfWw0Y19wc19kZWJ1Z19lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIFRDTV9SRUpFQ1RfUERQX0FDVCwKKyAgIFRDTV9BQ0NFUFRfUERQX0FDVAorfWw0Y190Y21fbWFudWFsX2Fuc3dlcl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfVENNX0NJRF9TVEFURV9OT05FID0gMCwKKyAgICBMNENfVENNX0NJRF9TVEFURV9BQ1RJTkcsCisgICAgTDRDX1RDTV9DSURfU1RBVEVfTU9ESU5HLAorICAgIEw0Q19UQ01fQ0lEX1NUQVRFX0RFQUNUSU5HLAorICAgIEw0Q19UQ01fQ0lEX1NUQVRFX0RFQUNUX0FCT1JUSU5HLAorfWw0Y190Y21faW50ZXJuYWxfY2lkX3N0YXRlOworCit0eXBlZGVmIGVudW0geworICAgIEw0Ql9GSVJTVF9DSEFOTkVMLAorICAgIEw0Ql9BVFBfRklSU1RfQ0hBTk5FTCA9IEw0Ql9GSVJTVF9DSEFOTkVMLAorICAgIEw0Ql9BVFBfTEFTVF9DSEFOTkVMID0gTDRCX0ZJUlNUX0NIQU5ORUwgKyBBVFBfQ0hBTk5FTF9OVU1CRVItMSwKKworICAgIC8qIGNoYW5uZWxzIGZvciBMNEJYWFgsIGp1c3QgZXN0aW1hdGlvbiAqLworICAgIEw0Ql9MNEJYWFhfRklSU1RfQ0hBTk5FTCwKKyAgICBMNEJfTDRCWFhYX0xBU1RfQ0hBTk5FTCA9IEw0Ql9MNEJYWFhfRklSU1RfQ0hBTk5FTCArIDIwLAorICAgIAorICAgIEw0Ql9NQVhfQ0hBTk5FTF9OVU1CRVIsCisgICAgCisgICAgTDRCX0lOVkFMSURfQ0hBTk5FTCA9IDB4ZmYKK30gbDRiX2NoYW5uZWxfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBMTU1JX1NSQywKKyAgIExNTUlfU1JDMiwgICAvKiBjdXJyZW50bHkgb25seSBmb3IgTU1JIFNNUyBiYWNrZ3Jhb3VuZCBhY3Rpb24gKi8KKyAgIFNBVF9TUkMsCisgICBXQVBfU1JDLAorICAgTDRDX1NSQywgICAKKyAgIFJNTUlfU1JDLCAvKlVBUlQgb3IgQ01VWCB2aXJ0dWFsIHBvcnQgMSovCSAgIAorICAgUk1NSV9TUkNfRU5EID0gUk1NSV9TUkMgKyBMNEJfTUFYX0NIQU5ORUxfTlVNQkVSIC0xLAorICAgUk1NSV9TQVQsIC8qU0FUIGluamVjdCBBVCovCisjaWYgZGVmaW5lZChfX01FU1NBR0VfQkFTRURfQVRfU1VQUE9SVF9fKQorICAgUk1NSV9NU0dfQVRfU1JDLAorICAgUk1NSV9NU0dfQVRfU1JDX0VORCA9IFJNTUlfTVNHX0FUX1NSQyArIFJNTUlfTUFYX01TR19CQVNFRF9BVF9DSEFOTkVMLTEsCisjZW5kaWYKKyNpZiAwIC8vbW92ZSB0byBBVFBfSU8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorICAgUk1NSV9BTEwsIC8qZm9yIHJtbWkgaW5kaWNhdGlvbiovCisjaWZkZWYgX19UQzAxX0lNU19TVVBQT1JUX18KKyAgIFJNTUlfU01TX0lNU19TUkMsCisjZW5kaWYKKyAgIEw0QlBXUl9TUkMsICAgICAgICAvLyBtb3ZlIHRvIGhlcmUgdGVtcG9yYXJpbHkgKGJ5IHVzYWdlIGFuZCBtZWFuaW5nLCBpdCBzaGFsbCBiZSBwdXQgYmVmb3JlIFJNTUlfU1JDIG9yIEw0Q19TUkMpCisgICBWRE1fU1JDLCAgICAgICAgIC8vIG5vdCB1c2VkIGFmdGVyIE1PTFkwMDQ0MjQ5NworICAgTUFYX1NPVVJDRV9OVU0sCisgICBMNENfTk9fVVNFUiwgLypubyB1c2VyIHJlZ2lzdGVyIGFjdGlvbiovCisgICBMNENfTlZSQU1fQUNDRVNTX1NSQywgLypOVlJBTSBhY2Nlc3Mgc291cmNlIGZvciBNTUkgcmVhZC93cml0ZSBOVlJBTSAqLworICAgU1NEU19TUkMsCisgICBSTU1JX1VSQ19TUkNfMiwKKyAgIElOVkFMSURfU1JDLypJbnZhbGlkIHNvdXJjZSBmb3IgTVQqLworfSBsNGNfc291cmNlX2lkX2VudW07CisKKyNkZWZpbmUgUk1NSV9VTlNPTElDSVRFRCAgICBSTU1JX0FMTAorI2lmZGVmIF9fQ01VWF9TVVBQT1JUX18KKyNkZWZpbmUgUk1NSV9VTlNPTElDSVRFRF8yICAoUk1NSV9VUkNfU1JDXzIpCisjaWZkZWYgX19UQzAxX0lNU19TVVBQT1JUX18KKyNkZWZpbmUgUk1NSV9VTlNPTElDSVRFRF8zICBSTU1JX1NNU19JTVNfU1JDCisjZW5kaWYgLyogX19UQzAxX0lNU19TVVBQT1JUX18gKi8KKyNlbmRpZiAvKiBfX0NNVVhfU1VQUE9SVF9fICovCisKKwordHlwZWRlZiBlbnVtCit7CisgICBMNENfQ09NTUFORF9TVEFURSA9IDAsCisgICBMNENfT05MSU5FX0NPTU1BTkRfU1RBVEUsCisgICBMNENfT05MSU5FX0RBVEFfU1RBVEUsCisgICBMNENfT05MSU5FX0RBVEFfR1BSU19TVEFURSwKKyAgIEw0Q19PTkxJTkVfU1RBVEUvL210azAxNjE2XzA4MDMyMjplaXRoZXIgQ1NEIG9yIEdQUlMgZGF0YSBzdGF0ZQorfSBsNGNfc3RhdGVfZW51bTsKKworLyoKK3R5cGVkZWYgZW51bQoreworICAgTDRDX0lETEVfU1RBVEUgPSAwLAorICAgTDRDX0NNRF9GT1JXQVJERURfRk9SX0FDVElPTl9TVEFURSwKKyAgIEw0Q19JTlRFUk1FRElBVEVfUkVTVUxUX0NPREVfU0VOVF9TVEFURQorfSBsNGNfc3ViX3N0YXRlX2VudW07CisqLworCit0eXBlZGVmIGVudW0KK3sKKwlMNENfQ0MsCisJTDRDX1NTLAorCUw0Q19TTVMsCisJTDRDX1JBQywKKwlMNENfVENNLAorCUw0Q19QSEIsCisJTDRDX0VRLAorI2lmIDAgLy9fX0NUTV9TVVBQT1JUX18JCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisjZW5kaWYJCisJTDRDX1NNVSwgIAorCUw0Q19TQVQsCisgICAgTDRDX01BWF9NT0RVTEVfSURfTlVNCit9bDRjX21vZHVsZV9pZDsKKwordHlwZWRlZiBlbnVtCit7CisgICBMNENfTk9fQUNUSU9OLAorICAgTDRDX0ZJUlNUX0FDVElPTiwKKyAgIE5WTV9SX0VYRSA9IEw0Q19GSVJTVF9BQ1RJT04sCisgICBOVk1fV19FWEUsCisgICAvL1VBUlRfUkVBRF9FWEUsCisgICBVQVJUX1dSSVRFX0VYRSwKKyAgIFVBUlRfUE9SVF9SRUFELAorICAgU0lNX1JfRVhFLAorICAgU0lNX1dfRVhFLAorICAgQ0NTUF9FWEUsCisgICBTSU1fRklMRSwKKyAgIENTRF9QUk9GX1NFVCwKKyAgIEFCTV9BQ1RfQVBQLAorICAgQUJNX0FDVCwKKyAgIEFCTV9BQ1RfRUNDLAorICAgUFBQX0FDVCwKKyAgIEFCTV9ERUFDVCwKKyAgIEFCTV9ESVNDLAorICAgRklSU1RfQ0NfQUNUSU9OLAorICAgQ0hMRF9FWEUgPSBGSVJTVF9DQ19BQ1RJT04sCisjaWZkZWYgX19NT0RfU01VX18KKyAgIENBQ01fRVhFLAorICAgQ0FNTV9FWEUsCisjZW5kaWYgLyogX19NT0RfU01VICovCisgICBDSFVQX0VYRSwKKyAgIENURlJfRVhFLCAgICAgICAgICAgICAgICAgICAgICAKKyAgIEFUQV9FWEUsCisgICBBVERfQVBQLAorICAgQVREX0VYRSwKKyAgIEFURF9FQ0MsCisgICBBVERfRUNDX0NIQU5HRV9SQVQsIC8vTUFVSV8wMjU1NDA2OAorICAgQVREX0VDQ19DSEFOR0VfUkFUX0FCT1JULCAvL01BVUlfMDI1NTQwNjgKKyAgIENNT0RfRVhFLAorICAgQVRIX0VYRSwKKyAgIFBBUlNFX1NTX0VYRSwKKyAgIENQSFNfQUxTX1VQREFURSwKKyAgIENITERfQ1NEX0RFQUNULCAgICAgICAgLyogdGhpcyBhY3Rpb24gaXMgdG8gaGFuZGxlIENTRCBhY3RpdmUgYW5kIGluY29taW5nIGNhbGwgY29taW5nICovCisgICBWVFNfRVhFLAorICAgRVZUU19FWEUsCisgICBFTVNEX0VYRSwKKyAgIEVNU0RTRVRfRVhFLAorICAgRU1TRFBVU0hfRVhFLAorICAgRVBTQVBfRVhFLAorICAgRVBTQVBQVUxMX0VYRSwKKyAgIENMQ0NfUkVBRCwKKyAgIExBU1RfQ0NfQUNUSU9OID0gQ0xDQ19SRUFELAorICAgRklSU1RfU1NfQUNUSU9OLCAgICAgICAgICAgICAgICAgCisgICBDQUVNTFBQX0VYRSA9IEZJUlNUX1NTX0FDVElPTiwKKyAgIENDRkNfUkVQRUFULAorICAgQ0NGQ19FWEUsCisgICBDQ1dBX1JFUEVBVCwKKyAgIENDV0FfRVhFLAorICAgSVRSR19FWEUsCisgICBDRElQX0VYRSwKKyAgIENMQ0tfU1NfUkVQRUFULAorICAgQ0xDS19TU19FWEUsCisgICBDTElQX0VYRSwKKyAgIENMSVJfRVhFLAorICAgQ05BUF9FWEUsCisgICBDT0xQX0VYRSwKKyAgIENPTFJfRVhFLAorICAgQ1BXRF9TU19FWEUsICAgICAgICAgICAgICAgICAgICAgCisgICBDQl9GQUNfSU5ELAorICAgQ0NCU19FWEUsCisgICBDVVNEX0VYRSwKKyAgIFVTU1JfRkFDX0lORCwKKyAgIFVTU05fRkFDX0lORCwKKyAgIExBU1RfU1NfQUNUSU9OID0gVVNTTl9GQUNfSU5ELAorI2lmZGVmIENTRF9TVVBQT1JUCisgICAvL0ZJUlNUX0RBVEFfQUNUSU9OLAorICAgLy9MQVNUX0RBVEFfQUNUSU9OLAorI2VuZGlmCisgICBGSVJTVF9FUV9BQ1RJT04sCisgICBWT0xfU0VUID0gRklSU1RfRVFfQUNUSU9OLAorICAgQVVESV9OQU1FX1BMQVksIAorICAgQVVESV9OQU1FX1NUT1AsLyogbXRrMDA0NjggYWRkIGZvciBwbGF5IGF1ZGlvIGJ5IG5hbWUqLworICAgQVVESV9TVFJJTkdfUExBWSwgCisgICBBVURJX1NUUklOR19TVE9QLCAvKiBtdGswMDQ2OCBhZGQgZm9yIHBsYXkgYXVkaW8gYnkgc3RyaW5nICovCisgICBBVURJX1NFVCwgLyogZm9yIGF1ZGlvIHByb2ZpbGUgc2V0IDAzMDYyNyBtdGswMDQ2OCovCisgICBBVURJX1BBUkFNX1NFVCwKKyAgIEdBSU5fU0VULAorICAgQ01VVF9TRVQsCisgICBDU0lMX1NFVCwKKyAgIENBTE1fU0VULCAgIC8qIGFsZXJ0LCByZW1vdmVkIGxhdGVyICovCisgICBDS1BEX0VYRSwgICAgICAgICAgICAgICAgICAgICAgIAorICAgQ0lORF9TRVQsCisgICBDQUxBX1NFVCwKKyAgIENBTERfRVhFLAorICAgQ1NERl9TRVQsCisgICBDU1RGX1NFVCwKKyAgIENMQU5fU0VULAorICAgR1BJT19TRVQsCisgICBDU0dUX1NFVCwKKyAgIENHQ0lfU0VULAorICAgQ1ZJQl9TRVQsCisgICBDTFZMX1JFQUQsCisgICBDUlNMX1JFQUQsCisgICBBVElQUl9TRVQsCisgICBIV19QUk9GX1NFVCwKKyAgIE1TX1NOX1JFQUQsCisgICBNU19TVl9SRUFELCAvL210azAyNTA4XzA5MDMxMCBhZGQgZm9yIFNWIHJlYWQKKyAgIE1TX1NOX1NFVCwKKyAgIE1TX1NWX1NFVCwgLy9tdGswMjUwOF8wOTAzMTAgYWRkIGZvciBTViBzZXQKKyAgIExPQ0tfTlZSQU0sCisgICBURVNUX1JFUE9SVF9SRUFELCAgLy9tdGswMDcxNCBhZGQgZm9yIGF1dG90ZXN0IHJlcG9ydCByZWFkCisgICBSRl9URVNUX1NFVCwKKyNpZmRlZiBfX1RDMDFfXworICAgUlhfUlNTSV9HRVQsICAgLy90byBnZXQgdGhlIFJTU0kKKyNlbmRpZgorLy8jaWZkZWYgVk1fU1VQUE9SVAorICAgVk1fR0VUX0VYRSwKKyAgIFZNX1JFQ19FWEUsCisgICBWTV9QTEFZX0VYRSwKKyAgIFZNX0RFTF9FWEUsCisgICBWTV9TVE9QX0VYRSwKKyAgIFZNX0FCVF9FWEUsCisgICBWTV9QQVVfRVhFLAorICAgVk1fUkVTX0VYRSwKKyAgIFZNX0FQUF9FWEUsCisgICBWTV9SRU5fRVhFLAorLy8jZW5kaWYKKworICAgUE9XRVJPTl9FWEUsCisgICBQT1dFUk9GRl9FWEUsCisjaWZkZWYgX19NT0JJTEVfQlJPQURCQU5EX1BST1ZJU0lPTl9DT05URVhUX18KKyAgIE1PQklMRV9CUk9BREJBTkRfUFJPVklTSU9OX0NPTlRFWFRfR0VULAorICAgTU9CSUxFX0JST0FEQkFORF9QUk9WSVNJT05fQ09OVEVYVF9HRVRfQUxMLCAgIAorICAgTU9CSUxFX0JST0FEQkFORF9QUk9WSVNJT05fQ09OVEVYVF9TRVQsCisjZW5kaWYgLyogX19NT0JJTEVfQlJPQURCQU5EX1BST1ZJU0lPTl9DT05URVhUX18gKi8KKworICAgUFNfQ09ORl9URVNUX1BST0ZJTEVfU0VULAorCisgICBFTkZDX0VYRSwKKyAgIEVTRFNfU0VULAorICAgTEFTVF9FUV9BQ1RJT04gPSBFU0RTX1NFVCwKKyAgIAorI2lmZGVmIF9fSVJEQV9TVVBQT1JUX18KKyAgIEZJUlNUX0lSREFfQUNUSU9OLAorICAgUFBQX0RFQUNUX0VYRSA9IEZJUlNUX0lSREFfQUNUSU9OLCAvKiBhZGQgdG8ga2VlcCBQUFAgZGVhY3RpdmUgKi8KKyAgIExBU1RfSVJEQV9BQ1RJT04gPSBQUFBfREVBQ1RfRVhFLAorI2VuZGlmIC8qX19JUkRBX1NVUFBPUlRfXyovCisKKworI2lmZGVmIF9fTU9EX1RDTV9fCisgICBGSVJTVF9HUFJTX0FDVElPTiwKKyAgIENHQUNUX0FDVF9FWEUgPSBGSVJTVF9HUFJTX0FDVElPTiwKKyAgIENHQUNUX0RFQUNUX0VYRSwKKyAgIENHQUNUX1RFU1QsCisgICBDR0FDVF9BVFRBQ0hfRVhFLAorICAgQ0dBTlNfRVhFLAorICAgQ0dDTU9EX0VYRSwKKyAgIENHRENPTlRfRVhFLAorICAgLy9HUFJTX0NPVU5URVJfUkVTRVQsCisgICBDR0RTQ09OVF9FWEUsCisgICBDR1FNSU5fRVhFLAorICAgQ0dRUkVRX0VYRSwKKyAgIENHRVFNSU5fRVhFLAorICAgQ0dFUVJFUV9FWEUsCisgICAvL210azA0MTIxCisgICBDR0VRT1NfRVhFLAorICAgQzVHUU9TX0VYRSwKKyAgIENHVEZUX0VYRSwKKyAgIEVHUEFVX0VYRSwgLy8gbXRrMDA0NjggYWRkIGZvciBwcHAgYXV0aCBpbmZvIHNldCAgMDMxMDE1CisgICBDR0RBVEFfRVhFLAorICAgQ0dBVVRIX0VYRSwKKyAgIEVHRENPTlRfRVhFLAorICAgRUFQTlNZTkNfRVhFLAorICAgRUdQQ09fRVhFLAorCisjaWZkZWYgX19NRURJQVRFS19TTUFSVF9RT1NfXworICAgU01BUlRfUU9TX0VOVFJZX1NFVCwKKyAgIFNNQVJUX1FPU19NT0RFX1NFVCwKKyNlbmRpZiAvKiBfX01FRElBVEVLX1NNQVJUX1FPU19fICovCisKKyAgIC8qIFZaV19TVVBQT1JUICovCisgICBWWldBUE5FX1NFVCwKKyAgIFZaV0FQTkVUTVJfU0VULAorICAgVlpXQVBOUkRQX1NFVCwKKyAgIFJFVklWRV9QRE5fRVhFLAorIAorICAgVENNX1NUQVJUX0VYRSwKKworICAgQ0dVTkRFRl9FWEUsCisgICBMQVNUX0dQUlNfQUNUSU9OID0gQ0dVTkRFRl9FWEUsCisjZW5kaWYKKyNpZmRlZiBfX01PRF9SQUNfXworICAgRklSU1RfTldfQUNUSU9OLAorICAgQ0dBVFRfQVRUQUNIX0VYRSA9IEZJUlNUX05XX0FDVElPTiwKKyAgIENHQVRUX0RFVEFDSF9FWEUsCisgICBBVFRBQ0hfRVhFLAorICAgREVUQUNIX0VYRSwKKyAgIENHQ0xBU1NfU0VULAorICAgCisgICAvKiBKb2hubnk6IHdlIHVzZSBTRVRfR1BSU19DT05fVFlQRSB0cmlja2x5OgorICAgICAgICAgICAgICAxLiB3ZSBzZXQgaXQgYnV0IHNlbmQgUlNQIHRvIE1NSSB3aXRob3V0IENORgorICAgICAgICAgICAgICAyLiB3ZSBjbGVhciBpdCB3aGVuIHdlIHJlY2VpdmUgQ05GCisgICAgICAgICAgICAgIDMuIHdlIHdpbGwgY2hlY2sgY29tbWFuZCBjb25mbGljdCBpbiBsNGNfbndfc2V0X2dwcnNfY29ubmVjdF90eXBlX3JlcSgpICovCisgICBTRVRfR1BSU19DT05fVFlQRSwJCQkvKiAnMDQvMDEvMDcgbXRrMDA0NjggYWRkIGZvciBzZXQgZ3BycyBjb25uZWN0IHR5cGUqLworICAgU0VUX0hTUEFfTU9ERSwvL210azAyMjg1LCBoc3BhX21taQorICAgQ0JORF9TRVQsCisgICBDT1BTX0VYRSwKKyAgIENPUFNfQVRUQUNIX0VYRSwKKyAgIFBTRE1fQVRUQUNIX0VYRSwKKyAgIE5XU0VMX0VYRSwKKyAgIFBXUk9GRl9ERVRBQ0gsCisgICBSRk9GRl9ERVRBQ0gsCisgICBSRk9GRl9TSU1fUE9XRVJPRkYsCisgICBSRk9OX1NFVF9SQVRfTU9ERSwKKyAgIFJGT05fQVRUQUNILAorICAgQ09QU19URVNULAorICAgQ09QU19URVNUX1NUT1AsIC8vbXRrMDE2MTZfMDcwOTEwIAorICAgQ1NHX1RFU1QsCisgICBDU0dfVEVTVF9TVE9QLAorICAgU0VUX1JBVF9NT0RFX0RFVEFDSCwKKyAgIFNFVF9SQVRfTU9ERSwKKyAgIFNFVF9SQVRfTU9ERV9BVFRBQ0gsCisgICBQV1JPTl9TRVRfUkFUX01PREUsCisgICBQV1JPTl9BVFRBQ0gsCisgICBTWVNfU0VMLAorICAgU1lTX0NPTkZJRywKKyAgIFNFVF9DVF9NT0RFLAorICAgQ1NSQV9SRl9PRkYsCisgICBDU1JBX1NJTV9PRkYsCisgICBDU1JBX0VYRSwKKyAgIENTUkFfRklOSVNIX1BIQVNFMSwKKyAgIENTUkFfRklOSVNIX1BIQVNFMiwKKyAgIEVBQ1RTX0VYRSwKKyAgIEVVRURSWF9FWEUsCisgICBDTlRJX0VYRSwKKyAgIExBU1RfTldfQUNUSU9OID0gQ05USV9FWEUsCisjZW5kaWYKKyAgIEZJUlNUX1BIQl9BQ1RJT04sCisgICBDUEJGX0VYRT0gRklSU1RfUEhCX0FDVElPTiwKKyAgIFBIQl9GRE5fQ0hFQ0ssLy9hY3Rpb24gZm9yIGZkbiBjaGVjayBmb3Igc21zIHNjYSBhbmQgZGEKKyAgIFBIQl9OVU1CRVJfQ0hFQ0ssIC8vIGZvciB3aXNlLCBjaGVjayBpZiBwaG9uZSBudW1iZXIgaXMgRUNDIG9yIEZETgorICAgUEhCX0ZETl9HRVRfTkFNRSwgCisgICBDUEJSX0VYRSwKKyAgIEVDUEJSX0VYRSwKKyAgIENQQlJfUkFOR0VfRVhFLAorICAgU0NQQlJfRVhFLAorICAgRVBCVU1fRVhFLAorICAgQ05VTV9FWEUsCisgICBDUEJXX0VYRSwKKyAgIEVDUEJXX0VYRSwKKyAgIENQQldfVVNJTV9DSEVDSywgCisgICBDUEJEX0VYRSwKKyAgIENQQlJfTE4sCisgICBDUEJXX0xOLAorICAgU1lOQ19MTiwgCisgICBFQVBQUk9WRV9FWEUsCisgICBDUEJEX0xOLAkKKyAgIExBU1RfUEhCX0FDVElPTiA9IENQQkRfTE4sCisgICBGSVJTVF9TSU1fQUNUSU9OLAorICAgQ0xDS19FWEUgPSBGSVJTVF9TSU1fQUNUSU9OLAorICAgQ01BUl9FWEUsCisgICBDUElOX0VYRSwKKyAgIENQSU4yX0VYRSwgICAKKyAgIEVQSU5fRVhFLAorICAgQ1BPTF9FWEUsCisgICBDUFVDX0VYRSwKKyAgIENQV0RfRVhFLAorICAgWEROX0VYRSwKKyAgIENTSU1fRVhFLAorICAgQ1JTTV9FWEUsCisgICBDR0xBX0VYRSwgLy8gICBNQVVJXzAzMDgyMzkxLy9tdGswMjUxNF9uZmMKKyAgIEVDR0xBX0VYRSwKKyAgIENDSE9fRVhFLAorICAgQ0NIQ19FWEUsCisgICBGSUxFX0NIQU5HRV9FWEUsCisgICBTUE5fRVhFLAorICAgTEFTVF9TSU1fQUNUSU9OID0gU1BOX0VYRSwKKyAgIEZJUlNUX1NNU19BQ1RJT04sICAgICAgICAgICAgICAgCisgICBDR1NNU19TRVQgPSBGSVJTVF9TTVNfQUNUSU9OLAorICAgQ01HQ19FWEUsCisgICBDTUdEX0VYRSwKKyAgIENNR0RfVEVTVF9FWEUsCisgICBFUVNJX0VYRSwKKyAgIENNR0xfRVhFLAorICAgQ01HUl9FWEUsCisgICBDTUdTX0VYRSwKKyAgIENNR1NfUERVX0VYRSwKKyAgIENNR1dfRVhFLAorICAgQ01HV19DT1BZLAorICAgRU1HTF9FWEUsCisgICBDTVNTX0VYRSwKKyAgIENNU1RfU0VULCAvL210azAxNjE2XzA3MDcwMzpzbXMgc2V0IHN0YXR1cyAsIG1taQorICAgQ1BNU19TRVQsCisgICAvKkNSRVNfRVhFLAorICAgQ1NBU19FWEUsKi8KKyAgIENTQ0FfU0VULAorICAgQ05NSV9TRVQsICAgICAgICAgICAgICAgICAgICAgCisgICBNQUlMQk9YX1NFVCwgCQkJCQkvKiAwMzA2MTcgbXRrMDA0NjggYWRkIGZvciBzZXQgbWFpbCBib3ggYWRkcmVzcyovCisgICBNQUlMQk9YX0dFVCwJCisgICBNQklfU0VULC8vbXRrMDE2MTZfMDcxMDE2OiBSNC9SNSBTTVMKKyAgIENTTVBfU0VULAorICAgQ1NBU19TRVQsCisgICBDUkVTX1NFVCwKKyAgIExBU1RfU01TX0FDVElPTiA9IENSRVNfU0VULAorI2lmZGVmIF9fQ0JfXworICAgQ0JNSV9TRVQsCisjZW5kaWYKKyNpZmRlZiBfX1NBVF9fCisgICBTQVRfQVREX0VYRSwKKyAgIFNBVF9VU0RfRVhFLAorICAgTUVOVV9TRUxfRVhFLAorICAgU0FUX0NNR1NfRVhFLAorICAgU0FUX0RUTUZfRVhFLAorI2lmZGVmIF9fU0FUQ0VfXyAgIAorICAgLy9NQVVJXzAyMzk1MTM0IFNBVF9DU0RfRVhFLAorICAgU0FUX09QRU5fQ0hBTk5FTF9FWEUsCisgICBTQVRfU0VORF9EQVRBX0VYRSwKKyAgIFNBVF9SRUNWX0RBVEFfRVhFLAorI2VuZGlmIC8qIF9fU0FUQ0VfXyAqLyAgIAorI2VuZGlmCisKKworICAgIEVTM0dfRVhFLAorICAgIERTU19FWEUsIC8vIER5bmFtaWMgU0lNIFNXSVRDSAorICAgQVRPX0VYRSwgICAgICAgICAgICAgICAgICAgICAgCisjaWZkZWYgX19XQVBfU1VQUE9SVAkJCQkJLyogMDMwNTI4IG10azAwNDY4IGFkZCBmb3IgV0FQIHByb2ZpbGUgc2V0IGFuZCBxdWVyeSovCisgICBDV0FQX0FDQ0VTUywKKyAgIC8vTDRDX0xBU1RfQUNUSU9OID0gQ1dBUF9BQ0NFU1MKKy8vI2Vsc2UKKyAgIC8vTDRDX0xBU1RfQUNUSU9OID0gQVRPX0VYRQorI2VuZGlmIAorCisjaWZkZWYgX19UQ01fVVRfXworCVRDTV9VTkRFRl9OT19BQ1RJT04sCisJVENNX1VOREVGX0NHRENPTlRfRVhFLAorCVRDTV9VTkRFRl9DR0RTQ09OVF9FWEUsCisJVENNX1VOREVGX0NHUU1JTl9FWEUsCisJVENNX1VOREVGX0NHUVJFUV9FWEUsCisJVENNX1VOREVGX0NHRVFNSU5fRVhFLAorCVRDTV9VTkRFRl9DR0VRUkVRX0VYRSwKKwlUQ01fVU5ERUZfQ0dURlRfRVhFLAorI2VuZGlmCisKKworI2lmIDAgLy9fX0NUTV9TVVBQT1JUX18KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorCisKKyAgICBFVFNUTFBfRVhFLAorCisjaWZkZWYgX19TQVRfXworICAgIFNBVF9TVEtTTVNPSVBfUERVX0VYRSwgICAKKyAgICBTQVRfU1RLU01TX01PREUxX0VYRSwKKyNlbmRpZgorCisjaWZkZWYgX19HRU1JTklfXworICAgIFJTSU1fT05HT0lORywKKyAgICBBS0FfT05HT0lORywKKyNlbmRpZgorCisgICAgTUVUQV9FWEUsCisgICAgT1AxMl9MT0NLX0RFVEFDSCwKKyAgICBPUDEyX1VOTE9DS19BVFRBQ0gsCisgICAgT1AxMl9MT0NLX0FUVEFDSF9BTlksCisgICAgT1AwMV9VTkxPQ0tfQVRUQUNILAorICAgIE9QMDFfTE9DS19ERVRBQ0gsCisgICAgSU1FSV9NRUlEX0xPQ0tfREVUQUNILAorICAgIElNRUlfTUVJRF9VTkxPQ0tfQVRUQUNILAorICAgIElNRUlfTUVJRF9MT0NLX0FUVEFDSF9BTlksICAgIAorICAgIEFMVEVSX1NFUlZJQ0VfTU9ERV9FWEUsCisjaWZkZWYgX19NQklNX01TX05FVFdPUktfQkxBQ0tMSVNUX18JCisgICAgTVNfQkxBQ0tfTElTVF9MT0NLX0RFVEFDSCwKKyAgICBNU19CTEFDS19MSVNUX1VOTE9DS19BVFRBQ0gsCisgICAgTVNfQkxBQ0tfTElTVF9VTkxPQ0tfREVUQUNILAorICAgIE1TX0JMQUNLX0xJU1RfTE9DS19BVFRBQ0hfQU5ZLAorI2VuZGlmCisjaWYgZGVmaW5lZChfX0VDQUxMX1NVUFBPUlRfXykgfHwgZGVmaW5lZChfX05HX0VDQUxMX1NVUFBPUlRfXykKKwlFQ0FMTFFVRVJZX0VYRSwKKyNlbmRpZgorICAgIEw0Q19MQVNUX0FDVElPTgorfSBsNGNfYWN0aW9uX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEw0Q19QRU5ESU5HX05PX0FDVElPTiwKKyAgICBMNENfUEVORElOR19ERVRBQ0hfRVhFLAorICAgIEw0Q19QRU5ESU5HX0FUVEFDSF9FWEUsCisgICAgTDRDX1BFTkRJTkdfUFNfQVRUQUNIX0VYRSwKKyAgICBMNENfUEVORElOR19QU19ERVRBQ0hfRVhFLAorICAgIEw0Q19QRU5ESU5HX09QMDFfU0lNX0xPQ0tfREVUQUNIX0VYRSwKKyAgICBMNENfUEVORElOR19PUDAxX1NJTV9VTkxPQ0tfQVRUQUNIX0VYRSwKKyAgICBMNENfUEVORElOR19PUDAxX1JBVF9MT0NLX0VYRSwKKyAgICBMNENfUEVORElOR19PUDAxX1JBVF9VTkxPQ0tfRVhFLAorICAgIEw0Q19QRU5ESU5HX0lNRUlfTUVJRF9MT0NLX0RFVEFDSF9FWEUsCisgICAgTDRDX1BFTkRJTkdfSU1FSV9NRUlEX1VOTE9DS19BVFRBQ0hfRVhFLCAgIAorICAgIEw0Q19QRU5ESU5HX0lNRUlfTUVJRF9MT0NLX0FUVEFDSF9BTllfRVhFLAorICAgIEw0Q19QRU5ESU5HX0ZPUkNFX0NIQU5HRV9SQVRfRVhFLAorICAgIEw0Q19QRU5ESU5HX1VFX0NBUEFCSUxJVFlfRVhFLAorI2lmZGVmIF9fTUJJTV9NU19ORVRXT1JLX0JMQUNLTElTVF9fCQorICAgIEw0Q19QRU5ESU5HX01TX0JMQUNLX0xJU1RfTE9DS19ERVRBQ0hfRVhFLAorICAgIEw0Q19QRU5ESU5HX01TX0JMQUNLX0xJU1RfVU5MT0NLX0FUVEFDSF9FWEUsCisgICAgTDRDX1BFTkRJTkdfTVNfQkxBQ0tfTElTVF9VTkxPQ0tfREVUQUNIX0VYRSwKKyAgICBMNENfUEVORElOR19NU19CTEFDS19MSVNUX0xPQ0tfQVRUQUNIX0FOWV9FWEUKKyNlbmRpZgkKK30gbDRjX3BlbmRpbmdfYWN0aW9uX2VudW07CisKK3R5cGVkZWYgZW51bSAKK3sKKyAgICBMNENfUk9PVF9OT19BQ1RJT04sCisgICAgTDRDX1JPT1RfUFdST0ZGX0VYRSwKKyAgICBMNENfUk9PVF9FRlVOX0VYRSwKKyAgICBMNENfUk9PVF9QUkVfUkVDT05GSUdfRVhFLCAgLy8gUHJlLXByb2Nlc3MgYmVmb3JlIHJlY29uZmlndXJlIHByb2Nlc3NpbmcKKyAgICBMNENfUk9PVF9SRUNPTkZJR19FWEUsCisgICAgTDRDX1JPT1RfQ0hFQ0tfRFVQTEVYX01PREVfRVhFLAorICAgIEw0Q19ST09UX1NUQVRFX1JFQ09WRVJfRVhFLCAvLyBSZWNvdmVyIGJhY2sgdG8gb3JpZ2luYWwgRUZVTiBzdGF0ZQorICAgIEw0Q19ST09UX05PVElGWV9SU1ZBX01PREVfU1dJVENIX0VYRSwgLy9Ob3RpZnkgUlNWQSB0aGUgYmVnaW5uaW5nIG9mIGR1cGxleCBtb2RlIHN3aXRjaAorICAgIEw0Q19ST09UX0xBU1RfQUNUSU9OCit9bDRjX3Jvb3RfYWN0aW9uX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgTDRDX0ZJUlNUX0lORCwgICAgICAgICAgICAgICAgLyowKi8KKyAgIElOSVRfSU5EID0gTDRDX0ZJUlNUX0lORCwKKyAgIE5WTV9SRUFEWV9JTkQsCisgICBTSU1fRkFJTF9JTkQsCisgICBQSEJfRklOX0lORCwKKyAgIExOX0ZJTl9JTkQsCisgICAKKyAgIEZJUlNUX0NDX0lORCwKKyAgIENBT0NfSU5EID0gRklSU1RfQ0NfSU5ELAorICAgU1BFRUNIX0lORCwKKyAgIEFMRVJUX0lORCwKKyAgIENDV0FfSU5ELAorICAgQ1JJTkdfSU5ELAorICAgRElTQ19JTkQsCisgICBSRUxfSU5ELCAgICAgICAgICAgICAgICAgICAgICAgLyogMTAgKi8KKyAgIENNT0RfSU5ELCAgICAgICAgICAgICAgICAgICAgIAorICAgQ09OTl9JTkQsCisgICBOT1RJRllfU1NfSU5ELAorICAgTlNfQ1VHX0lORCwKKyAgIE5TX0VDVF9JTkQsCisgICBOU19DTkFQX0lORCwKKyAgIE5TX0NDQlNfSU5ELAorICAgQ1BIU19BTFNfSU5ELC8vbXRrMDA0NjggYWRkIGZvciByaXBwbGUgQ1BIUyBmZWF0dXJlCisgICBTVEFSVF9EVE1GLAorICAgU1RPUF9EVE1GLAkJCQkJCS8qIDIwICovCisgICBQQVJTRV9TU19JTkQsCisgICBMQVNUX0NDX0lORCA9IFBBUlNFX1NTX0lORCwKKyAgIAorICAgRklSU1RfU1NfSU5ELAorICAgQ0JfUFdEX0lORCA9IEZJUlNUX1NTX0lORCwKKyAgIENVU0RfUl9JTkQsCisgICBDVVNEX05fSU5ELCAgICAgICAgICAgICAgICAgCisgICBDUEhTX0NGVV9JTkQsIC8qIG10azAwNDY4IDAzMDYwMiBhZGQgZm9yIFBhdWwgY3BocyBmZWF0dXJlKi8KKyAgIExBU1RfU1NfSU5EID0gQ1BIU19DRlVfSU5ELAorICAgCisgICBGSVJTVF9FUV9JTkQsCisgICBLRVlfSU5EID0gRklSU1RfRVFfSU5ELAorICAgUE9XRVJPTl9JTkQsCisgICBCQVRfSU5ELAorLy8jaWZkZWYgVk1fU1VQUE9SVAorICAgVk1fUkVDX0lORCwKKyAgIFZNX1BMQVlfSU5ELAkJCQkJCS8qMzAqLworLy8jZW5kaWYKKyAgIFJUQ19JTkQsCisgICBBTEFSTV9JTkQsCisgICBBRENfQ0hBTl9JTkQsCisgICBFTV9TRVRfTENNX0lORCwvL210azAwNDY4IGFkZCBmb3IgZmFjdG9yeSBtb2RlIHRlc3QKKyAgIEVNX0tFWVBBRF9BQ1RfSU5ELC8vbXRrMDA0NjggYWRkIGZvciBmYWN0b3J5IG1vZGUgdGVzdAorICAgRU1fTENNX1NMRUVQX0lORCwvL210azAwNDY4IGFkZCBmb3IgTENNIGJhY2tsaWdodCB0dXJuIG9uL29mZgorICAgRkFDVE9SWV9JTkQsIC8vbXRrMDA0NjggMTEwNyBhZGQgZm9yIGZhY3RvcnkgdGVzdCBpbmZvcm0gTU1JCisgICBNTUlfUFJPRl9TRVRfSU5ELCAvL210azAwNDY4IGFkZCAxMTE3IGZvciBtbWkncyBwcm9maWxlIHNldHRpbmcgaW5kaWNhdGlvbgorICAgQVVESV9TVE9QX0lORCwKKyAgIEdQSU9fSU5ELAorICAgTEFTVF9FUV9JTkQgPSBHUElPX0lORCwKKyAgIAorI2lmZGVmIF9fSVJEQV9TVVBQT1JUX18KKyAgIEZJUlNUX0lSREFfSU5ELAorICAgSVJEQV9ESVNDT05fSU5EID0gRklSU1RfSVJEQV9JTkQsCisgICBMQVNUX0lSREFfSU5EID0gSVJEQV9ESVNDT05fSU5ELAorI2VuZGlmIC8qIF9fSVJEQV9TVVBQT1JUX18gKi8KKworI2lmZGVmIF9fTU9EX1RDTV9fCisgICBGSVJTVF9HUFJTX0lORCwKKyAgIEdBQ1RfSU5EID0gRklSU1RfR1BSU19JTkQsCisgICBHUFJTX1NUQVRVU19JTkQsCisgICBMQVNUX0dQUlNfSU5EID0gR1BSU19TVEFUVVNfSU5ELAkJCQkKKyNlbmRpZgorCisjaWZkZWYgX19NT0RfUkFDX18KKyAgIEZJUlNUX05XX0lORCwKKyAgIFJFR19JTkQgPSBGSVJTVF9OV19JTkQsCQkJCS8qNDAqLworICAgQVRUQUNIX0lORCwKKyAgIENTUV9JTkQsCisgICBDVFpSX0lORCwgICAgICAgICAgICAgICAgICAgICAKKyAgIExBU1RfTldfSU5EID0gQ1RaUl9JTkQsCisjZW5kaWYKKworCS8qIG10azAwNDY4MDMwNTAzMTUgYWRkIGVudW0gSU5EIHNvIHRoYXQgaW4gbDRjX3NhdF9tc2cKKwkgKiB3ZSBjYW4gdXNlIG1taV9pbmRfZnQgdG8gdXNlIGl0LiBtb2RpZmllZCBkaXJlY3QgY2FsbCB0aGUgCisJICogZnVuY2l0b24gaGFuZGxlciBhbmQgbW9yZSBzeXN0ZW1saXplCisJKi8KKyNpZmRlZiBfX1NBVF9fCisgICBGSVJTVF9TQVRfSU5ELCAKKyAgIFNBVF9EU1BMX1RFWFRfSU5EID0gRklSU1RfU0FUX0lORCwgCisgICBTQVRfR0VUX0lOS0VZX0lORCwKKyAgIFNBVF9HRVRfSU5QVVRfSU5ELAorICAgU0FUX1NFVFVQX01FTlVfSU5ELAorICAgU0FUX1NFTEVDVF9JVEVNX0lORCwKKyAgIFNBVF9QTEFZX1RPTkVfSU5ELAorICAgU0FUX1NFVFVQX0NBTExfSU5ELAkJCQkJLyo1MCAqLworICAgU0FUX1NFTkRfU01TX0lORCwKKyAgIFNBVF9TRU5EX1NTX0lORCwKKyAgIFNBVF9TRU5EX1VTU0RfSU5ELAorICAgU0FUX01NSV9JTkZPX0lORCwKKyAgIFNBVF9TRVRVUF9JRExFX0RTUExfSU5ELCAvLzAzMDYwMiBtdGswMDQ2OCBhZGQgZm9yIHBhdWwgU0FUIFtiZWdpbl0KKyAgIFNBVF9SVU5fQVRfQ09NTUFORF9JTkQsCisgICBTQVRfU0VORF9EVE1GX0lORCwKKyAgIFNBVF9MQU5HX05PVElGWV9JTkQsCisjaWZkZWYgX19TQVRDRV9fICAgCisgICBTQVRfT1BFTl9DSEFOTkVMX0lORCwKKyAgIFNBVF9DTE9TRV9DSEFOTkVMX0lORCwKKyAgIFNBVF9TRU5EX0RBVEFfSU5ELAorICAgU0FUX1JFQ1ZfREFUQV9JTkQsCisjZW5kaWYgLyogX19TQVRDRV9fICovICAgCisgICBTQVRfTEFVTkNIX0JST1dTRVJfSU5ELAkKKyAgIFNBVF9OT19PVEhFUl9DTURfSU5ELAorICAgTEFTVF9TQVRfSU5EID0gU0FUX05PX09USEVSX0NNRF9JTkQsLy8wMzA2MDIgbXRrMDA0NjggYWRkIGZvciBwYXVsIFNBVCBbZW5kXQorI2VuZGlmIC8qIF9fU0FUX18gKi8KKworICAgRklSU1RfUEhCX0lORCwKKyAgIFBIQl9GVUxMX0lORCA9IEZJUlNUX1BIQl9JTkQsCQkJLyogNjAgKi8KKyAgIFBIQl9VUERBVEVfSU5ELCAgICAgICAvKiBtdGswMDQ2OCBhZGQgZm9yIHN5bmMgQVQgYW5kIE1NSSB3aXRoIHBoYiB3cml0ZSBhbmRlIGRlbGV0ZSovCisgICBQSEJfU1RBUlRVUF9CRUdJTl9JTkQsCisgICBQSEJfU1RBUlRVUF9SRUFEX0lORCwKKyAgIExBU1RfUEhCX0lORCA9IFBIQl9TVEFSVFVQX1JFQURfSU5ELAorCisgICBGSVJTVF9TSU1fSU5ELAorICAgUEFTU1dEX0lORCA9IEZJUlNUX1NJTV9JTkQsCisgICBTSU1fSU5GT19JTkQsCisgICBQTE1OX0xFTl9JTkQsCisgICBDUEhTX01NSV9JTkZPLCAvL210azAwNDY4IDAzMDYxMCBhZGQgZm9yIGw0Y3NtdV9tbWlfaW5mb19pbmQgaGFuZGxlCisgICBMQVNUX1NJTV9JTkQgPSBDUEhTX01NSV9JTkZPLAorCisgICAKKyAgIEZJUlNUX1NNU0FMX0lORCwKKyAgIFNNU19GVUxMX0lORCA9IEZJUlNUX1NNU0FMX0lORCwKKyAgIFNNU19FWENfSU5ELAorICAgU01TX0FWQV9JTkQsCisgICBTTVNfV0FJVF9JTkQsIC8vMDMwNjEzIG10azAwNDY4IGFkZCBmb3IgU01TIENQSFMgZmVhdHVyZQorICAgU01TX0lORFhfSU5ELAorICAgU01TX1RFWFRfSU5ELAkJCQkJCQkJLyogNzAgKi8KKyAgIFNNU19QRFVfSU5ELAorICAgU01TX1JFQURZX0lORCwgLy9tdGswMDQ2OCBhZGQgaW4gMDQwMjI5CisgICBTTVNfQVBQX0RBVEFfSU5ELCAvL210azAwNDY4IGFkZCBpbiAwNDAzMTIgZm9yIFdNQQorICAgU01TX1NZTkNfTVNHX0lORCwKKyAgIENNR0RfSU5ELAorICAgQ01HV19JTkQsCisgICBDTUdTX0FCT1JUX1NUQVJUX0lORCwKKyAgIENNR1NfQUJPUlRfRklOSVNIX0lORCwKKyAgIENCX01TR19JTkQsICAvL2ZvciBMTU1JICYgdGV4dCBtb2RlIG9mIFJNTUkuCisgICBDQl9QRFVfSU5ELCAvL2ZvciBSTU1JIHBkdSBtb2RlCisgICBDQl9ETF9JTkQsCisgICBMQVNUX1NNU0FMX0lORCA9IENCX0RMX0lORCwKKyAgIEw0Q19MQVNUX0lORCA9IExBU1RfU01TQUxfSU5ECit9IGw0Y19pbmRfZW51bTsKKworCit0eXBlZGVmIGVudW0KK3sKKyAgIFBBU19SRUFEWSwKKyAgIFBBU19VTkFWQUlMQUJMRSwKKyAgIFBBU19DQUxMX1JJTkdJTkcgPSAzLAorICAgUEFTX0NBTExfSU5fUFJPR1JFU1MKKworfSBsNGNjc21fcGhvbmVfYWN0X2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgTDRDX0FTWU5DX1QsICAvKiBBU1lOQyAqLworICAgTDRDX1NZTkNfVCwgICAgLyogU1lOQyAqLworICAgTDRDX0FTWU5DX05ULCAgIC8qIFJFTCBBU1lOQyAqLworICAgTDRDX1NZTkNfTlQgICAgICAvKiBSRUwgU1lOQyAqLworfSBsNGNjc21fY2NfZGF0YV9jYWxsX3R5cGVfZW51bTsKKworCitlbnVtCit7CisgICBMNENfQ0lTU19OT1RfQUNUSVZFLAorICAgTDRDX0NJU1NfQUNUSVZFLAorICAgTDRDX0NJU1NfTk9UX1BST1ZJU0lPTgorfTsKKworZW51bQoreworICAgTDRDX1NNVV9JTkFDVElWRSwKKyAgIEw0Q19TTVVfQUNUSVZFLAorICAgTDRDX1NNVV9BQ1RJVkFURV9GQUlMCit9OworCit0eXBlZGVmIGVudW0KK3sKKyAgIEw0Q19TVUNDRVNTLAorICAgTDRDX1NJTV9GQUlMLAorICAgTDRDX05WUkFNX0ZBSUwsCisgICBMNENfR0VORVJBTF9FUlJPUiwKKyAgIEw0Q19TSU1fU1dJVENIX0ZBSUwKK30gbDRjX3Bvd2Vyb25fcmVzdWx0X2VudW07CisKK3R5cGVkZWYgZW51bQoreworCUw0Q19QSEJfTk9fRVJST1IsCisJTDRDX1BIQl9GQUlMLAorCUw0Q19QSEJfU0NBX0ZETiwKKwlMNENfUEhCX0RBX0ZETl9PTkxZCit9bDRjX3BoYl9zbXNfZmRuX3Jlc3VsdF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIEw0Q19OT05FX0RBVEEsCisgICBMNENfQ1NEX0RBVEEsCisgICBMNENfR1BSU19EQVRBCit9IGw0Y19kYXRhX21vZGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBMNENfTU1JX1BST0ZfUVVFUlksCisgICBMNENfTU1JX1BST0ZfU0VUCit9IGw0Y19tbWlfc2V0X3Byb2Zfb3BfZW51bTsKKworCit0eXBlZGVmIGVudW0KK3sKKyAgIEw0Q19XSEVOX05FRURFRCwKKyAgIEw0Q19BTFdBWVMsCisgICBMNENfQUxXQVlTX0ZPUl9HQ0YsIC8vbXRrMDIyODUsIE1BVUlfMDI5MzE4MzksIDIwMTEwNTA1CisgICBMNENfQUxXQVlTX1dJVEhfRk9QLCAvL25vdGlmeSBHTU0gdG8gc2V0IEZPUCBpbiBuZXh0IGF0dGFjaCByZXF1ZXN0CisgICBMNENfQUxXQVlTX0RVQUxfQ0hFQ0ssIC8vIFNhbWUgYXMgQUxXQVlTLCBidXQgcmV0dXJuIGVycm9yIGlmIFBTIGlzIGV4aXN0ZWQgaW4gU0lNMS9TSU0yCisgICBMNENfR1BSU19DT05OX1RZUEVfVU5LTk9XTgorfSBsNGNfZ3Byc19jb25uZWN0X3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBMNENfSU1FTE9EWSwKKyAgIEw0Q19TT1VORF9PVEhFUiwKKyAgIEw0Q19JTUFHRSwKKyAgIEw0Q19BUFBfVU5LTk9XTgorfSBsNGNfYXBwX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBMNENfSU1BR0VfU1RELAorICAgTDRDX0FVRElPX0lNRUxPRFksCisgICBMNENfQVVESU9fT1RIRVIKK30gbDRjX2RhdGFfZGxfZm9sZGVyX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgTDRDX0ZJTEVfQURELAorICAgTDRDX0ZJTEVfREVMRVRFCit9bDRjX2RhdGFfZGxfZmlsZV9hY3Rpb25fZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBMNENfRklMRV9FWEVDVVRFX1BMQVksICAgICAgICAvKnBsYXkgYXVkaW8qLworICAgTDRDX0ZJTEVfRVhFQ1VURV9TVE9QICAgICAgICAvKnN0b3AgcGxheSBhdWRpbyovCit9bDRjX2RhdGFfZGxfZXhlY3V0ZV9hY3Rpb25fZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTDRDX0NPUFNfVU5LTk9XTiwKKyAgICBMNENfQ09QU19BVkFJTEFCTEUsCisgICAgTDRDX0NPUFNfQ1VSUkVOVCwKKyAgICBMNENfQ09QU19GT1JCSURERU4KK30gbDRjX2NvcHNfc3RhdHVzX2VudW07IC8qMjcuMDA3IDcuMyArQ09QUyovCisKK3R5cGVkZWYgZW51bQoreworCUw0Q19BVF9TTVNfQURELAorCUw0Q19BVF9TTVNfUkVBRF9DTUdSLAorCUw0Q19BVF9TTVNfUkVBRF9DTUdMLAkKKwlMNENfQVRfU01TX0RFTEVURSwKKwlMNENfU01TX1NJTV9SRUZSRVNICisKK31sNGNfYXRfc21zX2FjdGlvbl9lbnVtOworI2lmIDAKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorI2lmIDAgLy9fX0NUTV9TVVBQT1JUX18KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfTk9fSU5TRVJURUQsCisgICAgTDRDX0lOU0VSVEVELAkJCisgICAgTDRDX1NJTkdMRV9TSU1fSU5TRVJURURfU1RBVFVTX05PTkUgPSAweEZGCit9bDRjX3NpbmdsZV9zaW1faW5zZXJ0ZWRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTDRDX1NNVV9TVEFSVCwKKyAgICBMNENfU01VX1NFQ1VSSVRZLAorICAgIEw0Q19SQUNfU0VBUkNICit9bDRjX2R1YWxfc2ltX3Bvd2VyX29uX3N0YXRlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgVFlQRV9QSEJfU01TX1BBUkFNX09OTFlfSU5JVCwKKyAgIFRZUEVfUEhCX05PUk1BTF9JTklULAorICAgVFlQRV9TTVNfTk9STUFMX0lOSVQKK31sNGNfY2FuY2VsX2xvY2tfcG93ZXJvbl90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgVVNTRF9WRVJTSU9OX1BIQVNFMiwgCisgICBVU1NEX1ZFUlNJT05fUEhBU0UxLAorICAgVVNTRF9WRVJTSU9OX05PTkUgICAJICAgCit9bDRjX3Vzc2RfdmVyc2lvbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIENQSV9SRVBPUlRfTk9ORSwKKyAgIENQSV9SRVBPUlRfTldfTVNHX09OTFksCisgICBDUElfUkVQT1JUX0NBTExfU1RBVEVfT05MWSwgICAKKyAgIENQSV9SRVBPUlRfRlVMTAorfWw0Y19jcGlfcmVwb3J0X21vZGVfZW51bTsKKworI2RlZmluZSBJTkZPX1JFUE9SVF9NQVNLIAkoa2FsX3VpbnQzMikweDAwMDAwMDAxCisKKy8vIE1BVUlfMDE2NTIzNjQKK3R5cGVkZWYgZW51bQoreworICAgVVNTRF9SRVRVUk5fUkVTVUxULCAKKyAgIFVTU0RfUkVUVVJOX1JFU1VMVF9XSVRIX0VNUFRZX1NUUklORywKKyAgIFVTU0RfUkVUVVJOX0VSUk9SLAorICAgVVNTRF9SRVRVUk5fUkVKRUNULAorICAgVVNTRF9SRVRVUk5fRkFJTEVELCAvL2luIGxvY2FsIGNoZWNrCisgICBVU1NEX1JFVFVSTl9XSVRIT1VUX0NPTVBPTkVOVAorfSBsNGNfdXNzZF9yZXR1cm5fdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0gCit7CisgICBBVENJX1NUQVRFX1VBUlRfT1dORVJfQVRDSSwKKyAgIEFUQ0lfU1RBVEVfVUFSVF9PV05FUl9BVENJMiwKKyAgIEFUQ0lfU1RBVEVfVUFSVF9PV05FUl9EVCwKKyAgIEFUQ0lfU1RBVEVfUExVR09VVCwKKyAgIEFUQ0lfU1RBVEVfTk9ORQorfWw0Y19kdF9zdGF0ZV9lbnVtOworCit0eXBlZGVmIGVudW0gCit7CisgICBSTU1JX1NXSVRDSF9BVENJX1RPX0RULAorICAgUk1NSV9TV0lUQ0hfQVRDSV9UT19BVENJMiwKKyAgIFJNTUlfU1dJVENIX0FUQ0kyX1RPX0RULAorICAgUk1NSV9TV0lUQ0hfQVRDSTJfVE9fQVRDSSwKKyAgIFJNTUlfU1dJVENIX0RUX1RPX0FUQ0ksCisgICBSTU1JX1NXSVRDSF9EVF9UT19BVENJMiwKKyAgIFJNTUlfUExVR09VVCwKKyAgIFJNTUlfTk9ORQorfWw0Y19kdF90cmFuc2Zlcl9pbmRfc3RhdGVfZW51bTsKKworCit0eXBlZGVmIGVudW0KK3sKKyAgICBDU01fU1RBVEVfTk9UX0lOSVRJQVRFRCwKKyAgICBDU01fU1RBVEVfQ0NfUkVBRFksCisgICAgQ1NNX1NUQVRFX0NJU1NfUkVBRFkgLy9yZXBsYWNlIGNpc3NfcmVhZHlfZmxhZworfWw0Y19jc21fc3RhdGVfZW51bTsKKworLy8gZm9yIHBhcmFsbGVsIFNTCisvKgorVGhlIGZvbGxvd2luZyBpcyB0aGUgcmFuZ2UgZGVmaW5pdGlvbjoKK0NJU1M6ICAgU1NfSURfQ0lTU19CQVNFKzAgIH4gICBTU19JRF9DSVNTX0JBU0UrNgorTENTOiAgICAgU1NfSURfTENTX0JBU0UrMCAgIH4gICBTU19JRF9MQ1NfQkFTRSs2CisqLworI2RlZmluZSBTU19JRF9NQVhfTlVNIDcgICAvL3RoZXJlIGlzIG5vIG1vcmUgNyBTU3MgaW4gcGFyYWxsZWwgZm9yIE1PIG9yIE1UCit0eXBlZGVmIGVudW0geworICAgU1NfSURfTVRfQkFTRSA9IDgsIAorICAgU1NfSURfTVRfRU5EID0gU1NfSURfTVRfQkFTRSArIFNTX0lEX01BWF9OVU0tMSwKKyAgIFNTX0lEX0xDU19CQVNFID0gMTYsIC8vZm9yIExDUyhBR1BTKQorICAgU1NfSURfTENTX0VORCA9IFNTX0lEX0xDU19CQVNFICsgU1NfSURfTUFYX05VTS0xLCAvL0xDUzogU1NfSURfTENTX0JBU0UrMH5TU19JRF9MQ1NfQkFTRSs2CisgICBTU19JRF9DSVNTX0JBU0UgPSAzMiwgLy9mb3IgY29tbW9uIFNTIGFuZCBVU1Mgc2VydmljZQorICAgU1NfSURfQ0lTU19FTkQgPSBTU19JRF9DSVNTX0JBU0UgKyBTU19JRF9NQVhfTlVNLTEsIC8vQ0lTUzogU1NfSURfQ0lTU19CQVNFKzB+U1NfSURfQ0lTU19CQVNFKzYKKyAgIFNTX0lEX0lOVkFMSUQgPSAyNTUKK30gbDRjX3NzX2lkX2VudW07CisKKy8vQUxQUzAwMDI5MjMxCit0eXBlZGVmIGVudW0KK3sKKyAgICBTQVRfVVNTUl9OT05FLCAgLy9pbml0aWFsIHN0YXRlCisgICAgU0FUX1NTX1VTU1IsICAgIC8vVVNTUiB0cmlnZ2VyZWQgYnkgU0FUIHNlbmQgU1MKKyAgICBTQVRfVVNTRF9VU1NSICAgLy9VU1NSIHRyaWdnZXJlZCBieSBTQVQgc2VuZCBVU1NECit9bDRjX3NhdF91c3NyX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgUERQX0FDVCwKKyAgICBQRFBfTU9ELAorICAgIFBEUF9ERUFDVCwKKyAgICBFTlRFUl9EQVRBLAorICAgIFNFVF9SRVEsCisgICAgU0VUX0NPTlRFWFRfUkVRLAorICAgIEFDVElPTl9NQVgKK30gbDRjdGNtX2FjdGlvbl9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIFNJQl9GSUVMRF9SRVFVRVNUX1RZUEUsCit9IGw0Y3RjbV9zZXNzaW9uX2luZm9fYmxvY2tfZmllbGRfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBMNENfQUNUX1JFQVNPTl9OT1JNQUwsCisgICAgTDRDX0FDVF9SRUFTT05fQVRUQUNIXzFTVF9QRE4sCisgICAgTDRDX0FDVF9SRUFTT05fUkVWSVZFX0hBTkRPVkVSX1BETiwKKyAgICBMNENfQUNUX1JFQVNPTl9SRUVTVEFCTElTSF9XSVRIT1VUX04yNl9IQU5ET1ZFUl9QRE4sCisgICAgTDRDX0FDVF9SRUFTT05fTUFYCit9IGw0Y3RjbV9hY3RfcmVhc29uOworCit0eXBlZGVmIGVudW0geworICAgIEVHQUNUX1NVUFBPUlRfQUxMX1JBVCA9IDAsCisgICAgRUdBQ1RfU1VQUE9SVF8yM0cgPSAxLAorICAgIEVHQUNUX1NVUFBPUlRfNEcgPSAyLAorICAgIEVHQUNUX1NVUFBPUlRfMjM0RyA9IEVHQUNUX1NVUFBPUlRfMjNHIHwgRUdBQ1RfU1VQUE9SVF80RywKKyAgICBFR0FDVF9TVVBQT1JUXzVHID0gNCwKKyAgICBFR0FDVF9TVVBQT1JUXzIzNUcgPSBFR0FDVF9TVVBQT1JUXzIzRyB8IEVHQUNUX1NVUFBPUlRfNUcsCisgICAgRUdBQ1RfU1VQUE9SVF80NUcgID0gRUdBQ1RfU1VQUE9SVF80RyAgfCBFR0FDVF9TVVBQT1JUXzVHLAorICAgIEVHQUNUX1NVUFBPUlRfTUFYLAorfSBsNGN0Y21fZWdhY3Rfc3VwcG9ydF9yYXRfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBFR0FDVF9DQVVTRV9ET05UX0NBUkUgPSAwLCAgICAKKyAgICBFR0FDVF9DQVVTRV9ERUFDVF9OT1JNQUwsICAgCisgICAgRUdBQ1RfQ0FVU0VfREVBQ1RfUkFfRVJST1IsCisgICAgRUdBQ1RfQ0FVU0VfREVBQ1RfUkFfSU5JVElBTF9FUlJPUiwKKyAgICBFR0FDVF9DQVVTRV9ERUFDVF9SQV9SRUZSRVNIX0VSUk9SLCAgICAKKyAgICBFR0FDVF9DQVVTRV9ERUFDVF9OT19QQ1NDRiwKKyAgICBFR0FDVF9DQVVTRV9ERUFDVF9VU0VSX0ZPUkNFX1RPX0xPQ0FMX1JFTEVBU0UsCisgICAgRUdBQ1RfQ0FVU0VfREVBQ1RfQU9TUF9TSFVURE9XTiwKKyAgICBFR0FDVF9DQVVTRV9ERUFDVF9BT1NQX0hBTkRPVkVSLAorICAgIEVHQUNUX0NBVVNFX0RFQUNUX0FQTl9DSEFOR0VELAorICAgIEVHQUNUX0NBVVNFX0RFQUNUX0lNU19IQU5ET1ZFUgorfSBsNGN0Y21fZWdhY3RfY2F1c2VfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBOT19DT05GTElDVCwKKyAgICBDT05GTElDVF9DSEFOTkVMX0JVU1ksCisgICAgQ09ORkxJQ1RfQ0lEX0JVU1ksCisvLyAgICBDT05GTElDVF9DMktfSVJBVCwKKyAgICBDT05GTElDVF9DRlVOLAorICAgIENPTkZMSUNUX1RDTV9OT1RfUkVBRFksCisgICAgQ09ORkxJQ1RfUkFDX1NUQVRFLAorICAgIENPTkZMSUNUX0FUVEFDSF9PTkdPSU5HLAorfSBsNGNfZ3Byc19jbWRfY29uZmxpY3RfY2F1c2VfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBDSEVDS19DT05GTElDVF9GTEFHX0NGVU4gPSAweDAwMDEsCisgICAgQ0hFQ0tfQ09ORkxJQ1RfRkxBR19UQ01fUkVBRF9OVlJBTV9DT01QTEVURSA9IDB4MDAwMiwKKyAgICBDSEVDS19DT05GTElDVF9GTEFHX1JBQ19TVEFURSA9IDB4MDAwNCwKKy8vICAgIENIRUNLX0NPTkZMSUNUX0ZMQUdfQzJLX0lSQVQgPSAweDAwMDgsCisgICAgQ0hFQ0tfQ09ORkxJQ1RfRkxBR19TUkNfQ0lEX1RBQkxFID0gMHgwMDEwLAorICAgIENIRUNLX0NPTkZMSUNUX0ZMQUdfQVRUQUNIX0JZX0NJRF9UQUJMRSA9IDB4MDAyMCwKKyAgICBDSEVDS19DT05GTElDVF9GTEFHX0FMTCA9IDB4RkZGRiwKK30gbDRjX2NtZF9jb25mbGljdF9iaXRtYXBfZmxhZ19lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIEw0Q19OT1RfQ0hFQ0tfQ01EX0NPTkZMSUNULAorICAgIEw0Q19DSEVDS19DTURfQ09ORkxJQ1QsCit9IGw0Y19jbWRfY29uZmxpY3RfY2hlY2tfb3B0aW9uX2VudW07CisKKwordHlwZWRlZiBlbnVtIHsKKyAgICBMVEVfQVRUQUNIX1BETl9FU01fTk9UX0JMT0NLX0lOVkFMSURfQVBOLAorICAgIExURV9BVFRBQ0hfUEROX0VTTV9CTE9DS19JTlZBTElEX0FQTgorfSBsdGVfYXR0YWNoX3Bkbl9lc21fYmxvY2tfaW52YWxpZF9hcG5fZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTDRDX1RJTUVSX0lEX0tFWVBBRCAgICAgICAgICAgICAgID0gMCwgICAgICAvLyAwOiBrZXlwYWQKKyAgICBMNENfVElNRVJfSURfRFQgICAgICAgICAgICAgICAgICAgPSAxLCAgICAgIC8vIDE6IERUCisgICAgTDRDX1RJTUVSX0lEX0dQUlMgICAgICAgICAgICAgICAgID0gMiwgICAgICAvLyAyOiBncHJzCisgICAgTDRDX1RJTUVSX0lEX1JFVFJZICAgICAgICAgICAgICAgID0gMywgICAgICAvLyAzOiByZXRyeQorICAgIEw0Q19USU1FUl9JRF9IWiAgICAgICAgICAgICAgICAgICA9IDQsICAgICAgLy8gNDogaHoKKyAgICBMNENfVElNRVJfSURfRElBTFVQICAgICAgICAgICAgICAgPSA1LCAgICAgIC8vIDU6IGRpYWx1cAorICAgIEw0Q19USU1FUl9JRF9SSU5HICAgICAgICAgICAgICAgICA9IDYsICAgICAgLy8gNjogUklORyByZXBlYXQgdGltZXIKKyAgICBMNENfVElNRVJfSURfU0FUICAgICAgICAgICAgICAgICAgPSA3LCAgICAgIC8vIDc6IFNBVCByZWRpYWwgZHVyYXRpb24gdGltZXIKKyAgICBMNENfVElNRVJfSURfUFdPRiAgICAgICAgICAgICAgICAgPSA4LCAgICAgIC8vIDg6IFBvd2VyIG9mZiB0aW1lcgorICAgIEw0Q19USU1FUl9JRF9FQ0JNLCAgICAgICAgIC8vIG9ic29sZXRlZC4KKyAgICBMNENfVElNRVJfSURfVk9MVEVfSFlTICAgICAgICAgICAgPSAxMSwgICAgIC8vIDExOiBWelcgVF9Wb0xURV9oeXMKKyAgICBMNENfVElNRVJfSURfVFhSWFRJTUUgICAgICAgICAgICAgPSAxMiwgICAgIC8vIDEyOiB0eHJ4IGFjdGl2ZSB0aW1lCisgICAgTDRDX1RJTUVSX0lEX1JTSU1fUExVR0lOICAgICAgICAgID0gMTMsICAgICAvLzEzOiBSU0lNIHBsdWdpbiB0aW1lcgorICAgIEw0Q19USU1FUl9JRF9TQlAgICAgICAgICAgICAgICAgICA9IDE0LCAgICAgLy8gMTQ6IFNCUCBndWFyZCB0aW1lcgorICAgIEw0Q19USU1FUl9JRF9VUFBFUl9USFJFU0hPTEQgICAgICA9IDE1LCAgICAgLy8xNTogUG93ZXIgTGV2ZXIgVXBwZXIgVGhyZXNob2xkIHRpbWVyCisgICAgTDRDX1RJTUVSX0lEX0xPV0VSX1RIUkVTSE9MRCAgICAgID0gMTYsICAgICAvLzE2OiBQb3dlciBMZXZlciBMb3dlciBUaHJlc2hvbGQgdGltZXIKKyAgICBMNENfVElNRVJfSURfT1AxMl9MT0NLX1RJTUVSICAgICAgPSAxNywgICAgIC8vIDE3IG9wMTIgcmVnIGxvY2sgdG8gc2VuZCBkZXJlZyBpZiBuZWVkZWQKKyAgICBMNENfVElNRVJfSURfT1AxMl9VTkxPQ0tfVElNRVIgICAgPSAxOCwgICAgIC8vIDE4IG9wMTIgcmVnIHVubG9jayB0byBzZW5kIHJlZyBpZiBuZWVkZWQKKyAgICBMNENfVElNRVJfSURfRVJTSU1BVVRIICAgICAgICAgICAgPSAxOSwgICAgIC8vIDE5OiBSU0lNIEFVVEggdGltZXIKKyAgICBMNENfVElNRVJfSURfRVBTTkxURSAgICAgICAgICAgICAgPSAyMCwgICAgIC8vIDIwOiBFUFNOTFRFIFVSQyB0aW1lcgorICAgIEw0Q19USU1FUl9JRF9OT05fUFNfT0NDVVBZX1RJTUVSICA9IDIxLCAgICAgLy8gMjEgT2NjdXB5IFJTVkFTIGZvciBub24tcHMgU0lNIHJlZ2lzdCBmaXJzdAorICAgIEw0Q19USU1FUl9JRF9DQUxMX1JFVFJZX01BWF9USU1FUiA9IDIyLCAgICAgLy8gMjI6IGNhbGwgcmV0cnkgbWF4IHRpbWVyCisgICAgTDRDX1RJTUVSX0lEX0FOVEVOTkFfU1RBVEUgICAgICAgID0gMjMsICAgICAvLyAyMzogZm9yIGFudGVubmEgc3RhdGUgcmVwb3J0aW5nCisgICAgTDRDX1RJTUVSX0lEX09QMTI5X0xURV9PTkxZX1RJTUVSID0gMjQsICAgICAvLyAyNDogZm9yIHN3aXRjaGluZyBSQVQgbW9kZSB0byAyM0cgZnJvbSBLRERJIExURQorCUw0Q19USU1FUl9JRF9XQUlUX0xURV9QQUdJTkdfVElNRVIgPSAyNSwgICAgLy8gMjU6IHdhaXQgZm9yIE1UIHBhZ2luZyBpbiBMVEUgUkFULgorCUw0Q19USU1FUl9JRF81R1VXX1RVV18xIAkJICA9IDI2LCAgICAgLy8gMjY6IFZ6VyA1R1VXIFRVVyAxCisJTDRDX1RJTUVSX0lEXzVHVVdfVFVXXzIgCQkgID0gMjcsICAgICAvLyAyNzogVnpXIDVHVVcgVFVXIDIKKwlMNENfVElNRVJfSURfNUdVV19UVVdfMyAJCSAgPSAyOCwgICAgIC8vIDI4OiBWelcgNUdVVyBUVVcgMworICAgIEw0Q19USU1FUl9JRF9NQVgKK30gbDRjX3RpbWVyX2lkX2VudW07CisKK3R5cGVkZWYgZW51bXsKKyAgICBMNENfU0lNX1NUQVRFX09OLAorICAgIEw0Q19TSU1fU1RBVEVfVFVSTklOR19PRkYsCisgICAgTDRDX1NJTV9TVEFURV9PRkYKK31sNGNfc2ltX3N0YXRlX2VudW07CisKKy8vIEMySyBNRCBwb3dlciBvZmYgc3RhdGUsIGZvciBNRDEvTUQzIEVQT0YgcHJvY2VkdXJlCit0eXBlZGVmIGVudW0KK3sKKyAgICBDMktfTURfUE9XRVJfT0ZGX05PVF9TVEFSVCA9IDAsCisgICAgQzJLX01EX1BPV0VSX09GRl9TVEFSVEVELAorICAgIEMyS19NRF9QT1dFUl9PRkZfRE9ORQorfSBsNGNfYzJrX3Bvd2VyX29mZl9zdGF0ZV9lbnVtOworCisvKiBmb3Igc2ltX3N0YXR1c19iaXRtYXNrIAorICAgVE9ETzogcmVwbGFjY2UgbDRjX3NpbmdsZV9zaW1faW5zZXJ0ZWRfZW51bQorKi8KK3R5cGVkZWYgZW51bQoreworICAgIC8qIAorICAgICAqIGluaXRpYWwgc3RhdGUsIEw0IGRvZXNuJ3Qga25vdyBhbnkgaW5mb3JtYXRpb24gYWJvdXQgU0lNIAorICAgICAqLworICAgIEw0Q19TSU1fRkxBR19VTktOT1dOID0gMCwKKyAgICAgICAgCisgICAgLyogCisgICAgICogTDRDIGhhcyByZWNlaXZlZCBTSU1fRVJST1JfSU5EKHBsdWdfaW4pIG9yIFNJTV9SRVNFVF9DTkYoc2ltX2V4aXN0KSwgCisgICAgICogaS5lLiB0aGVyZSBpcyBhIGNhcmQgaW4gdGhlIFNJTSBzbG90LCBidXQgbm90IGluaXRpYWxpemVkIHlldCAKKyAgICAgKiB0aGUgaW5zZXJ0ZWQgY2FyZCBtYXliZSBTSU0sIFVTSU0sIENTSU0sIFVJTS4uLmV0YworICAgICAqLworICAgIC8vIFRPRE86IHRoaXMgZmxhZyBpcyB0byByZXBsYWNlIHNpbmdsZV9zaW1fZXhpc3Rfc3RhdHVzCisgICAgTDRDX1NJTV9GTEFHX0RFVEVDVEVEID0gMHgwMSwKKworICAgIC8qIAorICAgICAqIEw0QyBoYXMgcmVjZWl2ZWQgU0lNX1JFU0VUX0NORihzaW1faW5zZXJ0ZWQpIG9yIFNUQVJUX0NORihTTVVfUkVTX09LKQorICAgICAqIGkuZS4gdGhlcmUgaXMgYSBTSU0gb3IgVVNJTSBpbiB0aGUgU0lNIHNsb3QsIGJ1dCBub3QgaW5pdGlhbGl6ZWQgeWV0CisgICAgICovCisgICAgLy8gVE9ETzogdGhpcyBmbGFnIGlzIHRvIHJlcGxhY2Ugc2luZ2xlX3NpbV9pbnNlcnRlZF9zdGF0dXMKKyAgICBMNENfU0lNX0ZMQUdfM0dQUF9TSU1fSU5TRVJURUQgPSAweDAyLAorICAgIAorICAgIC8qIAorICAgICAqIEw0KFNNVSkgaGFzIHJlY2VpdmVkIFNJTV9TVEFSVF9DTkYoU0lNX0NNRF9TVUNDRVNTKSAKKyAgICAgKiBpLmUuIFNJTSBpcyBpbml0aWFsaXplZCBhbmQgY2FuIGJlIGFjY2VzcywgZXhjbHVkaW5nIFBJTjEgcmVxdWlyZWQgZmlsZQorICAgICAqIGUuZy4gSUNDSUQgaXMgcmVhZGFibGUgd2hlbiB0aGlzIGJpdCBpcyBzZXQKKyAgICAgKi8KKyAgICBMNENfU0lNX0ZMQUdfU1RBUlRFRF9TVUNDRVNTID0gMHgwNCwKKworICAgIC8qIAorICAgICAqIEw0QyBoYXMgcmVjZWl2ZWQgU0VDVVJJVFlfQ05GKFRZUEVfTk9fUkVRVUlSRUQpCisgICAgICogaS5lLiBQSU4xIGFuZCBTTUwgY2hlY2sgYXJlIGFsbCBwYXNzZWQsIElNU0kgY2FuIGJlIHJlYWQKKyAgICAgKiBjdXJyZW50bHkgd2UgZG9uJ3QgcHJvdmlkZSBQSU4xIHZlcmlmaWVkIGJ1dCBTTUwgbm90IHBhc3NlZCBmbGFnLAorICAgICAqIGJlY2F1c2Ugbm8gc3BlY2lhbCByZXF1aXJlbWVudCBmb3IgdGhpcyBjb25kaXRpb24KKyAgICAgKi8KKyAgICBMNENfU0lNX0ZMQUdfUElOMV9TTUxfVkVSSUZJRUQ9IDB4MDgKK30gbDRjX3NpbV9mbGFnX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIC8qIFRoaXMgIEVOVU0gd2FzIGRlZmluZWQgYnkgTVVTRSBwcm9qZWN0IGZvciBWelcgaFZvTFRFIGludGVyZmFjZSAqLworCisgICAgU1RBVFVTX0xURV9DT05OX05PTkUgICAgICAgICAgICA9IDAsCisgICAgU1RBVFVTX0xURV9SQUNIX1JFSkVDVF9XX1dBSVQgICA9IDExLAorICAgIFNUQVRVU19MVEVfUkFDSF9GQUlMRURfVDMwMCAgICAgPSAxMiwKKyAgICBTVEFUVVNfTFRFX1NSX1JFSkVDVF9FTU1fOV8xMCAgID0gMTMsCisgICAgU1RBVFVTX0xURV9BQ0NFU1NfQkFSUkVEICAgICAgICA9IDE2LAorICAgIFNUQVRVU19MVEVfRU1NX05FVF9SRUpFQ1QgICAgICAgPSAxNywKKyAgICBTVEFUVVNfTFRFX05BU19DT05HRVNUSU9OICAgICAgID0gMjIsCisgICAgU1RBVFVTX0xURV9ERURJX0JFQVJfUUNJX1JFU1AgICA9IDMxLAorICAgIFNUQVRVU19MVEVfVFJJR0dFUl9JTVNfREVSRUcgICAgPSAzMiwKKyAgICBTVEFUVVNfTFRFX0lNU19DQUxMX0ZBSUxfMVhfU0lMRU5UX1JFRElBTF9TVEFSVCA9IDM1LAorCisgICAgLy9BbHNvIGZvciBWelcgaFZvTFRFLCBidXQgZGVmaW5lZCBieSBNVEsKKyAgICBTVEFUVVNfTFRFX0VNRVJHRU5DWV9BVFRBQ0hfUkVKRUNUID0gMTI5LAorICAgIFNUQVRVU19MVEVfTk9STUFMX0RFVEFDSCAgICAgICAgPSAxMzAsCisgICAgU1RBVFVTX0xURV9FTUVSR0VOQ1lfQVRUQUNIICAgICA9IDEzMSwKKyAgICBTVEFUVVNfTFRFX05PUk1BTF9BVFRBQ0ggICAgICAgID0gMTMyLAorICAgIFNUQVRVU19MVEVfRU1FUkdFTkNZX0RFVEFDSCAgICAgPSAxMzMsCisgICAgU1RBVFVTX0xURV9FTUVSR0VOQ1lfUEROX0FDVF9SRUpfSU5fQVRUQUNIX1NUQVRFICAgICA9IDEzNCwKKyAgICBTVEFUVVNfTFRFX0VQU19PTkxZX0FUVEFDSCAgICAgID0gMTM1Cit9IGw0Y19sdGVfY29ubl9zdGF0dXNfZW51bTsKKworLyogYml0bWFwIHR5cGUgKi8KK3R5cGVkZWYgZW51bQoreworICAgIEw0Q19HVVRJICAgICAgPSAxLAorICAgIEw0Q19QVE1TSSAgICAgPSAyLAorICAgIEw0Q19MT0NJICAgICAgPSBMNENfUFRNU0ksICAgIC8vIFVzZWQgYnkgVGl0YW4KKyAgICBMNENfNUdTTE9DSSAgID0gNAorfSBsNGNfbXNpZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKwlMNENfVVNJTV9UWVBFX0lTX1NJTSA9IDAsIAorCUw0Q19VU0lNX1RZUEVfSVNfVVNJTSA9IDEsIAorCUw0Q19VU0lNX1RZUEVfTk9fU0lNX05PX1VTSU0gPSAyCit9IGw0Y191c2ltX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisJTDRDX0NTSU1fVFlQRV9JU19VSU0gPSAwLCAKKwlMNENfQ1NJTV9UWVBFX0lTX0NTSU0gPSAxLCAKKwlMNENfQ1NJTV9UWVBFX05PX1VJTV9OT19DU0lNID0gMiwgCisJTDRDX0NTSU1fVFlQRV9JU19VSU1fQU5EX0NTSU0gPSAzCit9IGw0Y19jc2ltX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTDRDX0RJQUxfQzJLX0lETEUgICAgICAgICAgICAgICA9IDB4MDAsCisgICAgTDRDX0RJQUxfQzJLX0NNRF9SQ1ZEICAgICAgICAgICA9IDB4MDEsLy9yZWNlaXZlZCBBVCtFSFZPTFRFPTAsMQorICAgIEw0Q19ESUFMX0MyS19DU0ZCX1NUQVJUX0lORF9SQ1ZEPSAweDAyLAorICAgIEw0Q19ESUFMX0MyS19WT0xURV9VTlJFR19SQ1ZEICAgPSAweDA0LAorICAgIEw0Q19ESUFMX0MyS19DU0ZCX1NUQVJUX1ZPTFRFX1VOUkVHX1JDVkQgPSAKKyAgICAgICAgICAgIEw0Q19ESUFMX0MyS19DTURfUkNWRHxMNENfRElBTF9DMktfQ1NGQl9TVEFSVF9JTkRfUkNWRHxMNENfRElBTF9DMktfVk9MVEVfVU5SRUdfUkNWRCwKK30gbDRjX2RpYWxfYzJrX3N0YXRlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEw0Q19UWF9JTlRFUlJVUFRJT05fVElNRVJfRVhQSVJZID0gMCwgLy8gT2Jzb2xldGUKKyAgICBMNENfRVZFTlRfU0NIRURVTEVSX1RJTUVSX0lELAorICAgIEw0Q19FVkVOVF9TQ0hFRFVMRVJfTUFYX0RFTEFZX1RJTUVSX0lEICAvKiBkZWxheSB0b2xlcmFudDogZXZ0X3NjaGVkdWxlcl9tYXhfZGVsYXlfcHRyICovCit9IGw0Y190aW1lcl9pbmRleF9pZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfR1NNX1JTU0kgICAgICAgID0gMCwKKyAgICBMNENfVVRSQU5fUlNDUCAgICAgID0gMSwKKyAgICBMNENfVVRSQU5fRUNOTyAgICAgID0gMiwKKyAgICBMNENfTFRFX1JTUlAgICAgICAgID0gMywKKyAgICBMNENfTFRFX1JTUlEgICAgICAgID0gNCwKKyAgICBMNENfTFRFX1JTU05SICAgICAgID0gNSwKKyAgICBMNENfMVhfUlNTSSAgICAgICAgID0gNiwgIC8vIG5vdCB1c2VkIGluIGw0YywgYWxpZ24gaXdsYW4tbDRjIGludGVyZmFjZQorICAgIEw0Q18xWF9FQ0lPICAgICAgICAgPSA3LCAgLy8gbm90IHVzZWQgaW4gbDRjLCBhbGlnbiBpd2xhbi1sNGMgaW50ZXJmYWNlCisgICAgTDRDX0VWRE9fUlNTSSAgICAgICA9IDgsICAvLyBub3QgdXNlZCBpbiBsNGMsIGFsaWduIGl3bGFuLWw0YyBpbnRlcmZhY2UKKyAgICBMNENfRVZET19FQ0lPICAgICAgID0gOSwgIC8vIG5vdCB1c2VkIGluIGw0YywgYWxpZ24gaXdsYW4tbDRjIGludGVyZmFjZQorICAgIEw0Q19OUl9TU19SU1JQICAgICAgPSAxMCwKKyAgICBMNENfTlJfU1NfUlNSUSAgICAgID0gMTEsCisgICAgTDRDX05SX1NTX1NJTlIgICAgICA9IDEyLAorICAgIEw0Q19OUl9DU0lfUlNSUCAgICAgPSAxMywKKyAgICBMNENfTlJfQ1NJX1JTUlEgICAgID0gMTQsCisgICAgTDRDX05SX0NTSV9TSU5SICAgICA9IDE1LAorICAgIEw0Q19NQVhfU0lHLAorfSBsNGNfc2lnX3R5cGVfZW51bTsKKworCit0eXBlZGVmIGVudW17CisJTDRDX1NJTV9EVVBMRVhfTU9ERV9TVEFURV9OT05FLAorICAgIEw0Q19TSU1fRFVQTEVYX01PREVfU1RBVEVfUkVTRVQsCisgICAgTDRDX1NJTV9EVVBMRVhfTU9ERV9TVEFURV9SRVNFVF9ET05FLAorICAgIEw0Q19TSU1fRFVQTEVYX01PREVfU1RBVEVfU0VUCit9bDRjX3NpbV9kdXBsZXhfbW9kZV9yZXNldF9zdGF0ZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfUFdMX1RIUkhEX1RJTUVSX0lEX0dTTV9SU1NJX1RIUkVTSE9MRCwgLy8wOiBQb3dlciBMZXZlciBUaHJlc2hvbGQgdGltZXIgZm9yIEdTTSBSU1NJCisgICAgTDRDX1BXTF9USFJIRF9USU1FUl9JRF9VVFJBTl9SU0NQX1RIUkVTSE9MRCwgLy8xOiBQb3dlciBMZXZlciBUaHJlc2hvbGQgdGltZXIgZm9yIFVUUkFOIFJTQ1AKKyAgICBMNENfUFdMX1RIUkhEX1RJTUVSX0lEX1VUUkFOX0VDTk9fVEhSRVNIT0xELCAvLzI6IFBvd2VyIExldmVyIFRocmVzaG9sZCB0aW1lciBmb3IgVVRSQU5fRUNOTworICAgIEw0Q19QV0xfVEhSSERfVElNRVJfSURfTFRFX1JTUlBfVEhSRVNIT0xELCAvLzM6IFBvd2VyIExldmVyIFRocmVzaG9sZCB0aW1lciBmb3IgTFRFIFJTUlAKKyAgICBMNENfUFdMX1RIUkhEX1RJTUVSX0lEX0xURV9SU1JRX1RIUkVTSE9MRCwgLy80OiBQb3dlciBMZXZlciBUaHJlc2hvbGQgdGltZXIgZm9yIExURV9SU1JRCisgICAgTDRDX1BXTF9USFJIRF9USU1FUl9JRF9MVEVfUlNTTlJfVEhSRVNIT0xELCAvLzU6IFBvd2VyIExldmVyIFRocmVzaG9sZCB0aW1lciBmb3IgTFRFX1JTU05SCisgICAgTDRDX1BXTF9USFJIRF9USU1FUl9JRF9OUl9TU19SU1JQX1RIUkVTSE9MRCwgLy82OiBQb3dlciBMZXZlciBUaHJlc2hvbGQgdGltZXIgZm9yIE5SX1NTX1JTUlAKKyAgICBMNENfUFdMX1RIUkhEX1RJTUVSX0lEX05SX1NTX1JTUlFfVEhSRVNIT0xELCAvLzc6IFBvd2VyIExldmVyIFRocmVzaG9sZCB0aW1lciBmb3IgTlJfU1NfUlNSUQorICAgIEw0Q19QV0xfVEhSSERfVElNRVJfSURfTlJfU1NfU0lOUl9USFJFU0hPTEQsIC8vODogUG93ZXIgTGV2ZXIgVGhyZXNob2xkIHRpbWVyIGZvciBOUl9TU19TSU5SCisgICAgTDRDX1BXTF9USFJIRF9USU1FUl9JRF9OUl9DU0lfUlNSUF9USFJFU0hPTEQsIC8vOTogUG93ZXIgTGV2ZXIgVGhyZXNob2xkIHRpbWVyIGZvciBOUl9DU0lfUlNSUAorICAgIEw0Q19QV0xfVEhSSERfVElNRVJfSURfTlJfQ1NJX1JTUlFfVEhSRVNIT0xELCAvLzEwOiBQb3dlciBMZXZlciBUaHJlc2hvbGQgdGltZXIgZm9yIE5SX0NTSV9SU1JRCisgICAgTDRDX1BXTF9USFJIRF9USU1FUl9JRF9OUl9DU0lfU0lOUl9USFJFU0hPTEQsIC8vMTE6IFBvd2VyIExldmVyIFRocmVzaG9sZCB0aW1lciBmb3IgTlJfQ1NJX1NJTlIKKyAgICBMNENfUFdMX1RIUkhEX1RJTUVSX0lEX01BWAorfSBsNGNfcHdsX3RocmhkX3RpbWVyX2lkX2VudW07CisKKy8vI2lmZGVmIF9fUkVNT1RFX1NJTV9fCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfUlNWQV9BS0FfTk9fUkVTT1VSQ0VfT0NDVVBJRUQsCisgICAgTDRDX1JTVkFfQUtBX1JFU09VUkNFX1RPX0JFX09DQ1VQSUVELAorICAgIEw0Q19SU1ZBX0FLQV9SRVNPVVJDRV9PQ0NVUElFRCwKKyAgICBMNENfUlNWQV9BS0FfUkVTT1VSQ0VfUkVMRUFTSU5HLAorfSBsNGNfcnN2YV9ha2FfcmVzb3VyY2Vfb2NjdXB5X2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEw0Q19BQ1RJT05fTk9ORSwKKyAgICBMNENfQUNUSU9OX0VQT0YsCisgICAgTDRDX0FDVElPTl9FRlVOLAorfSBsNGNfcnNpbV9wZW5kaW5nX2FjdGlvbl9lbnVtOworLy8jZW5kaWYKKworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNF9TTVUgPSAweDAxLAorICAgIEw0X1JBQyA9ICgweDAxIDw8IDEpLAorICAgIEw0X1BIQiA9ICgweDAxIDw8IDIpLAorICAgIEw0X1NNU0FMID0gKDB4MDEgPDwgMyksCisgICAgTDRfVUVNID0gKDB4MDEgPDwgNCksCisgICAgTDRfVENNID0gKDB4MDEgPDwgNSksCisgICAgTDRfQ1NNQ0MgPSAoMHgwMSA8PCA2KSwKKyAgICBMNF9DU01TUyA9ICgweDAxIDw8IDcpLAorfWw0Y19zdWJfbW9kdWxlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE9QMDFfQUNUSU9OX05VTEwsCisgICAgT1AwMV9TSU1fTE9DS19ERVRBQ0gsCisgICAgT1AwMV9TSU1fVU5MT0NLX0FUVEFDSCwKKyAgICBPUDAxX1JBVF9MT0NLLAorICAgIE9QMDFfUkFUX1VOTE9DSworfWw0X29wMDFfYWN0aW9uX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEw0Q19JTUVJX01FSURfQUNUSU9OX05VTEwsCisgICAgTDRDX0lNRUlfTUVJRF9MT0NLX0RFVEFDSCwKKyAgICBMNENfSU1FSV9NRUlEX0xPQ0tfQVRUQUNIX0FOWSwgCisgICAgTDRDX0lNRUlfTUVJRF9VTkxPQ0tfQVRUQUNIICAgIAorfSBsNGNfaW1laV9tZWlkX2FjdGlvbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfTE9DS19UWVBFX09QMDEsCisgICAgTDRDX0xPQ0tfVFlQRV9JTUVJX01FSUQKK30gbDRjX2xvY2tfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfUkFUX0dST1VQXzNHUFAsCisgICAgTDRDX1JBVF9HUk9VUF8zR1BQMiwKKyAgICBMNENfUkFUX0dST1VQXzNHUFBfM0dQUDIKK30gbDRjX3JhdF9ncm91cF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfRFNTX09OR09JTkdfU1RBVEVfTk9ORSA9IDAsCisgICAgTDRDX0RTU19PTkdPSU5HX1NUQVRFX0VTSU1NQVAgPSAxLAorICAgIEw0Q19EU1NfT05HT0lOR19TVEFURV9FUFNNQVAgPSAyLAorfSBsNGNfZHNzX29uZ29pbmdfc3RhdGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTDRDX0NUX1ZPTFRFX05PVF9TVVBQT1JUICAgICAgICA9IDAsCisgICAgTDRDX0NUX1ZPTFRFX1NVUFBPUlRfTUFOVUFMICAgICA9IDEsLy9DVCBvcmlnaW5hbCBWb0xURSwgTDQgb3BlcmF0ZXMgaW4gSFZPTFRFX01BTlVBTF9NT0RFCisgICAgTDRDX0NUX1ZPTFRFX1NVUFBPUlRfQVVUTyAgICAgICA9IDIsLy9DVCBoVm9MVEUsIEw0IG9wZXJhdGVzIGluIEhWT0xURV9BVVRPX01PREUKKyAgICBMNENfQ1RfVk9MVEVfU1VQUE9SVF9FTlVNX01BWAorfSBsNGNfY3Rfdm9sdGVfc3VwcG9ydF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfUEhCX0FQUFJPVkVfU1JDX0NBTExfU0VUVVAsCisgICAgTDRDX1BIQl9BUFBST1ZFX1NSQ19MNENQUywKKyAgICBMNENfUEhCX0FQUFJPVkVfU1JDX1NNUywKKyAgICBMNENfUEhCX0FQUFJPVkVfU1JDX1BBUlNFX1NTLAorICAgIEw0Q19QSEJfQVBQUk9WRV9TUkNfQ1VTRCwKKyAgICBMNENfUEhCX0FQUFJPVkVfU1JDX0VBUFBST1ZFLAorCisgICAgLyogTk9USUNFISEgUGxlYXNlIGFkZCBsNGNfcGhiX2FwcHJvdmVfc3JjX2VudW0gYWJvdmUgdGhpcyBsaW5lISAqLworICAgIEw0Q19QSEJfQVBQUk9WRV9TUkNfVE9UQUwsCit9IGw0Y19waGJfYXBwcm92ZV9zcmNfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTDRDX1NFUlZJQ0VfTU9ERV9OT05FID0gMCwKKyAgICBMNENfU0VSVklDRV9NT0RFX1VQR1JBREUsICAgICAgICAgLy8gdXBncmFkZSB0aGUgc2VydmljZSAod2hlbiBsZWdhbCBTSU0gaXMgYXZhaWxhYmxlKQorICAgIEw0Q19TRVJWSUNFX01PREVfRE9XTkdSQURFICAgICAgICAvLyBkb3dncmFkZSB0aGUgc2VydmljZSAod2hlbiBsZWdhbCBTSU0gaXMgbG9zdCkKK30gbDRjX3NlcnZpY2VfbW9kZV9vcF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfUFdSX0xFVkVMX1JBTkdFX05PTkUgICAgICAgID0gMCwvL1Bvd2VyIGxldmVsIHRocmVzaG9sZCB0aW1lciBpcyBub3QgcnVubmluZworICAgIEw0Q19QV1JfTEVWRUxfUkFOR0VfTE9XICAgICAgICAgPSAxLC8vUG93ZXIgbGV2ZWwgdGhyZXNob2xkIHRpbWVyIGlzIHJ1bm5pbmcgYW5kIHNpZ25hbCB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIDFzdCB0aHJlc2hvbGQKKyAgICBMNENfUFdSX0xFVkVMX1JBTkdFX09ORSAgICAgICAgID0gMiwvL1Bvd2VyIGxldmVsIHRocmVzaG9sZCB0aW1lciBpcyBydW5uaW5nIGFuZCBzaWduYWwgdmFsdWUgaXMgYmV0d2VlbiAxc3QgYW5kIDJuZCB0aHJlc2hvbGQKKyAgICBMNENfUFdSX0xFVkVMX1JBTkdFX1RXTyAgICAgICAgID0gMywvL1Bvd2VyIGxldmVsIHRocmVzaG9sZCB0aW1lciBpcyBydW5uaW5nIGFuZCBzaWduYWwgdmFsdWUgaXMgYmV0d2VlbiAybmQgYW5kIDNyZCB0aHJlc2hvbGQKKyAgICBMNENfUFdSX0xFVkVMX1JBTkdFX1RIUkVFICAgICAgID0gNCwvL1Bvd2VyIGxldmVsIHRocmVzaG9sZCB0aW1lciBpcyBydW5uaW5nIGFuZCBzaWduYWwgdmFsdWUgaXMgYmV0d2VlbiAzcmQgYW5kIDR0aCB0aHJlc2hvbGQKKyAgICBMNENfUFdSX0xFVkVMX1JBTkdFX0ZPVVIgICAgICAgID0gNSwvL1Bvd2VyIGxldmVsIHRocmVzaG9sZCB0aW1lciBpcyBydW5uaW5nIGFuZCBzaWduYWwgdmFsdWUgaXMgYmV0d2VlbiA0dGggYW5kIDV0aCB0aHJlc2hvbGQKKyAgICBMNENfUFdSX0xFVkVMX1JBTkdFX0ZJVkUgICAgICAgID0gNiwvL1Bvd2VyIGxldmVsIHRocmVzaG9sZCB0aW1lciBpcyBydW5uaW5nIGFuZCBzaWduYWwgdmFsdWUgaXMgYmV0d2VlbiA1dGggYW5kIDZ0aCB0aHJlc2hvbGQKKyAgICBMNENfUFdSX0xFVkVMX1JBTkdFX1NJWCAgICAgICAgID0gNywvL1Bvd2VyIGxldmVsIHRocmVzaG9sZCB0aW1lciBpcyBydW5uaW5nIGFuZCBzaWduYWwgdmFsdWUgaXMgYmV0d2VlbiA2dGggYW5kIDd0aCB0aHJlc2hvbGQKKyAgICBMNENfUFdSX0xFVkVMX1JBTkdFX1NFVkVOICAgICAgID0gOCwvL1Bvd2VyIGxldmVsIHRocmVzaG9sZCB0aW1lciBpcyBydW5uaW5nIGFuZCBzaWduYWwgdmFsdWUgaXMgYmV0d2VlbiA3dGggYW5kIDh0aCB0aHJlc2hvbGQKKyAgICBMNENfUFdSX0xFVkVMX1JBTkdFX0hJR0ggICAgICAgID0gOSwvL1Bvd2VyIGxldmVsIHRocmVzaG9sZCB0aW1lciBpcyBydW5uaW5nIGFuZCBzaWduYWwgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSA4c3QgdGhyZXNob2xkCisgICAgTDRDX1BXUl9MRVZFTF9SQU5HRV9JTlZBTElEICAgICA9IDEwLC8vUG93ZXIgbGV2ZWwgdGhyZXNob2xkIHRpbWVyIGlzIHJ1bm5pbmcgYW5kIHNpZ25hbCB2YWx1ZSBpcyBJbnZhbGlkIGN1cnJlbnRseQorICAgIEw0Q19QV1JfTEVWRUxfUkFOR0VfTUFYCit9IGw0Y19wb3dlcl9sZXZlbF90aHJlc2hvbGRfcmFuZ2VfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTDRDX1NBUl9JR05PUkVfQUNUSU9OID0gLTEsCisgICAgTDRDX1NBUl9NT0RFTV9UT19BUF9ESVNBQkxFX0FDVElPTiA9IDAsCisgICAgTDRDX1NBUl9NT0RFTV9UT19BUF9FTkFCTEVfQUNUSU9OLAorICAgIEw0Q19TQVJfQVBfVE9fTU9ERU1fUkVCT09UX05PVElGWV9BQ1RJT04sCisgICAgTDRDX1NBUl9BUF9UT19NT0RFTV9EQVRBX0FDVElPTiwKKyAgICBMNENfU0FSX1VOREVGSU5FRF9BQ1RJT04KK31sNGNfc2FyX2FjdGlvbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfU0FSX05FQVIgPSAwLAorICAgIEw0Q19TQVJfRkFSID0gMSwgIAorICAgIEw0Q19TQVJfU1RBVEVfVU5LTk9XTl9TQVJfRElTQUJMRSA9IDI1MywKKyAgICBMNENfU0FSX1NUQVRFX1VOS05PV05fU0FSX0VOQUJMRSA9IDI1NCwKKyAgICBMNENfU0FSX1NUQVRFX1VOS05PV05fU0FSX05PVF9TVVBQT1JURUQgPSAyNTUKK31sNGNfc2FyX2RhdGFfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTDRDX1NDUF9ESVNBQkxFLAorICAgIEw0Q19TQ1BfRU5BQkxFCit9IGw0Y19zY3BfbW9uaXRvcl9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIEw0Q19SQVRfTk9fQ1VTVE9NSVpBVElPTiwKKyAgICBMNENfUkFUX05MX0NVU1RPTUlaQVRJT04sCisgICAgTDRDX1JBVF9OTFdHX0NVU1RPTUlaQVRJT04KK30gbDRjX3JhdF9tb2RlX2N1c3RvbV90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bXsKKyAgICBMNENfU0lNX0xHVSwKKyAgICBMNENfU0lNX0tUX1NLVCwKKyAgICBMNENfU0lNX0FVU0FfSCwKKyAgICBMNENfU0lNX0FVU0FfUiwKKyAgICBMNENfU0lNX09USEVSCit9IGw0Y19zaW1fb3Blcl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfUExNTl9UWVBFX0FSUkFZLAorICAgIEw0Q19QTE1OX1RZUEVfUExNTl9TVFJVQ1QKK30gbDRjX3BsbW5fdHlwZV9lbnVtOworCisjaWZkZWYgX19UQzAxX18KK3R5cGVkZWYgZW51bQoreworICAgIEw0Q19FQ0NfQ0FMTF9DT05OTkVDVEVEX1NUQVRVU19OT05FID0gMCwKKyAgICBMNENfRUNDX0NBTExfTk9UX0NPTk5FQ1RFRCwKKyAgICBMNENfRUNDX0NBTExfQ09OTkVDVEVECit9IGw0Y19lY2NfY29ubmVjdGVkX3N0YXR1c19lbnVtOworI2VuZGlmIC8qIF9fVEMwMV9fICovCisKKyNpZiBkZWZpbmVkKF9fRUNBTExfU1VQUE9SVF9fKSB8fCBkZWZpbmVkKF9fTkdfRUNBTExfU1VQUE9SVF9fKQordHlwZWRlZiBlbnVtCit7CisgICAgTDRDX0VDQUxMX0NVU1RPTUVSX1VSSSA9IDEsCisgICAgTDRDX0VDQUxMX1VTSU1fVVJJLAorICAgIEw0Q19FQ0FMTF9DVVNUT01FUl9OVU0sCisgICAgTDRDX0VDQUxMX1VTSU1fTlVNLAorfSBsNGNfZWNhbGxfbnVtX3R5cGVfZW51bTsKKyNlbmRpZiAvKiBfX0VDQUxMX1NVUFBPUlRfXyB8fCBfX05HX0VDQUxMX1NVUFBPUlRfXyovCit0eXBlZGVmIGVudW0geworICAgIEw0Q19ESVNBQkxFX05PTkVfUk9BTUlOR19NT0RFICAgICAgPSAweDAwLAorICAgIEw0Q19ESVNBQkxFX0lOVEVSTkFUSU9OQUxfUk9BTUlORyAgPSAweDAxLAorICAgIEw0Q19ESVNBQkxFX05BVElPTkFMX1JPQU1JTkcgICAgICAgPSAweDAyLAorICAgIEw0Q19ESVNBQkxFX0hQUExNTl9TRUFSQ0ggICAgICAgICAgPSAweDA0LAorICAgIEw0Q19ESVNBQkxFX0FMTF9ST0FNSU5HX01PREUgICAgICAgPSAweDA3CisgICAgCit9IGw0Y19yb2FtaW5nX3NldHRpbmdfZW51bTsKKworCisjZW5kaWYgLyogbDRjX2NvbW1vbl9lbnVtLmggKi8KZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y19jdG1fY21kLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfY3RtX2NtZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MjI1MWMKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfY3RtX2NtZC5oCkBAIC0wLDAgKzEsMTM5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqIGw0Y19jdG1fY21kLmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgTVQ2MjA4CisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgVGhpcyBmaWxlIGlzIGludGVuZHMgZm9yIO+/vUsuCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogICAgICAgICAgICAgSElTVE9SWQorICogQmVsb3cgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBVcHBlciB0aGlzIGxpbmUsIHRoaXMgcGFydCBpcyBjb250cm9sbGVkIGJ5IFBWQ1MgVk0uIERPIE5PVCBNT0RJRlkhIQorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogIFRoaXMgcHJvZHVjdCBoYXMgYmVlbiBkZXZlbG9wZWQgdXNpbmcgYSBwcm90b2NvbCBzdGFjaworKiAgZGV2ZWxvcGVkIGJ5IFNhc2tlbiBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBMaW1pdGVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0w0Q19DVE1fQ01EX0gKKyNkZWZpbmUgX0w0Q19DVE1fQ01EX0gKKworI2lmZGVmIF9fQ1RNX1NVUFBPUlRfXworLy8jaW5jbHVkZSAia2FsX25vbl9zcGVjaWZpY19nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKworZXh0ZXJuIHZvaWQgbDRjX2N0bV9pbml0X2NvbnRleHQodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfY3RtX2luaXQodm9pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2N0bV9vcGVuX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggY3RtX2ludGVyZmFjZSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2N0bV9jbG9zZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2N0bV9jb25uZWN0X3JlcShrYWxfdWludDggc3JjX2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfY3RtX3NlbmRfdGV4dF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQxNiBudW1fb2ZfY2hhciwga2FsX3VpbnQxNiAqdGV4dCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2N0bV9zZXRfZGVmYXVsdF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX2Jvb2wgaXNfdHVybl9vbiwga2FsX3VpbnQ4IGN0bV9pbnRlcmZhY2UpOworZXh0ZXJuIGthbF9ib29sIGw0Y19jdG1fZ2V0X2RlZmF1bHRfcmVxKGthbF91aW50OCBzcmNfaWQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19jdG1fc2V0X2NvbmZpZ19yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBncm91cF9pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBwYXJhMSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBwYXJhMiwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBwYXJhMywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBwYXJhNCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBwYXJhNSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGJpdG1hc2spOworI2lmIGRlZmluZWQoX19DVE1fQVRfQ01EX1NVUFBPUlRfXykKK2V4dGVybiBrYWxfYm9vbCBsNGNfY3RtX2dldF9jb25maWdfcmVxKGthbF91aW50OCBncm91cF9pZCk7CisjZW5kaWYKKyNlbmRpZiAvKiBfX0NUTV9TVVBQT1JUX18gKi8gCisKKyNlbmRpZiAvKiBfTDRDX0NUTV9DTURfSCAqLworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfZW0uaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y19lbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMzVlZTAKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfZW0uaApAQCAtMCwwICsxLDY3NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGw0Y19lbS5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1BVUkKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBFbmdpbmVlciBtb2RlIGhlYWRlciBmaWxlLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogICAgICAgICAgICAgSElTVE9SWQorICogQmVsb3cgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEgCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBVcHBlciB0aGlzIGxpbmUsIHRoaXMgcGFydCBpcyBjb250cm9sbGVkIGJ5IFBWQ1MgVk0uIERPIE5PVCBNT0RJRlkhISAKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogIFRoaXMgcHJvZHVjdCBoYXMgYmVlbiBkZXZlbG9wZWQgdXNpbmcgYSBwcm90b2NvbCBzdGFjaworKiAgZGV2ZWxvcGVkIGJ5IFNhc2tlbiBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBMaW1pdGVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0w0Q19FTV9ICisjZGVmaW5lIF9MNENfRU1fSAorCisjaW5jbHVkZSAiZW1fc3RydWN0LmgiCisvLyNpbmNsdWRlICJrYWxfbm9uX3NwZWNpZmljX2dlbmVyYWxfdHlwZXMuaCIKKy8vI2luY2x1ZGUgImFwcF9sdGxjb20uaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIgLy9NU0JCIGNoYW5nZSAjaW5jbHVkZSAic3RhY2tfY29uZmlnLmgiCisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJlbV9sNF9wdWJsaWNfc3RydWN0LmgiCisjaW5jbHVkZSAiZW1fbDRfY29tbW9uX3B1YmxpY19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJmdF9tc2dfbDQuaCIKKworZXh0ZXJuIGVtX3NvdXJjZV9lbnVtIGdfZW1fY21kX3NyYzsKKworLyogRGVmaW5pdGlvbnMgZm9yIENoYW5uZWwgTG9jayBjb25zdGFudHMgKi8KKyNpZiBkZWZpbmVkKF9fTU9ERU1fRU1fTU9ERV9fKQorI2lmIGRlZmluZWQoX19DSEFOTkVMX0xPQ0tfXykKKworI2RlZmluZSBMNENfQ0hfTE9DS19NT0RFX0NBTkNFTCAwCisjZGVmaW5lIEw0Q19DSF9MT0NLX01PREVfU0VUICAgIDEKKyNkZWZpbmUgTDRDX0NIX0xPQ0tfTU9ERV9TRVRfQ0JSUyAyCisjZGVmaW5lIEw0Q19DSF9MT0NLX01PREVfQ09ORklHX0NCUlMgICAgMworCisjZGVmaW5lIEw0Q19DSF9MT0NLX0JBTkRfSU5EX05PVF8xOTAwIDAKKyNkZWZpbmUgTDRDX0NIX0xPQ0tfQkFORF9JTkRfMTkwMCAgICAgMQorCisjZGVmaW5lIEw0Q19DSF9MT0NLX0FDVF9HQVMgMAorI2RlZmluZSBMNENfQ0hfTE9DS19BQ1RfVUFTIDIKKyNkZWZpbmUgTDRDX0NIX0xPQ0tfQUNUX0VBUyA3CisjZGVmaW5lIEw0Q19DSF9MT0NLX0FDVF9OUkFTIDExCisKKyNkZWZpbmUgTDRDX0NIX0xPQ0tfQVJGQ05fTUFYICAgNDY1ODkKKyNkZWZpbmUgTDRDX0NIX0xPQ0tfQ0VMTF9JRF9NQVggMTAwOAorI2RlZmluZSBMNENfQ0hfTE9DS19DSEFOTkVMX05VTV9NQVggMzIKKworI2RlZmluZSBMNENfQ0hfTE9DS19DRUxMX0lEX05PVF9TRVQgMHhGRkZGCisKKyNlbmRpZiAvKiBfX0NIQU5ORUxfTE9DS19fICovCisjZW5kaWYgLyogX19NT0RFTV9FTV9NT0RFX18gKi8KKworLyogRGVmaW5pdGlvbnMgZm9yIEVNIFRYIHBvd2VyIGNvbnN0YW50cyovCisjaWZkZWYgX19FTV9NQVhfVFhfUE9XRVJfU1VQUE9SVF9fCisjZGVmaW5lIEw0Q19HU01fUkFUICAgICAgICAgMAorI2RlZmluZSBMNENfV0NETUFfUkFUICAgICAgIDEKKyNkZWZpbmUgTDRDX1REU0NETUFfUkFUICAgICAyCisjZGVmaW5lIEw0Q19DMktfUkFUICAgICAgICAgMworI2RlZmluZSBMNENfTFRFX1JBVCAgICAgICAgIDQKKyNkZWZpbmUgTDRDXzFYX1JBVCAgICAgICAgICA1CisjZGVmaW5lIEw0Q19FVkRPX1JBVCAgICAgICAgNgorI2lmZGVmIF9fVFhfUFdSX0VYVEVOU0lPTl9fCisjZGVmaW5lIEw0Q19OUl9SQVQgICAgICAgICAgNworI2RlZmluZSBMNENfTUFYX1NVUFBPUlRfUkFUICAgICA3CisjZW5kaWYKKyNlbmRpZgorCisvKlN0YXJ0IEV4dGVuZGVkIExDRSBzdXBwb3J0Ki8KKyNkZWZpbmUgTDRDX0VYVEVOREVEX0xDRV9NQVhfVEhSRVNIT0xEICAgIEVYVEVOREVEX0xDRV9NQVhfVEhSRVNIT0xEIC8vIHRocmVzaG9sZCBzaXplIGlzIDIwCisKKyNkZWZpbmUgTDRDX0xDRV9SQVRfR1NNICAgIDEKKyNkZWZpbmUgTDRDX0xDRV9SQVRfVU1UUyAgIDIKKyNkZWZpbmUgTDRDX0xDRV9SQVRfTFRFICAgIDMKKyNkZWZpbmUgTDRDX0xDRV9SQVRfTlIgICAgIDQKKyNkZWZpbmUgTDRDX0xDRV9SQVRfTUFYICAgIDUKKy8qRW5kIEV4dGVuZGVkIExDRSBzdXBwb3J0Ki8KKworLyogTDRDIGNhbGwtYmFjayBmdW5jdGlvbnMgZm9yIE1NSSAqLwordm9pZCBsNGFfZW1fdXBkYXRlX3JlcSAoa2FsX3VpbnQ4IHNyY19pZCxrYWxfdWludDggKmluZm9fcmVxdWVzdCk7Cit2b2lkIGw0Y19lbV91cGRhdGVfcmVxKGVtX3NvdXJjZV9lbnVtIGVtX3NyYywgZW1faW5mb19zdGF0dXNfZW51bSAqaW5mb19yZXF1ZXN0KTsKK3ZvaWQgbDRjX3Z0X2VtX2dldF9jb25maWdfcmVxKGthbF91aW50OCBzcmNfaWQpOwordm9pZCBsNGNfdnRfZW1fc2V0X2NvbmZpZ19yZXEoa2FsX3VpbnQ4IHNyY19pZCwgdnRfZW1fY29uZmlnX3N0cnVjdCAqZW1fY29uZmlnKTsKK3ZvaWQgbDRjX2VtX2NlbGxfcmVzZWxfc3VzcGVuZF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHN0YXR1cyk7Cit2b2lkIGw0Y19lbV9jZWxsX3Jlc2VsX3Jlc3VtZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCk7Cit2b2lkIGw0Y19lbV9nZXRfY2VsbF9sb2NrX3JlcShrYWxfdWludDggc3JjX2lkKTsKK3ZvaWQgbDRjX2VtX3NldF9jZWxsX2xvY2tfcmVxKAorICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICBrYWxfYm9vbCB0dXJuX29uX29yX29mZiwKKyAgICAgICAga2FsX2Jvb2wgYmFuZF9pbmRpY2F0b3IsCisgICAgICAgIGthbF91aW50MTYgKmxvY2tfYXJmY24pOworZXh0ZXJuIHZvaWQgbDRjX2VtX2NvbW1vbl9zZXRfY2VsbF9sb2NrX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDMyIGVuYWJsZWRfYml0bWFwLCBrYWxfYm9vbCBiYW5kX2luZGljYXRvciwga2FsX3VpbnQxNiAqbG9ja19hcmZjbiwga2FsX3VpbnQzMiBtb2RlKTsKK2V4dGVybiB2b2lkIGw0Y19lbV9leHRfZ2V0X2NlbGxfbG9ja19yZXEoa2FsX3VpbnQ4IHNyY19pZCk7CitleHRlcm4gdm9pZCBsNGNfZW1fZXh0X3NldF9jZWxsX2xvY2tfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50MzIgZW5hYmxlZF9iaXRtYXAsIGthbF9ib29sIGJhbmRfaW5kaWNhdG9yLCBrYWxfdWludDE2ICpsb2NrX2FyZmNuKTsKKworI2lmIGRlZmluZWQoX19NT0RFTV9FTV9NT0RFX18pCisjaWYgZGVmaW5lZChfX0NIQU5ORUxfTE9DS19fKQordm9pZCBsNGNfZW1tY2hsY2tfcmVhZChrYWxfdWludDggc3JjX2lkKTsKK3ZvaWQgbDRjX2VtbWNobGNrX3dyaXRlKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBtb2RlLCBrYWxfdWludDggYWN0LCAKKyAgICBrYWxfdWludDE2ICpiYW5kX2luZGljYXRvcl9wdHIsIGthbF91aW50MzIgKmFyZmNuX3B0ciwga2FsX3VpbnQxNiBjZWxsX2lkLGthbF91aW50OCBjaGFubmVsX251bSxrYWxfdWludDggbG9ja19tb2RlKTsKKyNlbmRpZiAvKiBfX0NIQU5ORUxfTE9DS19fICovCisjZW5kaWYgLyogX19NT0RFTV9FTV9NT0RFX18gKi8KKwordm9pZCBsNGNfZW1fZmVhdHVyZV9jb21tYW5kX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggZW1fZmVhdHVyZSwga2FsX3VpbnQ4IGVtX2ZlYXR1cmVfc3RhdGUpOworCisvKiBFTSBtYWluIG1lc3NhZ2UgaGFuZGxlciAqLwordm9pZCBsNGNfZW1faGFuZGxlcihpbG1fc3RydWN0ICppbG1fcHRyKTsKK2thbF9ib29sIGw0Y19lbV9ud19ldmVudF9ub3RpZnlfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF9ib29sIGlzX29uLCBrYWxfdWludDggbnVtX29mX21vZCwgbW9kdWxlX3R5cGUgKm1vZF9saXN0KTsKKwordm9pZCBsNGNfZW1fcXVpY2tfdGVzdF9yZXBvcnRfcmVzX3JlcShrYWxfYm9vbCByZXN1bHQsIGthbF91aW50OCB0ZXN0X2NvdW50LCBrYWxfdWludDggKnRlc3RfbGlzdCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfbDFfbWF4X3R4X3B3cl9yZWRfcmVxKGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF9ib29sIGdzbV90YmxfdmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICoqKmdzbV90eF9wd3JfcmVkdWN0aW9uX3RibCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKioqZ3NtX3R4X3B3cl9yZWR1Y3Rpb25fdGJsX3RhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfYm9vbCB1bXRzX3RibF92YWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKip1bXRzX3R4X3B3cl9yZWR1Y3Rpb25fdGJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqKnVtdHNfdHhfcHdyX3JlZHVjdGlvbl90YmxfdGFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF9ib29sIGx0ZV90YmxfdmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBsdGVfYmFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmx0ZV90eF9wd3JfcmVkdWN0aW9uX3BhcmFtKTsKKworI2lmZGVmIF9fVEMxMF9fCitleHRlcm4ga2FsX2Jvb2wgbDRjX21tcmZfZ2V0X3RlbXBlcmF0dXJlX2luZm9fcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBtb2RlKTsKK2V4dGVybiB2b2lkIGw0Y21tcmZfdGVtcGVyYXR1cmVfY25mX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKKyNlbmRpZgorCitleHRlcm4ga2FsX2Jvb2wgbDRjX2dldF90aGVybWFsX2luZm9fcmVxKGthbF91aW50OCBzcmNfaWQpOworZXh0ZXJuIHZvaWQgbDRjX2dldF90aGVybWFsX2luZm9fdmlhX2NjY2lfcmVxKCk7CisKK2V4dGVybiB2b2lkIGw0Y19nZXRfdGhlcm1hbF9pbmZvX2NuZl9oZGxyKG1zZ190eXBlIG1zZ19pZCwgbG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9zZXRfcnhfcGF0aF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBjbWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCByeF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX2Jvb2wgIG52cmFtX3dyaXRlKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19mb3JjZV90eF9hbnRfcmVxKGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCByYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggYW50X3N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGJhbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbnZyYW1fd3JpdGUpOworZXh0ZXJuIHZvaWQgbDRjX2ZvcmNlX3R4X2FudF9jbmZfaGRscihtc2dfdHlwZSBtc2dfaWQsIGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0cik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfbWV0YV9jZmdfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBtb2RlLCBGVF9NT0RFX1NXSVRDSF9SRVNVTFQgKnJlc3VsdF9wdHIpOworCitleHRlcm4gdm9pZCBsNGNfcnhfcnNzaV92ZXJpZnlfaW5kX2hkbHIobXNnX3R5cGUgbXNnX2lkLGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0cik7CitleHRlcm4gdm9pZCBsNGNfZW1fdHhfcmVwb3J0X2luZF9oZGxyKG1zZ190eXBlIG1zZ19pZCxsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NldF9yZl90ZW1wZXJhdHVyZV90aHJlc2hvbGRfcmVxKGthbF91aW50OCBzcmNfaWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfYm9vbCBvbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF9pbnQxNiB0aHJlc2hvbGQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfaW50MTYgcGVyaW9kKTsKK2V4dGVybiB2b2lkIGw0Y19zZXRfcmZfdGVtcGVyYXR1cmVfdGhyZXNob2xkX2NuZl9oZGxyKG1zZ190eXBlIG1zZ19pZCwgbG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyKTsKK2V4dGVybiB2b2lkIGw0Y19zZXRfcmZfdGVtcGVyYXR1cmVfdGhyZXNob2xkX2luZF9oZGxyKG1zZ190eXBlIG1zZ19pZCwgbG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyKTsKKworI2lmZGVmIF9fTFRFX1JBVF9fCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Z6d19hbnRlbm5hX3Rlc3RfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCB0eXBlLCBrYWxfdWludDggcDEsIGthbF91aW50OCBwMik7CitleHRlcm4gdm9pZCBsNGNfdnp3X2FudGVubmFfdGVzdF9jbmZfaGFuZGxlcihtc2dfdHlwZSBtc2dfaWQsIGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0cik7CisjZW5kaWYKKworZXh0ZXJuIHZvaWQgbDRjeGwxX3R4cnhfYWN0aXZlX3RpbWVfY25mX2hkbHIobXNnX3R5cGUgbXNnX2lkLCBsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworZXh0ZXJuIHZvaWQgbDRjX2FjY3VtdWxhdGVfdHhyeF9hY3RpdmVfdGltZShrYWxfdWludDMyIHJ4X3RpbWUsIGthbF91aW50MzIgKnR4X3RpbWUsIGthbF91aW50MzIgdHhyeF91bmlvbl90aW1lKTsKKworZXh0ZXJuIHZvaWQgbDRjX2Mya19yZl90ZXN0X2NuZl9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0cik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZW1fbW1yZl9taXBpX2FjdGlvbl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggYWN0aW9uLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcG9ydCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJ3X3R5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB1c2lkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGFkZHIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MzIgd3JfZGF0YSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZW1fbW1yZl9icGlfYWN0aW9uX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggYWN0aW9uLCBrYWxfdWludDMyIGRhdGExLCBrYWxfdWludDMyIGRhdGEyKTsKK2V4dGVybiB2b2lkIGw0Y19lbV9tbXJmX21pcGlfYnBpX2FjdGlvbl9jbmZfaGRscihtc2dfdHlwZSBtc2dfaWQsIGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0cik7CisKK2V4dGVybiB2b2lkIGw0Y3BzX21kX2V2ZW50X2luZF9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CitleHRlcm4gdm9pZCBsNGNfc2VuZF9tZG1pX3JhdF9pbmZvKCk7CitleHRlcm4gdm9pZCBsNGNfZW1fZXZlbnRfc2V0X2JpdG1hc2soZW1faW5mb19zdGF0dXNfZW51bSBlbV9pbmZvX3N0YXR1cywgbDRjX2VtX2V2ZW50X2VudW0gbDRjX2VtX2V2ZW50KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19yZmlkX3VwZGF0ZV9yZXFfaGRscihrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDE2IGZlYXR1cmUsIGthbF9pbnQxNiBzY2VuYXJpb19pbmRleCk7CitleHRlcm4gdm9pZCBsNGNfcmZpZF91cGRhdGVfY25mX2hkbHIobXNnX3R5cGUgbXNnX2lkLCBsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NldF9nc21fdHhfcG93ZXJfcmVxX2hkbHIoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGNtZF90eXBlLCBrYWxfdWludDggZ3NtX2JhbmQsIGthbF9pbnQ4IHBjbF92YWx1ZSk7CitleHRlcm4gdm9pZCBsNGNfc2V0X2dzbV90eF9wb3dlcl9jbmZfaGRscihtc2dfdHlwZSBtc2dfaWQsIGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0cik7CisKKyNpZmRlZiBfX0FURVJGVFhfRVJST1JfSEFORExFX0VOSEFOQ0VfXworZXh0ZXJuIHZvaWQgbDRjX2VtX3JmX3Rlc3RfZ3NtX3R4X3Rlc3RfaW5kX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyKTsKKworZXh0ZXJuIHZvaWQgbDRjX2VtX2VyZnR4X2dzbV9yc3Aoa2FsX3VpbnQ4IHNyY19pZCwgcHNfY2F1c2VfZW51bSBlcnJvcl9jYXVzZSk7CisjZW5kaWYgCisKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zZXRfbWF4X3R4X3Bvd2VyX3JlcV9oZGxyKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCByYXQsIGthbF91aW50MTYgb2Zmc2V0LCBrYWxfdWludDggZ3NtX2JhbmQpOworZXh0ZXJuIHZvaWQgbDRjX3NldF9tYXhfdHhfcG93ZXJfY25mX2hkbHIobXNnX3R5cGUgbXNnX2lkLCBsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworCisjaWZkZWYgX19SRl9TQ0FOX0ZPUl9ERVNFTlNFX1RFU1RfXworZXh0ZXJuIGthbF9ib29sIGw0Y19sMV9lbV9yZl9zY2FuX3JlcShrYWxfdWludDggc3JjX2lkLCBlbV9yZl9zY2FuX3JlcV9zdHJ1Y3QgKnJlcXVlc3QpOworZXh0ZXJuIHZvaWQgbDRjX2wxX2VtX3JmX3NjYW5fY25mX2hkbHIobXNnX3R5cGUgbXNnX2lkLCBsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworI2VuZGlmIC8qX19SRl9TQ0FOX0ZPUl9ERVNFTlNFX1RFU1RfXyovCisjaWZkZWYgX19NQ0ZfQ09NQklORV9GSUxFX1NVUFBPUlRfXworZXh0ZXJuIGthbF9ib29sIGw0Y19zZXRfbWNmX2NvbmZpZ19yZXFfaGRscihrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggb3AsIGthbF91aW50OCBjb25maWdfdHlwZSwga2FsX3VpbnQ4IHBhdGhfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmNvbmZpZzEsIGthbF91aW50OCAqY29uZmlnMiwga2FsX3VpbnQ4ICpjb25maWczLCBrYWxfdWludDggKmNvbmZpZzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHRyaWdnZXJfZHNicCwga2FsX3VpbnQ4IGFjdGlvbiwga2FsX3VpbnQ4IG1vZGUsIGthbF91aW50OCAqaXRlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnZhbHVlLCBrYWxfdWludDggaXNfcmVzZXQpOworI2Vsc2UKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2V0X21jZl9jb25maWdfcmVxX2hkbHIoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG9wLCBrYWxfdWludDggY29uZmlnX3R5cGUsIGthbF91aW50OCBwYXRoX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpjb25maWcxLCBrYWxfdWludDggKmNvbmZpZzIsIGthbF91aW50OCAqY29uZmlnMywga2FsX3VpbnQ4ICpjb25maWc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0cmlnZ2VyX2RzYnAsIGthbF91aW50OCBhY3Rpb24sIGthbF91aW50OCBtb2RlLCBrYWxfdWludDggKml0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICp2YWx1ZSk7CisjZW5kaWYgLyogX19NQ0ZfQ09NQklORV9GSUxFX1NVUFBPUlRfXyAqLworZXh0ZXJuIHZvaWQgbDRjX3NldF9tY2ZfY29uZmlnX2NuZl9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0cik7CisKK2V4dGVybiB2b2lkIGw0Y19nZXRfbWNmX2NvbmZpZ19jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworCitleHRlcm4gdm9pZCBsNGNfbWNmX3JlcG9ydF9zdGF0ZV9pbmRfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworZXh0ZXJuIHZvaWQgbDRjX21jZl9kdW1wX2RhdGFfY25mX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyKTsKKworZXh0ZXJuIHZvaWQgbDRjX29zdGRfYXBfY29yZV9zdGF0dXNfcmVxX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyKTsKKworZXh0ZXJuIHZvaWQgbDRjX21jZl91cGRhdGVfb3RhX2ZpbGVfY25mX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyKTsKK2V4dGVybiB2b2lkIGw0Y19tY2ZfY29uZmlnX2NuZl9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0cik7CitleHRlcm4ga2FsX2Jvb2wgbDRjX21jZl9jb25maWdfbGlkX3ZhcmlhYmxlX29wX3JlcV9oZGxyKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBvcCxrYWxfdWludDggYWN0aW9uLCBrYWxfdWludDE2IGxpZF9udW0sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgcmVjb3JkX2lkLCBrYWxfdWludDggKnRhZ19uYW1lLCBrYWxfdWludDggbGVuZ3RoKTsKK2V4dGVybiB2b2lkIGw0Y19tY2ZfY29uZmlnX2xpZF92YXJpYWJsZV9vcF9jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworCisjaWZkZWYgX19NQ0ZfQ09NQklORV9GSUxFX1NVUFBPUlRfXworZXh0ZXJuIGthbF9ib29sIGw0Y19tY2ZfdmFyaWFibGVfdmFsdWVfb3BlcmF0aW9uX3JlcV9oZGxyKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBvcCwga2FsX3VpbnQ4IGZvcm1hdCwga2FsX3VpbnQ4IGFjdGlvbiwga2FsX3VpbnQzMiBudW1iZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqY29uZmlnLCBrYWxfdWludDggbGVuZ3RoLCBrYWxfdWludDE2IHJlY29yZF9pZCwga2FsX3VpbnQ4ICp2YWx1ZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfbWNmX2Fzc2lnbl9jb21iaW5lZF9maWxlX3BhdGhfcmVxX2hkbHIoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG9wLCBrYWxfdWludDggY29uZmlnX3R5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHBhdGhfdHlwZSwga2FsX3VpbnQ4ICpjb25maWcxKTsKK2V4dGVybiB2b2lkIGw0Y19tY2ZfYXNzaWduX2NvbWJpbmVkX2ZpbGVfcGF0aF9jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworCisjZWxzZQorZXh0ZXJuIGthbF9ib29sIGw0Y19tY2ZfdmFyaWFibGVfdmFsdWVfb3BlcmF0aW9uX3JlcV9oZGxyKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBvcCwga2FsX3VpbnQ4IGZvcm1hdCwga2FsX3VpbnQ4IGFjdGlvbiwga2FsX3VpbnQzMiBudW1iZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqY29uZmlnLCBrYWxfdWludDggbGVuZ3RoLCBrYWxfdWludDE2IHJlY29yZF9pZCk7CisKKyNlbmRpZiAvKiBfX01DRl9DT01CSU5FX0ZJTEVfU1VQUE9SVF9fICovCisKK2V4dGVybiB2b2lkIGw0Y19tY2ZfdmFyaWFibGVfdmFsdWVfb3BlcmF0aW9uX2NuZl9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0cik7CisKK2V4dGVybiB2b2lkIGw0Y19tY2ZfZHVtcF9kYXRhX2NuZl9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0cik7CisKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lbV9leHRlbmRlZF9sY2VfcmVwb3J0X3JlcShrYWxfdWludDggb3AsCisJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBoeXN0X21pbGxpLAorCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgdWxfaHlzdF9rYnBzLAorCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgZGxfaHlzdF9rYnBzLAorCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB1bF90aHJlc2hfbnVtLAorCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MzIgKnVsX3RocmVzaG9sZCwKKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggZGxfdGhyZXNoX251bSwKKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyICpkbF90aHJlc2hvbGQsCisJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJhdCk7CitleHRlcm4gdm9pZCBsNGN1bDFfZXh0ZW5kZWRfbGNlX3JlcG9ydF9pbmRfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworZXh0ZXJuIHZvaWQgbDRjZWwxX2V4dGVuZGVkX2xjZV9yZXBvcnRfaW5kX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKK2V4dGVybiB2b2lkIGw0Y25sMV9leHRlbmRlZF9sY2VfcmVwb3J0X2luZF9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CisKK2V4dGVybiB2b2lkIGw0Y3VtYWNfZXh0ZW5kZWRfbGNlX3JlcG9ydF9pbmRfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworZXh0ZXJuIHZvaWQgbDRjbWFjX2V4dGVuZGVkX2xjZV9yZXBvcnRfaW5kX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKKworZXh0ZXJuIHZvaWQgbDRjX2VtX2V4dGVuZGVkX2xjZV9yZXBvcnRfaW5kX2hkbHIoa2FsX3VpbnQ4IGlzX3VsX3ZhbGlkLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyIHVsX2ticHMsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBpc19kbF92YWxpZCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQzMiBkbF9rYnBzKTsKKworZXh0ZXJuIHZvaWQgbDRjX2xjbV9ob3BwaW5nX2luZF9oZGxyKG1zZ190eXBlIG1zZ19pZCxsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworCitleHRlcm4gdm9pZCBsNGNfZW1fZ2V0X2FudGVubmFfaW5mb19yZXEoa2FsX3VpbnQ4IG1vZGUpOworZXh0ZXJuIHZvaWQgbDRjX2VtX2dldF9hbnRlbm5hX2luZm9fY25mX2hkbHIobXNnX3R5cGUgbXNnX2lkLCBsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworZXh0ZXJuIHZvaWQgbDRjX2VtX2dldF9hbnRlbm5hX2luZm9faW5kX2hkbHIobXNnX3R5cGUgbXNnX2lkLCBsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworCitleHRlcm4gdm9pZCBsNGNfMmdfcmZfdGVzdF9jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX21jZl9jb25maWdfZHVtcF9saWRfZGF0YV9yZXFfaGRscihrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggb3AsIGthbF91aW50MTYgKmxpZCwga2FsX3VpbnQzMiBjb3VudCk7CisKKyNpZmRlZiBfX1NBUl9TRU5TT1JfU1VQUE9SVF9fCitleHRlcm4gdm9pZCBsNGNfc2FyX3NlbnNvcl9zZXR0aW5nX2Zvcl9yZmlkKGthbF91aW50OCBnX3Nhcl9zZW5zb3Jfc3RhdGUpOworZXh0ZXJuIHZvaWQgbDRjX3Nhcl9zZXRfdHhfYW50X3JlcV9jb3VudChrYWxfdWludDggY291bnQpOworZXh0ZXJuIGthbF91aW50OCBsNGNfc2FyX2dldF90eF9hbnRfcmVxX2NvdW50KCk7CitleHRlcm4gdm9pZCBsNGNfc2FyX3NldF90eGFudF91cGRhdGVfbmVlZGVkKCk7CitleHRlcm4gdm9pZCBsNGNfc2FyX3Jlc2V0X3R4YW50X3VwZGF0ZV9uZWVkZWQoKTsKK2V4dGVybiB2b2lkIGw0Y191cGRhdGVfc2FyX3NlbnNvcl9pbl9hcCgpOworZXh0ZXJuIHZvaWQgbDRjX3VwZGF0ZV9mbGlnaHRfc2FyX3NlbnNvcl9pbl9hcChrYWxfYm9vbCBmbGlnaHRfc3RhdHVzKTsKKyNlbmRpZgorCitleHRlcm4gdm9pZCBsNGNfdHhfcG93ZXJfc3RhdHVzX2luZF9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0cik7CisjaWZkZWYgX19UWF9QV1JfRVhURU5TSU9OX18KK2V4dGVybiBrYWxfYm9vbCBsNGNfc2V0X2V4Y2x1c2l2ZV9tYXhfdHhfcG93ZXJfcmVxX2hkbHIoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHJhdCwga2FsX3VpbnQ4IG51bV9iYW5kLCBrYWxfdWludDggKmJhbmQsIGthbF9pbnQxNiAqcG93ZXJfdmFsdWUsa2FsX3VpbnQ4IG52cmFtX3dyaXRlKTsKK3ZvaWQgbDRjX3NldF9leGNsdXNpdmVfbWF4X3R4X3Bvd2VyX2NuZl9oZGxyKG1zZ190eXBlIG1zZ19pZCwgbG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZ2V0X2V4Y2x1c2l2ZV9tYXhfdHhfcG93ZXJfcmVxKGthbF91aW50OCBzcmNfaWQpOwordm9pZCBsNGNfZ2V0X2V4Y2x1c2l2ZV9tYXhfdHhfcG93ZXJfY25mX2hkbHIobXNnX3R5cGUgbXNnX2lkLCBsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIpOworI2VuZGlmCisKKworI2VuZGlmIC8qIF9MNENfRU1fSCAqLyAKKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX2VxX2NtZC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX2VxX2NtZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZmM4ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfZXFfY21kLmgKQEAgLTAsMCArMSw4OTQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKGthbF91aW50OCBzcmNfaWQsIEMpIDIwMDEKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogbDRjX2VxX2NtZC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1UNjIwOAorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBpcyBpbnRlbmRzIGZvciDvv71LLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogICAgICAgICAgICAgSElTVE9SWQorICogQmVsb3cgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVXBwZXIgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfTDRDX0VRX0NNRF9ICisjZGVmaW5lIF9MNENfRVFfQ01EX0gKKworI2luY2x1ZGUgIm1lZF9zdHJ1Y3QuaCIKKworI2luY2x1ZGUgImw0YzJ1ZW1fc3RydWN0LmgiCisjaW5jbHVkZSAibnZyYW1fZW51bXMuaCIKKy8vI2luY2x1ZGUgImV2ZW50X3NoZWQuaCIKKyNpbmNsdWRlICJkZXZpY2UuaCIKKyNpbmNsdWRlICJsNGNfYXV4X3N0cnVjdC5oIgorI2luY2x1ZGUgImRjbC5oIgorI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAicHNfcHVibGljX3N0cnVjdC5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19lbnVtLmgiCisKKyNpbmNsdWRlICJrYWxfcHVibGljX2FwaS5oIgorI2lmZGVmIF9fTFRFX1JBVF9fCisjaW5jbHVkZSAibDRjX2VsMV9zdHJ1Y3QuaCIKKyNlbmRpZgorCisjaWZkZWYgX19UQzAxX18KK3R5cGVkZWYgZW51bSAKK3sKKyAgICBGQUNURVNUX0xDRF9JTklUSUFMID0gMCwKKwlGQUNURVNUX0xDRF9DT05UUkFTVCwKKyAgICBGQUNURVNUX0xDRF9USUxULAorICAgIEZBQ1RFU1RfTENEX0NPTE9SLAorICAgIEZBQ1RFU1RfTENEX0xFRF9PTiwKKyAgICBGQUNURVNUX0xDRF9MRURfT0ZGLAorICAgIEZBQ1RFU1RfTENEX1JFRCA9IDExLAorICAgIEZBQ1RFU1RfTENEX0dSRUVOID0gMTIsCisgICAgRkFDVEVTVF9MQ0RfQkxVRSA9IDEzLAorICAgIE5VTV9PRl9GQUNURVNUX0xDRAorfSBsY2RfdGVzdF9tb2RlX2VudW07CisjZW5kaWYKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9ncGlvX2RldGVjdF9yZXNfcmVxKGthbF91aW50OCBleHRfZ3Bpb19kZXZpY2UpOworCisvKiBhdWRpbyByZWxhdGVkICovCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2F1ZGlvX3BsYXlfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBzb3VuZF9pZCwga2FsX3VpbnQ4IHN0eWxlLCBrYWxfdWludDE2IGlkZW50aWZpZXIpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2Z1bGxfcGFyYV9hdWRpb19wbGF5X3JlcShrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNvdW5kX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHN0eWxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgaWRlbnRpZmllciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdm9sdW1lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBvdXRfcGF0aCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfYXVkaW9fcGxheV9ieV9uYW1lX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3djaGFyICpmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzdHlsZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBpZGVudGlmaWVyKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9hdWRpb19zdG9wX2J5X25hbWVfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF93Y2hhciAqZmlsZV9uYW1lKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9hdWRpb19zdG9wX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggc291bmRfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2F1ZGlvX3BsYXlfYnlfc3RyaW5nX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICptZWxvZHksCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MzIgbGVuLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcGxheV9zdHlsZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyIHN0YXJ0X29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQzMiBlbmRfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdm9sdW1lLAorICAgIAkgICAgICAgICAgICBrYWxfdWludDggb3V0cHV0X3BhdGgsCisgICAgCSAgICAgICAgICAgIGthbF91aW50OCBibG9ja2luZyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfYXVkaW9fc3RvcF9ieV9zdHJpbmdfcmVxKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2RlbW9fZXh0X21pZGlfcmluZ19yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqaW1lbG9keSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBsZW4sCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwbGF5X3N0eWxlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGlkZW50aWZpZXIpOworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9mc19yZWFkX3JlcSh2b2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX2VxX2ZzX2FwcF9uZXh0KHZvaWQpOworZXh0ZXJuIHZvaWQgbDRjX2VxX2ZzX2Vmc2xfbmV4dCh2b2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfZXhlX3ZvbHVtZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHZvbHVtZV90eXBlLCBrYWxfdWludDggdm9sdW1lX2xldmVsKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9zZXRfYXVkaW9fcHJvZmlsZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwgYXVkaW9fcHJvZmlsZV9zdHJ1Y3QgKmF1ZGlvX3Byb2YpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX3NldF9hdWRpb19wYXJhbV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwgYXVkaW9fcGFyYW1fc3RydWN0ICphdWRpb19wYXJhKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9nZXRfYXVkaW9fcHJvZmlsZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG1vZGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2dldF9hdWRpb19wYXJhbV9yZXEoa2FsX3VpbnQ4IHNyY19pZCk7CisKKyNpZiBkZWZpbmVkKF9fQU1SV0JfTElOS19TVVBQT1JUX18pCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2dldF9hdWRpb193Yl9wYXJhbV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG9wdGlvbik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfc2V0X2F1ZGlvX3diX3BhcmFtX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggb3B0aW9uLCB2b2lkICpuZXdfcGFyYW0pOworI2VuZGlmCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2dldF92b2x1bWVfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCB2b2x1bWVfdHlwZSk7CisKK2V4dGVybiB2b2lkIGw0Y19lcV9sY2Rfc2V0X2NvbnRyYXN0X3JlcShrYWxfdWludDggbGNkX3R5cGUsIGthbF91aW50OCBsY2RfY29udHJhc3QpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2V4ZV9tdXRlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggYXVkaW9fZGV2aWNlLCBrYWxfYm9vbCBtdXRlX29ub2ZmKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9nZXRfbXV0ZV9tb2RlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggYXVkaW9fZGV2aWNlLCBrYWxfYm9vbCAqbXV0ZV9vbm9mZik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfc2V0X3NpbGVudF9tb2RlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfYm9vbCBtb2RlKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfZ2V0X3NpbGVudF9tb2RlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfYm9vbCAqbW9kZSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX3NldF9zcGVlY2hfbW9kZV9yZXEoa2FsX2Jvb2wgb25fb2ZmKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9zZXRfYXVkaW9fbW9kZV9yZXEoa2FsX3VpbnQ4IG1vZGUpOyAgLyogYXVkaW9fbW9kZV9lbnVtICovCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfZ2V0X2FkY19hbGxfY2hhbm5lbF9zdGFydF9yZXEodm9pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfZ2V0X2FkY19hbGxfY2hhbm5lbF9zdG9wX3JlcSh2b2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9zZXRfdmlicmF0b3JfbW9kZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG1vZGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2V4ZV9ncGlvX2xldmVsX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggZ3Bpb19kZXZfdHlwZSwga2FsX3VpbnQ4IGdwaW9fZGV2X2xldmVsKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9nZXRfZ3Bpb19sZXZlbF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGdwaW9fZGV2X3R5cGUsIGthbF91aW50OCAqZ3Bpb19kZXZfbGV2ZWwpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX3NldF9rZXlwYWRfaW5wdXRfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCAqa2V5Y29kZSwga2FsX3VpbnQ4IHRpbWUsIGthbF91aW50OCBwYXVzZSk7CisKKy8qIHJ0YyByZWxhdGVkLCBjbG9jaywgYWxhcm0gKi8KKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9leGVfcnRjX3RpbWVfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcnRjX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzZXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgcnRjX2FsYXJtX2luZm9fc3RydWN0IGluZm8pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX3NldF9ydGNfdGltZV9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBydGNfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNldF90eXBlLAorICAgICAgICAgICAgICAgICAgICBydGNfYWxhcm1faW5mb19zdHJ1Y3QgaW5mbyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfZ2V0X3J0Y190aW1lX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJ0Y190eXBlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKm51bSwKKyAgICAgICAgICAgICAgICAgICAgcnRjX2FsYXJtX2luZm9fc3RydWN0ICpydGN0aW1lKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9leGVfcnRjX2RlbGV0ZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHJ0Y190eXBlLCBrYWxfdWludDggcnRjX2luZGV4KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9ydGNfZGVsZXRlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggcnRjX3R5cGUsIGthbF91aW50OCBydGNfaW5kZXgpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX3NldF9kYXRlX3RpbWVfZm9ybWF0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfYm9vbCBpc19kYXRlX3NldCwga2FsX3VpbnQ4IG1vZGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2dldF9kYXRlX3RpbWVfZm9ybWF0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfYm9vbCBpc19kYXRlX3NldCwga2FsX3VpbnQ4ICptb2RlKTsKKworLyogbWlzYyAqLworCisvL2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfc2V0X2xhbmd1YWdlX3JlcSAoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICpsYW5nX2NvZGUpOworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9zZXRfbGFuZ3VhZ2VfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBsYW5nX2NvZGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2dldF9sYW5ndWFnZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICpsYW5nX2NvZGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX3NldF9ncmVldGluZ190ZXh0X3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX2Jvb2wgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGRjcywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHRleHRbNjJdLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbGVuZ3RoKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9nZXRfYmF0dGVyeV9jYXBhY2l0eV9zdGF0dXNfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmJhdHRlcnlfc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyICpiYXR0ZXJ5X2NhcCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfZ2V0X2VxdWlwX2lkX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggZXF1aXBfdHlwZSwga2FsX3VpbnQ4ICplcXVpcF9pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfcmVhZF9udm1fdWFydF9wb3J0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDE2IGFjdGlvbik7IC8vTUFVSV8wMjMwNDk0NiwgbXRrMDIyODUKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9sb2FkX2RlZmF1bHRfY29uZmlnX3JlcShrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9sb2FkX3Bvd2VyX29uX2RhdGFfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF9ib29sIHJlYWRfZmxhZywgbnZyYW1fbGlkX2VudW0gZmlsZV9pZHgpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX3VhcnRfdHJhbnNmZXJfcmVxKGthbF91aW50OCBwb3J0KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV91YXJ0X3JlbGVhc2VfcmVxKGthbF91aW50OCBwb3J0KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9zZXRfdWFydF9wb3J0X3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGZ1bmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwc19wb3J0LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdHN0X3BvcnRfcHMsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MzIgcHNfYmF1ZF9yYXRlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyIHRzdF9iYXVkX3JhdGVfcHMsCisgICAgICAgICAgICAgICAgICAgIGthbF9ib29sIEhpZ2hfU3BlZWRfU0lNX0VuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzd2RiZywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHVhcnRfcG93ZXJfc2V0dGluZywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGN0aV91YXJ0X3BvcnQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MzIgY3RpX2JhdWRfcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHRzdF9wb3J0X2wxLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyIHRzdF9iYXVkX3JhdGVfbDEsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0c3Rfb3V0cHV0X21vZGUsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB1c2JfbG9nZ2luZ19tb2RlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IHRzdF9wb3J0X2RzcCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQzMiB0c3RfYmF1ZF9yYXRlX2RzcCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfZ2V0X3VhcnRfcG9ydF9yZXEoa2FsX3VpbnQ4IHNyY19pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfcmVhZF9udnJhbV9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgZmlsZV9pZHgsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgcGFyYSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiByZWNfYW1vdW50KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV93cml0ZV9udnJhbV9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgZmlsZV9pZHgsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgcGFyYSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGxlbmd0aCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfcmVzZXRfbnZyYW1fcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcmVzZXRfY2F0ZWdvcnksCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgbGlkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IHJlY19pbmRleCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiByZWNfYW1vdW50KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9wb3dlcl9vZmZfcmVxKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2NhbmNlbF9sb2NrX3Bvd2Vyb25fcmVxKGthbF91aW50OCBzcmNfaWQsa2FsX3VpbnQ4IHR5cGUpOworCitleHRlcm4gZXZlbnRpZCBsNGNfc2V0X3RpbWVyX3JlcSh2b2lkICp0aW1lb3V0X2hkbHIsIGthbF91aW50MTYgdGltZSwgdm9pZCAqcGFyYW0pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2V4ZV9mdW5jdGlvbmFsaXR5X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggZnVuLCBrYWxfdWludDggcnN0KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lbV9rZXlwYWRfZXZlbnRfb3V0cHV0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDgga2V5cGFkX3N0YXR1cywga2FsX3VpbnQ4IGtleXBhZF9jb2RlLGthbF91aW50MzIgdGltZV9zdGFtcCk7CisKK2V4dGVybiB2b2lkIGw0Y19lcV9rZXlwYWRfZXZlbnRfb3V0cHV0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDgga2V5cGFkX3N0YXR1cywga2FsX3VpbnQ4IGtleXBhZF9jb2RlKTsKKworZXh0ZXJuIHZvaWQgbDRjX2VxX3Njcm50Y2hfZXZlbnRfb3V0cHV0X3JlcShrYWxfdWludDggYWN0aW9uLCBrYWxfdWludDE2IHhfY29vcmRzLCBrYWxfdWludDE2IHlfY29vcmRzKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lbV9sY21fdGVzdF9pbmQoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGNvbG9yX3R5cGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VtX3NldF9tbWlfZGVmYXVsdF9wcm9mX2luZCgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG9wLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggY2F0ZWdvcnksCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwYXJhbTEsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwYXJhbTIsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwYXJhbTMsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcGFyYW00KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lbV9rZXlwYWRfZXZlbnRfYWN0X2luZChrYWxfdWludDggc3JjX2lkLCBrYWxfYm9vbCBvbl9vZmYpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VtX2xjbV9zbGVlcF9tb2RlX3JlcV9pbmQoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG9uX29mZik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfcGF0dGVybl9wbGF5X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggcGF0dGVybiwga2FsX3VpbnQ4IGFjdGlvbik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfc2V0X2h3X2xldmVsX3JlcShrYWxfdWludDggc3JjX2lkLCBsNGNfaHdfcHJvZmlsZV9zdHJ1Y3QgKmh3X3Byb2ZpbGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2dldF9od19sZXZlbF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwgbDRjX2h3X3Byb2ZpbGVfc3RydWN0ICpod19wcm9maWxlKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9yZWFkX21zX3NuX3JlcShrYWxfdWludDggc3JjX2lkLCBudnJhbV9saWRfZW51bSBmaWxlX2lkeCwga2FsX3VpbnQ4IHBhcmEpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX3JlYWRfbXNfc3ZfcmVxKGthbF91aW50OCBzcmNfaWQsIG52cmFtX2xpZF9lbnVtIGZpbGVfaWR4LCBrYWxfdWludDggcGFyYSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfcmVhZF9hdXRvdGVzdF9yZXBvcnRfcmVxKGthbF91aW50OCBzcmNfaWQsIG52cmFtX2xpZF9lbnVtIGZpbGVfaWR4LCBrYWxfdWludDggcGFyYSk7CisKKyNpZmRlZiBfX0lSREFfU1VQUE9SVF9fCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2lyZGFfb3Blbl9yZXEoa2FsX3VpbnQxNiB3YWl0X2R1cmF0aW9uKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9pcmRhX2Nsb3NlX3JlcSh2b2lkKTsKKyNlbmRpZiAvKiBfX0lSREFfU1VQUE9SVF9fICovIAorCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX3NldF9tc19zbl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICpkYXRhLCBrYWxfdWludDggbGVuZ3RoKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9zZXRfbXNfaW1laV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICpkYXRhLCBrYWxfdWludDggbGVuZ3RoKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9zZXRfbXNfc3ZfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCAqZGF0YSwga2FsX3VpbnQ4IGxlbmd0aCk7CisKKyNpZiAwCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisjZW5kaWYKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXFfbG9ja19udnJhbV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG1vZGUpOyAgICAgICAgLyogbnZyYW1fbG9ja19zdGF0ZV9lbnVtICovCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZW1fc2xlZXBfbW9kZV9yZXEoa2FsX2Jvb2wgb25fb2ZmKTsKKworZXh0ZXJuIHZvaWQgbDRjX21tc19mb2xkZXJfc3RhdHVzX291dHB1dF9yZXEoCisgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJlc3VsdCwKKyAgICAgICAgICAgICAgICBrYWxfdWludDMyIG51bU9mTXNnLAorICAgICAgICAgICAgICAgIGthbF91aW50MzIgbnVtT2ZVbnJlYWRNc2csCisgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICptbXNIb21lRGlyZWN0b3J5LAorICAgICAgICAgICAgICAgIGthbF91aW50OCAqaW5mb0ZpbGVQYXRoKTsKK2V4dGVybiB2b2lkIGw0Y19tbXNfdXBsb2FkX21zZ19vdXRwdXRfcmVxKGthbF91aW50OCByZXN1bHQsIGthbF91aW50MzIgbXNnSWQsIGthbF91aW50OCBzdG9yYWdlKTsKK2V4dGVybiB2b2lkIGw0Y19tbXNfZGVsZXRlX21zZ19vdXRwdXRfcmVxKGthbF91aW50OCByZXN1bHQpOworZXh0ZXJuIHZvaWQgbDRjX21tc19yZWFkX21zZ19wYXRoX3Jlc19yZXEoa2FsX3VpbnQ4IHJlc3VsdCwga2FsX3VpbnQzMiBtc2dJZCxrYWxfdWludDggKnBhdGgpOworCitleHRlcm4gdm9pZCBsNGNfZXFfc2NyZWVuX3RvdWNoX3Jlc19yZXEoa2FsX2ludDggcmVzdWx0KTsKK2V4dGVybiB2b2lkIGw0Y19lcV9zY3Jub3JpZW50X3Jlc19yZXEoa2FsX2ludDggcmVzdWx0LCBrYWxfdWludDggbW9kZSk7CitleHRlcm4gdm9pZCBsNGNfZXFfc2NybnNpemVfcXVlcnlfcmVzX3JlcShrYWxfaW50OCByZXN1bHQsIGthbF91aW50MTYgbWF4X3gsIGthbF91aW50MTYgbWF4X3kpOworZXh0ZXJuIHZvaWQgbDRjX2VxX3NjcmVlbl9zaG90X3Jlc19yZXEoa2FsX2ludDggcmVzdWx0LCBrYWxfdWludDggb3AsIGthbF93Y2hhciAqZmlsZV9wYXRoKTsKKworZXh0ZXJuIHZvaWQgbDRjX2VxX2F0X2FsYXJtX2dlbmVyYWxfcmVzX3JlcShrYWxfYm9vbCByZXN1bHQpOworZXh0ZXJuIHZvaWQgbDRjX2VxX2F0X2FsYXJtX3F1ZXJ5X3Jlc19yZXEoCisgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHRvdGFsQWxhcm0sCisgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGFjdGl2ZUFsYXJtLAorICAgICAgICAgICAgICAgIG1taV9hdF9hbGFybV9pbmZvX3N0cnVjdCAqYWxhcm1MaXN0KTsKKworZXh0ZXJuIHZvaWQgbDRjX2VxX3F1ZXJ5X3ZpYnJhdG9yX21vZGVfcmVzX3JlcShrYWxfYm9vbCBtb2RlKTsKK2V4dGVybiB2b2lkIGw0Y19lcV9xdWVyeV9zaWxlbnRfbW9kZV9yZXNfcmVxKGthbF9ib29sIG1vZGUpOworZXh0ZXJuIHZvaWQgbDRjX2VxX3F1ZXJ5X211dGVfbW9kZV9yZXNfcmVxKGthbF9ib29sIG1vZGUpOworZXh0ZXJuIHZvaWQgbDRjX2VxX3F1ZXJ5X2dyZWV0aW5nX3RleHRfcmVzX3JlcShrYWxfYm9vbCBtb2RlLCBrYWxfdWludDggZGNzLCBrYWxfdWludDggKnRleHQsIGthbF91aW50OCBsZW5ndGgpOworZXh0ZXJuIHZvaWQgbDRjX2VxX3F1ZXJ5X2xhbmd1YWdlX3Jlc19yZXEoa2FsX3VpbnQ4IGxhbmdfY29kZSk7CitleHRlcm4gdm9pZCBsNGNfZXFfcXVlcnlfZGF0ZXRpbWVfZm9ybWF0X3Jlc19yZXEoa2FsX2Jvb2wgaXNfZGF0ZSwga2FsX3VpbnQ4IG1vZGUpOworZXh0ZXJuIHZvaWQgbDRjX21taV9qYXZhX2xvY2FsX2luc3RhbGxfcmVzX3JlcShrYWxfdWludDMyIGVycm9yX2NvZGUpOworCitleHRlcm4gdm9pZCBsNGNfZXFfcG1pY19jb25maWdfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCByZXF1ZXN0X3R5cGUsIHBtaWNfY29uZmlnX3BhcmFtX3N0cnVjdCByZXF1ZXN0KTsKK2V4dGVybiB2b2lkIGw0Y19lcV91c2JkZXRlY3RfcmVzX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggYWN0aW9uKTsKK2V4dGVybiB2b2lkIGw0Y19lcV9iYXR0ZXJ5X3N0YXR1c19yZXNfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBzdGF0dXNfdHlwZSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2J0X3NldF92cl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX2Jvb2wgb25fb2ZmKTsKK2V4dGVybiB2b2lkIGw0Y19lcV92Y2FyZF9yZXNfcmVxKGthbF91aW50OCBtb2RlLCBrYWxfYm9vbCByZXN1bHQsIGthbF91aW50OCAqZmlsZV9wYXRoKTsKK2V4dGVybiB2b2lkIGw0Y19lcV92Y2FsZW5kYXJfcmVzX3JlcSgKKyAgICAgICAgICAgICAgICBrYWxfdWludDggbW9kZSwKKyAgICAgICAgICAgICAgICBrYWxfYm9vbCByZXN1bHQsCisgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNhdXNlLAorICAgICAgICAgICAgICAgIGthbF91aW50OCB0b3RhbCwKKyAgICAgICAgICAgICAgICBrYWxfdWludDggdXNlZCwKKyAgICAgICAgICAgICAgICBrYWxfdWludDggaW5kZXgsCisgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpmaWxlX3BhdGgpOworZXh0ZXJuIHZvaWQgbDRjX2VxX3N0cl9yZXNfcmVxKGthbF91aW50MTYgbGVuZ3RoLCBrYWxfdWludDggKmRhdGFfc3RyaW5nKTsKK2V4dGVybiB2b2lkIGw0Y19lcV9kY21fZW5hYmxlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfYm9vbCBlbmFibGUpOworZXh0ZXJuIHZvaWQgbDRjX2VxX3JmX3Rlc3RfZ3NtX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggcmVxdWVzdF90eXBlLCByZl90ZXN0X2dzbV9wYXJhbV9zdHJ1Y3QgcmVxdWVzdCk7CitleHRlcm4gdm9pZCBsNGNfZXFfZm1fcmFkaW9fY29uZmlnX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggcmVxdWVzdF90eXBlLCBmbV9yYWRpb19jb25maWdfcGFyYW1fc3RydWN0IHJlcXVlc3QpOworI2lmIGRlZmluZWQoX19XSUZJX1NVUFBPUlRfXykKK2V4dGVybiB2b2lkIGw0Y19lcV9yZl90ZXN0X3dpZmlfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCByZXF1ZXN0X3R5cGUsIHJmX3Rlc3Rfd2lmaV9wYXJhbV9zdHJ1Y3QgcmVxdWVzdCk7CisjZW5kaWYKK2V4dGVybiB2b2lkIGw0Y19tbWlfZXFfY2FsbF9zdGF0dXNfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBjYWxsX3N0YXR1cyk7CitleHRlcm4gdm9pZCBsNGNfZXFfcXVlcnlfaGFuZF9mcmVlX21vZGVfcmVzX3JlcShrYWxfYm9vbCBpc19oYW5kX2ZyZWUpOworZXh0ZXJuIHZvaWQgbDRjX2VxX3NldF9hdnJfcmVzX3JlcShrYWxfdWludDggcmVzdWx0LCBrYWxfdWludDggbW9kZSk7CitleHRlcm4gdm9pZCBsNGNfZXFfc2V0X2NhbV9yZXNfcmVxKGthbF91aW50OCByZXN1bHQsIGthbF91aW50OCBtb2RlKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9zZXRfYmFja2xpZ2h0X3JlcShrYWxfdWludDggc3RhdGUsIGthbF91aW50MTYgZHVyYXRpb24pOworZXh0ZXJuIHZvaWQgbDRjX2VxX2F0X2Nia2x0X3F1ZXJ5X3Jlc19yZXEoa2FsX3VpbnQ4IGxldmVsLCBrYWxfdWludDE2IGR1cmF0aW9uKTsKKworZXh0ZXJuIHZvaWQgbDRjX2VxX3JhbV91c2FnZV9yZXNfcmVxKGthbF9pbnQ4IHJlc3VsdCwga2FsX3VpbnQzMiB1c2VkKTsKK2V4dGVybiB2b2lkIGw0Y19lcV9sYXVuY2hfYXBwX3Jlc19yZXEoa2FsX2ludDggcmVzdWx0KTsKK2V4dGVybiB2b2lkIGw0Y19lcV9hcHBfaW5mb19vdXRwdXRfcmVzX3JlcShrYWxfdWludDggdHlwZSwga2FsX3VpbnQxNiAqbG9nKTsKK2V4dGVybiB2b2lkIGw0Y19lbV9nZXRfY29uZnRlc3RfcGFyYV9yZXEoa2FsX3VpbnQ4IHNyY19pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2VtX3NldF9jb25mdGVzdF9wYXJhX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggY29uZl90ZXN0X21vZGUsIGthbF91aW50MzIgdGVzdF9wcm9maWxlKTsKK2V4dGVybiB2b2lkIGw0Y19lcV9yaW5ndG9uZV9wbGF5X3Jlc19yZXEoa2FsX2Jvb2wgcmVzdWx0LCBrYWxfdWludDggY2F1c2UpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxXzNnX3JmX3Rlc3RfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBmdW5jLCBrYWxfdWludDggYmFuZCwga2FsX3VpbnQxNiBmcmVxLCBrYWxfaW50OCBwb3dlcik7CisjaWYgZGVmaW5lZChfX05GQ19TVVBQT1JUX18pCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX25mY190ZXN0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggb3B0aW9uLCB2b2lkICpkYXRhX3B0cik7CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19BVF9CQUNLVVBfREFUQV9TVVBQT1JUX18pCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VtX3NldF9zZHNfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBvcCk7CisjZW5kaWYKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9zZXRfYm9vdF9tb2RlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggbW9kZSk7CisKK2V4dGVybiB2b2lkIGw0Y19lcV9xdWVyeV9jYWxfZGF0YV9kbF9zdGF0dXNfcmVxKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX21lZF9pbl9wcm9jX2NhbGxfcmVxKGw0Y19zb3VyY2VfaWRfZW51bSBzcmNfaWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGNtZF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY21kX2luZm8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IHNpemVfb2ZfaW5mbyk7CisKK2V4dGVybiB2b2lkIGw0Y19tZWRfaW5fZXBvZl9yZXEodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfcG93ZXJfb2ZmX25vdGlmeV9vdGhlcnModm9pZCk7CisKKyNpZmRlZiBfX0xURV9SQVRfXworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV9yeF9yc3NpX3ZlcmlmeV9yZXEoa2FsX3VpbnQxNiBiYW5kLCBrYWxfdWludDMyIGRsX2VhcmZjbik7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX3JmX3Rlc3RfbHRlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggcmVxdWVzdF90eXBlLCBFTDFfRU1fVFNUQ21kX0ZvcmNlVHhQd3JfVCAqcmVxdWVzdCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjZWwxX3NlbmRfYjNfaW5mb19yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHR5cGUsIGthbF91aW50OCBpbmRleCwga2FsX3VpbnQxNiBhcmZjbiwga2FsX2ludDE2IHJzc2kpOworCisjZW5kaWYKKworZXh0ZXJuIHZvaWQgbDRjX3NldF9keW5hbWljX3NpbV9zd2l0Y2goKTsKK2V4dGVybiB2b2lkIGw0Y19zZXRfcmVjb25maWdfcmVxKHByb3RvY29sX2lkX2VudW0gcHNfc2ltX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lcV90eHJ4X2FjdGl2ZV90aW1lX3JlcShsNGNfc291cmNlX2lkX2VudW0gc3JjX2lkKTsgCitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2Mya19yZl90ZXN0X3JlcShsNGNfc291cmNlX2lkX2VudW0gc3JjX2lkLGthbF91aW50OCBtb2RlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBiYW5kLCBrYWxfdWludDggcG93ZXJMZXZlbCwga2FsX3VpbnQxNiBjaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJlZHVjdGlvbkxldmVsX0FudDAsIGthbF91aW50OCByZWR1Y3Rpb25MZXZlbF9BbnQxKTsKK2V4dGVybiB2b2lkIGw0Y19zZW5kX3ZvbHRlX3JlY29uZmlndXJlX3JlcShrYWxfdWludDggdHlwZSk7CitleHRlcm4gdm9pZCBsNGNfc2VuZF9pbXNfcmVjb25maWd1cmVfcmVxKG1vZHVsZV90eXBlIGRlc3RfbW9kLCBrYWxfdWludDggc2FwLCBrYWxfdWludDggdHlwZSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2hzcGFfbGNlX3JlcG9ydF9wdWxsZGF0YV9yZXEoa2FsX3VpbnQ4IHNyY2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfaHNwYV9sY2VfcmVwb3J0X3JlcShrYWxfdWludDggc3JjaWQsIGthbF91aW50OCBtb2RlLCBrYWxfdWludDMyIHJwdF9pbnRlcnZhbCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2VxX2FwaW5mb191cGRhdGVfcmVxKGthbF91aW50OCByZWNlaXZlcl9zdGF0dXMsIGthbF91aW50OCBzY3JlZW5fb3JpZW50YXRpb24sIGthbF91aW50OCBwc2Vuc29yX2luZm8sIGthbF91aW50OCB2b2ljZV9jYWxsX3N0YXR1cyk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2xjZV9yZXBvcnRfcHVsbGRhdGFfcmVxKGthbF91aW50OCBzcmNpZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2xjZV9yZXBvcnRfcmVxKGthbF91aW50OCBzcmNpZCwga2FsX3VpbnQ4IG1vZGUsIGthbF91aW50MzIgcnB0X2ludGVydmFsKTsKKyNlbmRpZiAvKiBfTDRDX0VRX0NNRF9IICovCisKK2V4dGVybiB2b2lkIGw0Y19lcV9ncGlvX2RldGVjdF9pbmQoa2FsX3VpbnQ4IGdwaW9fZGV2aWNlLCBrYWxfYm9vbCBvbl9vZmYpOworZXh0ZXJuIHZvaWQgbDRjX2VxX3Bvd2VyX29uX2luZCh2b2lkKTsKKyNpZmRlZiBfX1RDMDFfXworZXh0ZXJuIGthbF9ib29sIGw0Y19wb3J0bG9ja3VubG9ja19udnJhbV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwgcG9ydF9sb2NrX2VudW0gbG9ja19tb2RlLCBwb3J0X2xvY2tfbW9kZV9lbnVtIGNtZF9tb2RlKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfcG9ydHVubG9ja19yZXEoa2FsX3VpbnQ4IHNyY19pZCxrYWxfdWludDggKnN0cik7CisjZW5kaWYKKworZXh0ZXJuIGw0Y19hdF9jbWRfcHJvY2Vzc190eXBlX2VudW0gbDRjX2VxX3NldF9rYWxfVVRDKGthbF91aW50OCBzcmNfaWQsIGw0Y19nZW5lcmFsX21vZGVtX2NvbmZpZ3VyZV9zdHJ1Y3QgKmNtZF9wYXJhbV9wdHIpOworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfZXFfbXNnLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfZXFfbXNnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRjZWMyOQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y19lcV9tc2cuaApAQCAtMCwwICsxLDE5NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogbDRjX2VxX21zZy5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1UNjIwOAorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBpcyBpbnRlbmRzIGZvciDvv71LLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqICBUaGlzIHByb2R1Y3QgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nIGEgcHJvdG9jb2wgc3RhY2sKKyogIGRldmVsb3BlZCBieSBTYXNrZW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgTGltaXRlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9MNENfRVFfTVNHX0gKKyNkZWZpbmUgX0w0Q19FUV9NU0dfSAorCisjaW5jbHVkZSAia2V5cGFkX3N3LmgiCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfc3RydWN0LmgiICAgCisjaW5jbHVkZSAidWVtX2F0X2NtZC5oIiAKKworZXh0ZXJuIHZvaWQgbDRjdWVtX3Bvd2VyX29uX2luZChrYWxfdWludDggcG93ZXJvbl9tb2RlLCBrYWxfdWludDggYmF0dGVyeV9sZXZlbCk7CisKK2V4dGVybiB2b2lkIGw0Y3VlbV9hdWRpb19wbGF5X2ZpbmlzaF9pbmQoa2FsX3VpbnQ4IHJlc3VsdCwga2FsX3VpbnQxNiBpZGVudGlmaWVyKTsKKworZXh0ZXJuIHZvaWQgbDRjdWVtX2dwaW9fZGV0ZWN0X2luZChrYWxfdWludDggZ3Bpb19kZXZpY2UsIGthbF9ib29sIG9uX29mZik7CisKK2V4dGVybiB2b2lkIGw0Y3VlbV9hbGFybV9kZXRlY3RfaW5kKHJ0Y19mb3JtYXRfc3RydWN0ICpydGNfdGltZSk7CisKK2V4dGVybiB2b2lkIGw0Y3VlbV9ydGNfcGVyaW9kX2luZChrYWxfdWludDggcnRjX3R5cGUsIHJ0Y19mb3JtYXRfc3RydWN0ICpydGNfdGltZSk7CisKK2V4dGVybiB2b2lkIGw0Y3VlbV9rZXlwYWRfZGV0ZWN0X2luZChrYWxfYm9vbCgqZHJ2X2dldF9rZXlfZnVuYykgKGtiZF9kYXRhICopKTsKKworZXh0ZXJuIHZvaWQgbDRjdWVtX2JhdHRlcnlfc3RhdHVzX2luZChrYWxfdWludDggYmF0dGVyeV9zdGF0dXMsIGthbF91aW50OCBiYXR0ZXJ5X3ZvbHRhZ2UpOworCitleHRlcm4gdm9pZCBsNGN1ZW1fZ2V0X2FkY19hbGxfY2hhbm5lbF9pbmQoCisgICAgICAgICAgICAgICAga2FsX2ludDMyIHZiYXQsCisgICAgICAgICAgICAgICAga2FsX2ludDMyIGJhdF90ZW1wLAorICAgICAgICAgICAgICAgIGthbF9pbnQzMiB2YXV4LAorICAgICAgICAgICAgICAgIGthbF9pbnQzMiBjaGFyZ2VfY3VycmVudCwKKyAgICAgICAgICAgICAgICBrYWxfaW50MzIgdmNoYXJnZXIpOworCitleHRlcm4gdm9pZCBsNGN1ZW1fc3RhcnR1cF9jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworCitleHRlcm4gdm9pZCBsNGN1ZW1fYXVkaW9fcGxheV9ieV9uYW1lX2NuZl9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CisKK2V4dGVybiB2b2lkIGw0Y3VlbV9hdWRpb19zdG9wX2J5X25hbWVfY25mX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKKworZXh0ZXJuIHZvaWQgbDRjdWVtX2F1ZGlvX3BsYXlfYnlfc3RyaW5nX2NuZl9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CisKK2V4dGVybiB2b2lkIGw0Y3VlbV9hdWRpb19zdG9wX2J5X3N0cmluZ19jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworCitleHRlcm4gdm9pZCBsNGN1ZW1fZ2V0X2F1ZGlvX3Byb2ZpbGVfY25mX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKKworZXh0ZXJuIHZvaWQgbDRjdWVtX2dldF92b2x1bWVfY25mX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKKworZXh0ZXJuIHZvaWQgbDRjdWVtX2dldF9nYWluX2NuZl9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CisKK2V4dGVybiB2b2lkIGw0Y3VlbV9nZXRfYXVkaW9fcGFyYW1fY25mX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKKworZXh0ZXJuIHZvaWQgbDRjdWVtX2dldF9hdWRpb193Yl9wYXJhbV9jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworCitleHRlcm4gdm9pZCBsNGN1ZW1fc2V0X2F1ZGlvX3diX3BhcmFtX2NuZl9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CisKK2V4dGVybiB2b2lkIGw0Y3VlbV9zZXRfYXVkaW9fcHJvZmlsZV9jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworCitleHRlcm4gdm9pZCBsNGN1ZW1fc2V0X2F1ZGlvX3BhcmFtX2NuZl9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CisKK2V4dGVybiB2b2lkIGw0Y3VlbV9zZXRfaHdfbGV2ZWxfY25mX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKKworZXh0ZXJuIHZvaWQgbDRjX2tleXBhZF9pbnB1dF9wcmVzc19oZGxyKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGNfa2V5cGFkX2lucHV0X3BhdXNlX2hkbHIodm9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19rZXlwYWRfaW5wdXRfbG9uZ19wcmVzc19oZGxyKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGNfa2V5cGFkX2lucHV0X3JlcGVhdF9oZGxyKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGN1ZW1fdXNiZGV0ZWN0X2luZChrYWxfdWludDggYWN0aW9uKTsKKworZXh0ZXJuIHZvaWQgbDRjdWVtX3VzYl9wb3dlcl9vbl9pbmQodm9pZCk7CisKK2V4dGVybiB2b2lkICBsNGNfZXFfZ2V0X2NhbGlicmF0aW9uX2ZsYWdfcnNwKGthbF91aW50OCBjYWxfZmxhZyk7CisKK2V4dGVybiB2b2lkICBsNGNfZXFfZ2V0X2NhbGlicmF0aW9uX2RhdGFfcnNwKGthbF91aW50OCBjYWxfZGF0YSk7CisKK2V4dGVybiB2b2lkIGw0Y3VlbV9hdF9lZl9wb3J0X3NldHRpbmdfcmVzdWx0X3Jyc3AobDRjdWVtX2F0X2VmX3BvcnRfbW9kZV9lbnVtIG1vZGUsIGthbF9ib29sIHJlc3VsdCk7CisKKyNkZWZpbmUgbDRjX2VxdWV1ZV9vbmVrZXlfdG9fa2JkYnVmZmVyKF9ldmVudCxfa2V5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcltsNGNfa2JkX2J1ZmZlci5rYmRfZGF0YV9idWZmZXJfd2luZGV4XS5LZXlldmVudCA9IF9ldmVudDsgICAgICAgICAgICAgICAgICAgIFwKKyAgIGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcltsNGNfa2JkX2J1ZmZlci5rYmRfZGF0YV9idWZmZXJfd2luZGV4XS5LZXlkYXRhWzBdID0gX2tleTsgICAgICAgICAgICAgICAgICAgIFwKKyAgIGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcl93aW5kZXgrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcl93aW5kZXggJj0gKGtiZF9idWZmZXJfc2l6ZS0xKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGlmKGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcl93aW5kZXg9PWw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcl9yaW5kZXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcl93aW5kZXgtLTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcl93aW5kZXggJj0gKGtiZF9idWZmZXJfc2l6ZS0xKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHdoaWxlKGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcltsNGNfa2JkX2J1ZmZlci5rYmRfZGF0YV9idWZmZXJfd2luZGV4XS5LZXlldmVudCAhPSBrYmRfb25la2V5X3ByZXNzKVwKKyAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcl93aW5kZXgtLTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcl93aW5kZXggJj0gKGtiZF9idWZmZXJfc2l6ZS0xKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworI2RlZmluZSBsNGNfZGVxdWV1ZV9vbmVrZXlfZnJvbV9rYmRidWZmZXIoX2V2ZW50LF9rZXkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBfZXZlbnQgPSBsNGNfa2JkX2J1ZmZlci5rYmRfZGF0YV9idWZmZXJbbDRjX2tiZF9idWZmZXIua2JkX2RhdGFfYnVmZmVyX3JpbmRleF0uS2V5ZXZlbnQ7XAorICAgX2tleSA9IGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcltsNGNfa2JkX2J1ZmZlci5rYmRfZGF0YV9idWZmZXJfcmluZGV4XS5LZXlkYXRhWzBdO1wKKyAgIGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlcl9yaW5kZXgrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBsNGNfa2JkX2J1ZmZlci5rYmRfZGF0YV9idWZmZXJfcmluZGV4ICY9IChrYmRfYnVmZmVyX3NpemUtMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisjZGVmaW5lIGw0Y19jbGVhcl9rYmRidWZmZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGthbF9tZW1fc2V0KGw0Y19rYmRfYnVmZmVyLmtiZF9kYXRhX2J1ZmZlciwgMHhmZiwgc2l6ZW9mKGtiZF9kYXRhKSoga2JkX2J1ZmZlcl9zaXplKTtcCisgICBsNGNfa2JkX2J1ZmZlci5rYmRfZGF0YV9idWZmZXJfd2luZGV4ID0gMCA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgbDRjX2tiZF9idWZmZXIua2JkX2RhdGFfYnVmZmVyX3JpbmRleCA9IDAgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworZXh0ZXJuIHZvaWQgbDRjdWVtX2xlYXZlX3ByZWNoYXJnZV9pbmQodm9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y3VlbV9wbWljX2NvbmZpZ19jbmYoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHJlcXVlc3RfdHlwZSwgcG1pY19jb25maWdfcGFyYW1fc3RydWN0IHJlcXVlc3QpOworCitleHRlcm4gdm9pZCBsNGN1ZW1fcmZfdGVzdF9nc21fY25mKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCByZXF1ZXN0X3R5cGUsIHJmX3Rlc3RfZ3NtX3BhcmFtX3N0cnVjdCByZXF1ZXN0KTsKKworZXh0ZXJuIHZvaWQgbDRjdWVtX2ZtX3JhZGlvX2NvbmZpZ19jbmYoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHJlcXVlc3RfdHlwZSwgZm1fcmFkaW9fY29uZmlnX3BhcmFtX3N0cnVjdCByZXF1ZXN0KTsKKworI2lmIGRlZmluZWQoX19XSUZJX1NVUFBPUlRfXykKK2V4dGVybiB2b2lkIGw0Y3VlbV9yZl90ZXN0X3dpZmlfY25mKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCByZXF1ZXN0X3R5cGUsIHJmX3Rlc3Rfd2lmaV9wYXJhbV9zdHJ1Y3QgcmVxdWVzdCk7CisjZW5kaWYKKworZXh0ZXJuIHZvaWQgbDRjX2wxX3F1ZXJ5X2NhbF9kYXRhX2RsX3N0YXR1c19jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworCisjaWZkZWYgX19MVEVfUkFUX18KK2V4dGVybiB2b2lkIGw0Y2VsMV9yeF9yc3NpX3ZlcmlmeV9pbmRfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworZXh0ZXJuIHZvaWQgbDRjX2VxX3JmX3Rlc3RfbHRlX2NuZl9oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CitleHRlcm4gdm9pZCBsNGNlbDFfYjNfaW5mb19jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworI2VuZGlmCisKKyNlbmRpZiAvKiBfTDRDX0VRX01TR19IICovIC8qIGw0Y19lcV9tc2cuaCAqLworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfZ3Byc19jbWQuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y19ncHJzX2NtZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMWZmYTcKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfZ3Byc19jbWQuaApAQCAtMCwwICsxLDI0NSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogbDRjX2dwcnNfY21kLmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgTVQ2MjA4CisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgVGhpcyBmaWxlIGlzIGludGVuZHMgZm9yIKFLLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogICAgICAgICAgICAgSElTVE9SWQorICogQmVsb3cgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVXBwZXIgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfTDRDX0dQUlNfQ01EX0gKKyNkZWZpbmUgX0w0Q19HUFJTX0NNRF9ICisKKyNpZmRlZiBfX01PRF9UQ01fXworCS8vI2luY2x1ZGUgImthbF9ub25fc3BlY2lmaWNfZ2VuZXJhbF90eXBlcy5oIgorCSNpbmNsdWRlICJsNGNfY29tbW9uX2VudW0uaCIKKwkvLyNpbmNsdWRlICJsNGNfYXV4X3N0cnVjdC5oIgorCSNpbmNsdWRlICJsNGMydGNtX2Z1bmMuaCIKKwkjaW5jbHVkZSAibDRjMnRjbV9zdHJ1Y3QuaCIKKwkjaWZkZWYgX19UQ1BJUF9fCisJCS8vI2luY2x1ZGUgImw0YzJhYm1fc3RydWN0LmgiCisJI2VuZGlmCisJCisJI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisJI2luY2x1ZGUgInBzX3B1YmxpY19zdHJ1Y3QuaCIKKyAgICAjaW5jbHVkZSAicGFtMnRjbV9zdHJ1Y3QuaCIKKworI2luY2x1ZGUgImw0Y19wc19jbWQuaCIKKworI2lmZGVmIF9fTDRDX0dQUlNfVVRfXworI2RlZmluZSBMNENfQzJLX0FTU0VSVCh4KSBBU1NFUlQoeCkKKyNlbHNlCisjZGVmaW5lIEw0Q19DMktfQVNTRVJUKHgpIERFQlVHX0FTU0VSVCh4KQorI2VuZGlmCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfZ2V0X2dwcnNfZGF0YV9jb3VudGVyX3JlcShsNGNfZ3Byc19zdGF0aXN0aWNzX2luZm9fc3RydWN0ICpjb3VudGVyX2luZm8pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2Vwc19zZXRfdGZ0X3JlcShrYWxfdWludDggc3JjX2lkLCB0ZnRfaW5mb19zdHJ1Y3QgKnRmdCk7CisKKy8qCisgKiBhZGQgbG9jYWxfZGVhY3RpdmF0ZV9wZHAgZm9yIF9fTE9DQUxfREVBQ1RJVkFURV9QRFBfU1VQUE9SVF9fCisgKiBtdGswMjEyNiBNQVVJXzAyNTMyNDQwIGFkZCBkYXRhX3NyYyB0byBoYW5kbGUgcGx1Z291dCBpbmRpY2F0aW9uIHdoaWxlIGVzY2FwZSAKKyAqLworLy9leHRlcm4gdm9pZCBsNGNfcHNfZGlzY19wcHBfZGlhbHVwX3JlcShsNGNfc291cmNlX2lkX2VudW0gY21kX3NyY19pZCwgbDRjX3NvdXJjZV9pZF9lbnVtIGRhdGFfc3JjX2lkLCBrYWxfdWludDggY29udGV4dF9pZCwga2FsX2Jvb2wgbG9jYWxfZGVhY3RpdmF0ZV9wZHApOworCitleHRlcm4gbDRjX3NvdXJjZV9pZF9lbnVtIGw0Y19wc19maW5kX2RhdGFfc3JjX2lkKHZvaWQpOworCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfdGNtX3NldF9wcHBfYXV0aF9pbmZvX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggY29udGV4dF9pZCwga2FsX3VpbnQ4IGF1dGhfdHlwZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHBwX2RlYWN0aXZhdGVfcmVxKGthbF91aW50OCBuc2FwaSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfZ2V0X2FjbF9tb2RlX3JlcShrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19zZXRfYWNsX21vZGVfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBvbl9vZmYsIGthbF91aW50OCAqcGluKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19nZXRfYWNsX2VudHJpZXNfcmVxKGthbF91aW50MTYgc3RhcnRfaW5kZXgsIGthbF91aW50MTYgbWF4X3JlYWRfZW50cmllcyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfYWRkX2FjbF9lbnRyeV9yZXEobDRjX3RjbV9hY2xfZW50cnlfc3RydWN0IGFjbF9lbnRyeSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfc2V0X2FjbF9lbnRyeV9yZXEoa2FsX3VpbnQxNiBpbmRleCwgbDRjX3RjbV9hY2xfZW50cnlfc3RydWN0IGFjbF9lbnRyeSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfZGVsX2FjbF9lbnRyeV9yZXEoa2FsX2Jvb2wgZGVsX2FsbCwga2FsX3VpbnQxNiBpbmRleCwgbDRjX3RjbV9hY2xfZW50cnlfc3RydWN0IGFjbF9lbnRyeSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfbGVhdmVfYWNsX21lbnVfcmVxKHZvaWQpOworCisKKworI2VuZGlmIC8qIF9fTU9EX1RDTV9fICovCisjZW5kaWYgLyogX0w0Q19HUFJTX0NNRF9IICovIAorCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfbGNzX2NtZC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX2xjc19jbWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTQwMDRiCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX2xjc19jbWQuaApAQCAtMCwwICsxLDExMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICoJbDRjX2xjc19jbWQuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNVDYyNjgKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBUaGlzIGZpbGUgaXMgaW50ZW5kcyBmb3IgLi4uCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfTDRDX0xDU19DTURfSAorI2RlZmluZSBfTDRDX0xDU19DTURfSAorCisvLyNpbmNsdWRlICJrYWxfbm9uX3NwZWNpZmljX2dlbmVyYWxfdHlwZXMuaCIKKy8vI2luY2x1ZGUgImw0Y19hdXhfc3RydWN0LmgiCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfc3RydWN0LmgiCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc3NfbXRscl9iZWdpbl9yZXNfcmVxKGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMNENfU1NfTG9jYXRpb25Ob3RpZmljYXRpb25SZXMgKnJlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNzX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zc19hZXJxX2JlZ2luX3Jlc19yZXEoa2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBjYXVzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzc19pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc3NfYWVycF9iZWdpbl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDRDX1NTX0xDU19BcmVhRXZlbnRSZXBvcnRBcmcgKmFlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzc19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGlzX2luaXRpYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCByYXRfaW5mbyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc3NfYWVycF9lbmRfcmVxKGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggY2F1c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3NfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NzX2FlY2xfYmVnaW5fcmVzX3JlcShrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNhdXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNzX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zc19tb2xyX2JlZ2luX3JlcShrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMNENfU1NfTENTX01PTFJBcmcgKm1vbHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzc19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGlzX2luaXRpYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCByYXRfaW5mbyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc3NfbW9scl9lbmRfcmVxKGthbF91aW50OCBzcmNfaWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNhdXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNzX2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX2FncHNfY3BfZW5hYmxlX2Rpc2FibGVfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBlbmFibGUpOworCitleHRlcm4gdm9pZCBsNGNfYWdwc19jcF9rZXlfdXBkYXRlX3JlcShrYWxfdWludDggc3JjX2lkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqc2liMTVfY3VycmVudF9kZWNpcGhlcmluZ19rZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpzaWIxNV9uZXh0X2RlY2lwaGVyaW5nX2tleSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc2liMTVfY2lwaGVyaW5nX2tleV9mbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorZXh0ZXJuIHZvaWQgbDRjX2FncHNfY3BfYWJvcnRfcmVxKGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGlzX2Fib3J0X21vbHIpOyAvL01BVUlfMDI2MDExMzEKKworZXh0ZXJuIHZvaWQgbDRjX2xic19tZXNzYWdlX2Rpc3BhdGNoKGlsbV9zdHJ1Y3QgKmlsbV9wdHIpOyAvL2xicyBtZXNzYWdlCisKK2V4dGVybiB2b2lkIGw0Y19sY3NfZWNjX2luZm9fcmVxKGthbF9ib29sIGVjY19vbmdvaW5nKTsKK2V4dGVybiB2b2lkIGw0Y19sY3NfZW10X2luZm9fcmVxKGthbF9ib29sIGVtdF9vbmdvaW5nKTsKKworI2VuZGlmIC8qIF9MNENfTENTX0NNRF9IICovIAorCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfcGhiX2NtZC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX3BoYl9jbWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTdiMzRmCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX3BoYl9jbWQuaApAQCAtMCwwICsxLDE4NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogbDRjX3BoYl9jbWQuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNVDYyMDgKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBUaGlzIGZpbGUgaXMgaW50ZW5kcyBmb3Ig77+9Sy4KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0w0Q19QSEJfQ01EX0gKKyNkZWZpbmUgX0w0Q19QSEJfQ01EX0gKKworI2luY2x1ZGUgImw0Y19jb21tb25fZW51bS5oIgorI2luY2x1ZGUgImw0YzJwaGJfc3RydWN0LmgiCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfZW51bS5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJybW1pX2NvbW1vbl9lbnVtLmgiCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcGhiX3N0YXJ0dXBfYmVnaW5fcmVxKGthbF9ib29sIGlzX2Zkbl9jaGFuZ2UpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BoYl9nZXRfZW50cnlfYnlfcHJlZml4X3RleHRfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdHlwZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBub19kYXRhLAorICAgICAgICAgICAgICAgICAgICBsNF9uYW1lX3N0cnVjdCAqbmFtZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcGhiX2dldF9lbnRyeV9ieV9pbmRleF9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0eXBlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG51bV9pbmRleCwgICAgCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgcmVjb3JkX2luZGV4LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IG5vX2RhdGEpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BoYl9nZXRfZW50cnlfYnlfcmFuZ2VfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdHlwZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgcmVjb3JkX2luZGV4LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IG5vX2RhdGEpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BoYl9nZXRfZW50cnlfZm9yX2VjcGJyX3JlcSgKKyAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICBrYWxfdWludDggdHlwZSwKKyAgICAgICAgICAgIHBoYl9zdG9yYWdlX2VudW0gc3RvcmFnZSwKKyAgICAgICAgICAgIGthbF91aW50OCBudW1faW5kZXgsCisgICAgICAgICAgICBrYWxfdWludDE2IHJlY29yZF9pbmRleCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcGhiX2dldF90eXBlX2luZm8oCisgICAgICAgICAgICBrYWxfdWludDggdHlwZSwgCisgICAgICAgICAgICBsNGNwaGJfZmlsZV9pbmZvX3N0cnVjdCogZmlsZV9pbmZvLCAKKyAgICAgICAgICAgIGthbF91aW50OCBvY2N1cnJlbmNlKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19waGJfZ2V0X3N0b3JhZ2VfaW5mbygKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJtbWlfc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiAqdXNlZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiAqdG90YWwpOworCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcGhiX2luaXRfbWVfcGhiX3JlcShrYWxfdWludDggc3JjX2lkLGthbF91aW50OCBpbml0X3R5cGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BoYl9leGVfd3JpdGVfZW50cnlfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdHlwZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBub19kYXRhLAorICAgICAgICAgICAgICAgICAgICBsNGNfcGhiX2VudHJ5X3N0cnVjdCAqbGlzdCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcGhiX2V4ZV9kZWxldGVfZW50cnlfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdHlwZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG51bV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG5vX2RhdGEsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICBrYWxfYm9vbCBkZWxfYWxsLCAKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiByZWNvcmRfaW5kZXgpOworCitleHRlcm4gdm9pZCBsNGNfcGhiX3VwZGF0ZSh2b2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19waGJfcmVhZF9yZXEoCisgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAga2FsX3VpbnQ4IHR5cGUsCisgICAgICAgICAgICBrYWxfdWludDggc3RvcmFnZSwKKyAgICAgICAgICAgIGthbF91aW50OCBudW1faW5kZXgsCisgICAgICAgICAgICBrYWxfdWludDE2IGluZGV4LAorICAgICAgICAgICAga2FsX3VpbnQxNiByZWNvcmRfaW5kZXgsCisgICAgICAgICAgICBrYWxfdWludDE2IG5vX2RhdGEsIAorICAgICAgICAgICAgbDRjX2FjdGlvbl9lbnVtIGFjdGlvbik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcGhiX3JlYWRfdXNpbV9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG9jY3VycmVuY2UsIAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IHJlY29yZF9pbmRleCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcGhiX3dyaXRlX3VzaW1fcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdHlwZSwgCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBvY2N1cnJlbmNlLCAKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiByZWNvcmRfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGw0Y19waGJfdXNpbV9lbnRyeSAqZW50cnkpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BoYl9kZWxldGVfdXNpbV9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG9jY3VycmVuY2UsIAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IHJlY29yZF9pbmRleCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcGhiX2NoZWNrX3dyaXRlX3VzaW1fZW50cnlfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggZmlsZV9iaXRtYXBbUEhCX1RZUEVfVE9UQUxdLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IHJlY29yZF9pbmRleCk7CisKK2V4dGVybiB2b2lkIGw0Y19waGJfY3JzbV9ub3RpZnlfd3JpdGVfZW50cnlfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGZpbGVfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBpbmRleCwgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbW9kZSwgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGRhdGFfbGVuLCAgICAgCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqZGF0YSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcGhiX2Zkbl9jaGVja19yZXEoCisgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwgCisgICAgICAgICAgICAgICAgbDRfYWRkcl9iY2Rfc3RydWN0ICp0ZWxfbnVtLCAKKyAgICAgICAgICAgICAgICBrYWxfdWludDggaXNfcmV0cmlldmUsIAorICAgICAgICAgICAgICAgIGw0Y19waGJfYXBwcm92YWxfdHlwZV9lbnVtIGFwcHJvdmFsX3R5cGUsCisgICAgICAgICAgICAgICAgbDRjX2FjdGlvbl9lbnVtIHBoYl9hY3Rpb24sCisgICAgICAgICAgICAgICAgbDRjX3BoYl9hcHByb3ZlX3NyY19lbnVtIGFwcHJvdmVfc3JjKTsKKworI2lmZGVmIF9fQ0RNQTIwMDBfUkFUX18KK2V4dGVybiBrYWxfYm9vbCBsNGNfcGhiX2FsbG93X3NlbmRfcmVhZHkodm9pZCk7CisjZW5kaWYKKworZXh0ZXJuIHZvaWQgbDRjX3BoYl9jb250ZXh0X3N3aXRjaChsNGNfbWVfcmVjb25maWdfZW51bSByZWNvbmZpZ190eXBlKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfcGhiX2V4ZV9lY3BicmlkeChrYWxfdWludDE2IGluZGV4MSwga2FsX3VpbnQxNiBpbmRleDIsIHJtbWlfcGhiX3R5cGVfZW51bSBzdG9yYWdlX3R5cGUpOworCisjZW5kaWYgLyogX0w0Q19QSEJfQ01EX0ggKi8KKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX3BzX2NtZC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX3BzX2NtZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYTA2YjQKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfcHNfY21kLmgKQEAgLTAsMCArMSwxODUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqIGw0Y19wc19jbWQuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBVTU9MWQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBpcyBpbnRlbmRzIGZvciBLLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0w0Q19QU19DTURfSAorI2RlZmluZSBfTDRDX1BTX0NNRF9ICisKKyNpZmRlZiBfX01PRF9UQ01fXworI2luY2x1ZGUgImw0Y19jb21tb25fZW51bS5oIgorI2luY2x1ZGUgImw0YzJ0Y21fZnVuYy5oIgorI2luY2x1ZGUgImw0YzJ0Y21fc3RydWN0LmgiCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfc3RydWN0LmgiCisjaW5jbHVkZSAicGFtMnRjbV9zdHJ1Y3QuaCIKKyNpbmNsdWRlICJsM19pbmNfZW51bXMuaCIKKyNpbmNsdWRlICJkZG1fY29tbW9uX3N0cnVjdC5oIgorCisjaWZkZWYgX19NT0JJTEVfQlJPQURCQU5EX1BST1ZJU0lPTl9DT05URVhUX18KK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfZ2V0X3Byb3Zpc2lvbl9jb250ZXh0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfYm9vbCBnZXRfYWxsKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfc2V0X3Byb3Zpc2lvbl9jb250ZXh0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggZW50cnlfaWQsIGthbF91aW50MzIgcGNpZCwga2FsX3VpbnQ4IHBjdHlwZSwga2FsX3VpbnQ4ICogYXBuLCBrYWxfdWludDggKiB1c2VybmFtZSwga2FsX3VpbnQ4ICogcGFzc3dkLCBrYWxfdWludDggY29tcCwga2FsX3VpbnQ4IGF1dGhfdHlwZSwga2FsX3VpbnQ4ICogcGxtbl9pbl9kaWdpdCwga2FsX3VpbnQxNiBzdGF0dXMpOworI2VuZGlmIC8qIF9fTU9CSUxFX0JST0FEQkFORF9QUk9WSVNJT05fQ09OVEVYVF9fICovCisKKworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19zZXRfdnp3X2Fwbl90YWJsZV9yZXEoCisgICAgICAgICAgICAga2FsX3VpbnQ4ICBzcmNfaWQsICAKKyAgICAgICAgICAgICB2endfYXBuX3RhYmxlX3N0cnVjdCAqYXBuX3RhYmxlKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfc2V0X2NsZWFyX3Z6d19hcG5fdGFibGUoa2FsX3VpbnQ4ICBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2dldF92endfYXBuX3RhYmxlX3JlcShrYWxfdWludDggIHNyY19pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfc2V0X3Z6d19hcG5fcGFyYW1zX3JlcSgKKyAgICAgICAgICAgICBrYWxfdWludDggIHNyY19pZCwgIAorICAgICAgICAgICAgIGthbF91aW50OCAgd2FwbiwKKyAgICAgICAgICAgICBrYWxfdWludDMyIG1heF9jb25uX3QsCisgICAgICAgICAgICAga2FsX3VpbnQzMiBtYXhfY29ubl90X3ZhbHVlX2luX3NlYywKKyAgICAgICAgICAgICBrYWxfdWludDMyIHdhaXRfdGltZV92YWx1ZV9pbl9zZWMsCisgICAgICAgICAgICAga2FsX3VpbnQzMiB0aHJvdHRsZV90aW1lX3ZhbHVlX2luX3NlYyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfZ2V0X3Z6d19hcG5fcGFyYW1zX3JlcShrYWxfdWludDggIHNyY19pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19wc19zZW5kX2F0X2NtZF9jbmYoa2FsX3VpbnQzMiBzcmNfaWQsIGthbF9ib29sIGlzX3N1Y2Nlc3MsIGthbF91aW50MTYgZXJyX2NhdXNlKTsKKworZXh0ZXJuIHZvaWQgbDRjX3BzX3NlbmRfZWdwY29faW5kX3dpdGhvdXRfY29udGVudChrYWxfdWludDggY2lkLCBrYWxfdWludDMyIGllaWQpOworZXh0ZXJuIHZvaWQgbDRjX3BzX3NlbmRfZWdwY29faW5kX3dpdGhfY29udGVudChrYWxfdWludDggY2lkLCBrYWxfdWludDMyIGllaWQsIGthbF91aW50OCBjb250ZW50X2xlbiwga2FsX3VpbnQ4ICpjb250ZW50X3B0cik7CisgICAgICAgICAgICAgCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX3NldF9jZ2F1dGhfcmVxKGthbF91aW50OCBzcmNfaWQsIGw0Y3RjbV9zZXRfY2dhdXRoX2luZm9fcmVxX3N0cnVjdCAqY2dhdXRoX3JlcSk7CQorZXh0ZXJuIGthbF9ib29sIGw0Y19wc19zZXRfdW5kZWZpbmVfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBjaWQsIGthbF91aW50MTYgdW5kZWZfYWN0aW9uKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19zZXRfZXFvc19yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHFvc190eXBlLCBsNGNfZXFvc19zdHJ1Y3QgKm1pbik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfZ2V0X2Vxb3NfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBxb3NfdHlwZSwgbDRjX2Vxb3NfbGlzdF9zdHJ1Y3QgKmluZm8pOworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19nZXRfZXBzX3Fvc19pbmZvX3JlcShrYWxfdWludDggc3JjX2lkLCBsNGNfZXBzX3Fvc19saXN0X3N0cnVjdCAqaW5mbyk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2dldF92Z3Fvc19pbmZvX3JlcShrYWxfdWludDggc3JjX2lkLCBsNGNfdmdxb3NfbGlzdF9zdHJ1Y3QgKmluZm8pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2dldF9jb25maWdfb3B0aW9uX2luZm8oa2FsX3VpbnQ4IHNyY19pZCwgbDRjX2NvbmZpZ19vcHRpb25fbGlzdF9zdHJ1Y3QgKmluZm8pOworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19nZXRfY2dhdXRoX2luZm8oa2FsX3VpbnQ4IHNyY19pZCwgbDRjX2NnYXV0aF9pbmZvX2xpc3Rfc3RydWN0ICppbmZvKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19leGVfc2VuZF9kYXRhX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggY2lkLCBrYWxfdWludDMyIHNpemUpOworCitleHRlcm4ga2FsX3VpbnQzMiBsNGNfcHNfZ2V0X2VudGVyX2RhdGFfbmV0d29ya19pbnRlcmZhY2Uoa2FsX3VpbnQ4IGwycCwga2FsX3VpbnQzMiBjaGlkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19leGVfZW50ZXJfZGF0YV9zdGF0ZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGwycCwga2FsX3VpbnQ4IGNpZCwga2FsX3VpbnQzMiBjaGlkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19leGVfbGVhdmVfZGF0YV9zdGF0ZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGNpZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfc2V0X3RmdF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwgdGZ0X2luZm9fc3RydWN0ICp0ZnQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19nZXRfdGZ0X3JlcShrYWxfdWludDggc3JjX2lkLCB0ZnRfaW5mb19saXN0X3N0cnVjdCAqdGZ0X2luZm9fbGlzdCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfZ2V0X3Fvc19yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHFvc190eXBlLCBsNGNfcW9zX2xpc3Rfc3RydWN0ICppbmZvKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZXBzX3NldF9xb3NfcmVxKGthbF91aW50OCBzcmNfaWQsIGw0Y19lcHNfcW9zX3N0cnVjdCAqcW9zKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfc2V0X3ZxcW9zX3JlcShrYWxfdWludDggc3JjX2lkLCBsNGNfdmdxb3Nfc3RydWN0ICpxb3NfaW5mbyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfc2V0X3Fvc19yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHFvc190eXBlLCBsNGNfcW9zX3N0cnVjdCAqbWluKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19zZXRfc2VjX2RlZmluaXRpb25fcmVxKGthbF91aW50OCBzcmNfaWQsIGw0Y19zZWNfcGRwX2luZm9fc3RydWN0ICpwZHApOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2dldF9zZWNfZGVmaW5pdGlvbl9saXN0X3JlcShrYWxfdWludDggc3JjX2lkLCBsNGNfc2VjX3BkcF9pbmZvX2xpc3Rfc3RydWN0ICppbmZvKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19zZXRfZGVmaW5pdGlvbl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwgbDRjX3ByaW1fcGRwX2luZm9fc3RydWN0ICpwZHAsIGw0Y19jbWRfY29uZmxpY3RfY2hlY2tfb3B0aW9uX2VudW0gY2hlY2tfb3B0aW9uKTsKKworZXh0ZXJuIHZvaWQgbDRjX3BzX2V2ZW50X25vdGlmeV9yZXF1ZXN0KHBhbV9ldmVudF9ub3RpZnlfZW51bSBub3RpZnlfZXZlbnQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX3NldF9leHRlbmRlZF9kZWZpbml0aW9uX3JlcShrYWxfdWludDggc3JjX2lkLCBsNGNfZXh0ZW5kZWRfcGRwX2luZm9fc3RydWN0ICpleHRlbmRlZF9wZHAsIGw0Y19jbWRfY29uZmxpY3RfY2hlY2tfb3B0aW9uX2VudW0gY2hlY2tfb3B0aW9uKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19zeW5jX2Fwbl9pbmZvX3RvX3RjbShrYWxfdWludDggc3JjX2lkLCBsNGNfYXBuX2luZm9fc3RydWN0ICpzeW5jX3JlcSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfc2VuZF9jZWxsdWxhcl9uZXR3b3JrX2NmZ190b190Y20obDRjX2NlbGx1bGFyX25ldHdvcmtfY29uZmlnICpjb25maWcpOworCitleHRlcm4gdm9pZCBsNGNfcHNfc2VuZF9kYXRhX3NlcnZpY2Vfc3RhdHVzX3VwZGF0ZV90b19yYWMoa2FsX2Jvb2wgaXNfZGF0YV9zZXJ2aWNlX3ByZXNlbnQsIGthbF9ib29sIGlzX2RhdGFfc2VydmljZV9vbiwga2FsX2Jvb2wgaXNfZGF0YV9yb2FtaW5nX3NlcnZpY2VfcHJlc2VudCwga2FsX2Jvb2wgaXNfZGF0YV9yb2FtaW5nX3NlcnZpY2Vfb24pOworCitleHRlcm4gdm9pZCBsNGNfcHNfc2VuZF9wZG5fcmV2aXZlX2NuZl90b19sNGJwZG4oa2FsX3VpbnQ4IGNpZCwga2FsX2Jvb2wgaXNfc3VjY2VzcywgcHNfY2F1c2VfZW51bSBlcnJfY2F1c2UpOworCitleHRlcm4gdm9pZCBsNGNfcHNfc2VuZF9sdGVfYXR0YWNoX3Bkbl9hY3RpdmF0ZV9zdWNjZXNzX2luZF90b19sNGJwZG4oa2FsX3VpbnQ4IGx0ZV9hdHRhY2hfY2lkLAora2FsX2Jvb2wgY2F1c2UyX3ByZXNlbnQsCitwc19jYXVzZV9lbnVtIGNhdXNlMiwKK3BkcF9hZGRyX3R5cGVfZW51bSBud19hcHBsaWVkX3BkcF90eXBlKTsKKworZXh0ZXJuIHZvaWQgbDRjX3BzX3NlbmRfbHRlX2F0dGFjaF9wZG5fYWN0aXZhdGVfZmFpbHVyZV9pbmRfdG9fbDRicGRuKGthbF91aW50OCBsdGVfYXR0YWNoX2NpZCwKK3BzX2NhdXNlX2VudW0gZXJyX2NhdXNlLAora2FsX2Jvb2wgaXNfY2hhbmdlX3RvX2Fwbl9jbGFzc19wcmVzZW50LAora2FsX3VpbnQ4IGNoYW5nZV90b19hcG5fY2xhc3MpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2NsZWFyX3N5bmNfYXBuX2luZm9fdG9fdGNtKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2dldF9kZWZpbml0aW9uX2xpc3RfcmVxKGthbF91aW50OCBzcmNfaWQsIGw0Y19wcmltX3BkcF9pbmZvX2xpc3Rfc3RydWN0ICppbmZvKTsKKworZXh0ZXJuIGthbF91aW50OCBsNGNfcHNfZ2V0X2RhdGFfYmVhcmVyX2NhcGFiaWxpdHkodm9pZCk7IC8vcmV2aWV3X2gyCisKK2V4dGVybiBrYWxfdWludDE2IGw0Y19wc19leGVfYWN0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggb3Bjb2RlLCBrYWxfdWludDggY2lkLCBsNGN0Y21fYWN0X3JlYXNvbiBhY3RfcmVhc29uLCBrYWxfdWludDggcmF0LCBrYWxfdWludDggY2F1c2UsIGRkbV9hcG5fdHlwZV9lbnVtIGFwbl90eXBlKTsKKworZXh0ZXJuIGthbF91aW50MTYgbDRjX3BzX2V4ZV9hdHRhY2hfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBjaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2V4ZV9hY3RfdGVzdF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG9wY29kZSwga2FsX3VpbnQ4IGNpZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfZ2V0X2NvbnRleHRfc3RhdGVfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCAqbnVtLCBrYWxfdWludDggKnN0YXRlX2xpc3QpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2V4ZV9hbnN3ZXJfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBhbnMsIGthbF91aW50OCBsMnAsIGthbF91aW50OCBjaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2V4ZV9tb2RpZnlfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBjaWQsIGthbF91aW50OCBxZmkpOworCitleHRlcm4gdm9pZCBsNGNfbDRicGRuX21zZ19oZGxyKGlsbV9zdHJ1Y3QgKmlsbV9wdHIpOworCitleHRlcm4gdm9pZCBsNGNfcHNfc2VuZF9jZWxsdWxhcl9uZXR3b3JrX2NmZ190b19yYWMobDRjX2NlbGx1bGFyX25ldHdvcmtfY29uZmlnICpjb25maWcpOworI2lmZGVmIF9fVEMxMF9fCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX3NldF9lc2NvbnRpbmRfcmVxKGthbF91aW50MzIgc3JjX2lkLCBrYWxfdWludDggc2Vjb25kYXJ5X2NpZCk7CisjZW5kaWYgLypfX1RDMTBfXyovCisKK2V4dGVybiB2b2lkIGw0Y19wc19zZW5kX3NhdF9ldmRsX2RhdGFfY29ubmVjdF9pbmQoc2F0X2RhdGFfY29ubmVjdGlvbl9zdGF0dXNfZW51bSBkYXRhX2Nvbm5lY3Rpb25fc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdF9lbnVtIHJhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc19jYXVzZV9lbnVtIGNhdXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBjaWQpOworI2VuZGlmIC8qIF9fTU9EX1RDTV9fICovCisjZW5kaWYgLyogX0w0Q19HUFJTX0NNRF9IICovIAorCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfc2ltX2NtZC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX3NpbV9jbWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGUwOTY2Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX3NpbV9jbWQuaApAQCAtMCwwICsxLDQ0MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiBsNGNfc2ltX2NtZC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1UNjIwOAorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBpcyBpbnRlbmRzIGZvciAuLi4KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0w0Q19TSU1fQ01EX0gKKyNkZWZpbmUgX0w0Q19TSU1fQ01EX0gKKworI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAicHNfcHVibGljX3N0cnVjdC5oIgorCisjaW5jbHVkZSAicHMyc2F0X3N0cnVjdC5oIgorI2luY2x1ZGUgIm1jZF9wczJzYXRfcGVlci5oIgorI2luY2x1ZGUgImw0YzJjc21fY2Nfc3RydWN0LmgiCisjaW5jbHVkZSAibDRjMnNtc2FsX3N0cnVjdC5oIgorCisjaW5jbHVkZSAic2ltX3BzX3N0cnVjdC5oIgorI2luY2x1ZGUgInNpbV9wc19lbnVtLmgiCisKKyNpbmNsdWRlICJtY2RfbDNfaW5jX3N0cnVjdC5oIiAgICAgICAvKiBmb3IgbndfdGltZV96b25lX3RpbWVfc3RydWN0IHVzZWQgaW4gbDRjX3NtdV91cGRhdGVfbndfdGltZV9yZXEoKSAqLworCisjaW5jbHVkZSAic211X2NvbW1vbl9lbnVtcy5oIgorI2luY2x1ZGUgInZkbV9sNGNfc3RydWN0LmgiCisKKyNpZmRlZiBfX01CSU1fTVNfTkVUV09SS19CTEFDS0xJU1RfXworI2luY2x1ZGUgImw1X2w0Y19zdHJ1Y3QuaCIKKyNlbmRpZgorCitlbnVtCit7CisgICAgTk9ORV9UWVBFLAorICAgIFBIT05FTE9DS19UWVBFLAorICAgIFBJTjFfVFlQRQorfTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfZ2V0X2ljY2lkX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKmljY2lkX3N0cik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X2dldF9pbXNpX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKmltc2kpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV9leGVfbG9ja19yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBvcGNvZGUsIC8qIHNtdV9sb2NrX29wY29kZV9lbnVtICovCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0eXBlLCAvKiBzbXVfc2VjdXJpdHlfdHlwZV9lbnVtICovCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcGFzc3dkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfZXhlX21hc3Rlcl9yZXNldF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICpwaW4pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV9nZXRfZGlhbF9tb2RlX3JlcSggLyogc2ltX2RuX2VudW0gKi8ga2FsX3VpbnQ4ICpkaWFsX21vZGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV9leGVfdmVyaWZ5X3Bpbl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHBpbl90eXBlLCBrYWxfdWludDggKnBpbiwga2FsX3VpbnQ4ICpuZXdfcGluKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfYXBwX2V4ZV92ZXJpZnlfcGluX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggcGluX3R5cGUsIGthbF91aW50OCAqcGluLCBrYWxfdWludDggKm5ld19waW4sIGthbF91aW50OCBjaGFuX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfZ2V0X3Bpbl90eXBlX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwgLyogc211X3NlY3VyaXR5X3R5cGVfZW51bSAqLworICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnBpbl90eXBlKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfYXBwX2dldF9waW5fdHlwZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICpuYW1lLCBrYWxfdWludDggY2hhbl9pZCwgc211X2Nodl90eXBlX2VudW0gY2h2X3R5cGUpOworCitleHRlcm4gc2ltX2ZpbGVfaW5kZXhfZW51bSBsNGNfc211X2ZpbGVfaWR4X2Zvcl9wcmVmZXJyZWRfb3Blcl9saXN0KHNpbV9maWxlX2luZGV4X2VudW0gc2VsZWN0ZWRfZmlsZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3NldF9wcmVmZXJyZWRfb3Blcl9saXN0X3JlcV9leHQoCisgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgc2ltX2ZpbGVfaW5kZXhfZW51bSBmaWxlX2lkeCwKKyAgICAgICAgICAgIGthbF91aW50OCBpbmRleCwKKyAgICAgICAgICAgIGthbF91aW50OCBvcGNvZGUsCisgICAgICAgICAgICBrYWxfdWludDggKm9wZXIsCisgICAgICAgICAgICBrYWxfdWludDggcmF0KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfc2V0X3ByZWZlcnJlZF9vcGVyX2xpc3RfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggaW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqb3BlciwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJhdCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X2dldF9wcmVmZXJyZWRfb3Blcl9saXN0X3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGluZGV4LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGZpbGVfaWR4X3JlcSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiAqbnVtLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKm9wZXJfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpyYXRfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiAqZmlsZV9pZHhfcnNwKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfc2V0X3B1Y19wYXJhbXNfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCAqcGluLCBrYWxfdWludDggKmN1cnJlbmN5LCBrYWxfdWludDggKnBwdSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X2dldF9wdWNfcGFyYW1zX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKmN1cnJlbmN5LCBrYWxfdWludDggKnBwdSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X2V4ZV9jaGFuZ2VfcGFzc3dvcmRfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLCAvKiBzbXVfc2VjdXJpdHlfdHlwZV9lbnVtICovCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0eXBlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKm9sZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpuZXcxKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfZXhlX3Jlc3RyaWN0ZWRfYWNjZXNzX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNtZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBmaWxlX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggY2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHAxLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcDIsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwMywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpkYXRhLAorICAgICAgICAgICAgCSAgICAgIGthbF91aW50OCAqcGF0aGlkLAorICAgICAgICAgICAgCSAgICAgIGthbF91aW50OCBwYXRoaWRfbGVuZ3RoKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfZXhlX2RpYWxfbW9kZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHR5cGUsIGthbF91aW50OCBvbl9vZmYsIGthbF91aW50OCAqcGluKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfd3JpdGVfc2ltX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBmaWxlX2lkeCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHBhcmEsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGFjY2Vzc19pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3JlYWRfc2ltX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBmaWxlX2lkeCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBwYXJhLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggYWNjZXNzX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfcmVhZF9maWxlX2luZm9fcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50MTYgZmlsZV9pZHgsIGthbF91aW50OCAqcGF0aCwga2FsX3VpbnQ4IGFjY2Vzc19pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3NldF9wZXJzb25hbGl6YXRpb25fcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggY2F0ZWdvcnksCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBvcCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4KiBrZXksCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBsZW4sCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBkYXRhWzEwXSk7CisKKyNpZmRlZiBfX0NBUlJJRVJfUkVTVFJJQ1RJT05fXworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfc2V0X2NhcnJpZXJfcmVzdHJpY3Rpb25fcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggb3AsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqa2V5LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbGlzdCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNhdGVnb3J5LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbGVuLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmRhdGEsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBtdWx0aV9zaW1fcG9saWN5LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggYWxsb3dlZF9jYXJyaWVyc19wcmlvcml0aXplZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3NldF9jcnJzdF9zZWN1cmVfZGF0YV9yZXEoCisgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGFsZ29fdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MzIgbWF4X3JldHJ5X2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpoY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnNhbHQsCisgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmludGVyX2NudCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X2NycnN0X3N0YXR1c19yZXEoa2FsX3VpbnQ4IHNyY19pZCk7CisjZW5kaWYKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfZ2V0X3NoYXJlZF9rZXlfcmVxKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV91cGRhdGVfc2xiX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDE2IHNsYl9sZW4sIGthbF91aW50OCAqc2xiKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfcmVzZXRfc2xiX3JlcShrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfZ2V0X3NsYl92ZXJzaW9uX3JlcShrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfZ2V0X3NpbV9sb2NrX3N0YXR1c19yZXEoa2FsX3VpbnQ4IHNjcl9pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X2dldF9tb2RlbV9jb25maWdfcmVxKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV9nZXRfYXBpX3ZlcnNpb25fcmVxKGthbF91aW50OCBzcmNfaWQpOworCisjaWYgZGVmaW5lZChfX1NJTV9NRV9MT0NLX18pCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV91cGRhdGVfbndfdGltZV9yZXEoa2FsX3VpbnQ4IG53X3RpbWVfem9uZSwgbndfdGltZV96b25lX3RpbWVfc3RydWN0ICpud190aW1lKTsKKyNlbmRpZgorCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV9zbWxfc3RhdHVzX3JlcShrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fcG93ZXJfb2ZmX3JlcShrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fcmVtb3ZlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggbW9kZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX2dldF9nc21jZG1hX2R1YWxzaW1faW5mb19yZXEgKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NpbV9zZXRfZ3NtY2RtYV9kdWFsc2ltX21vZGVfcmVxICgga2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG9wKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fY2hlY2tfcGluX3N0YXR1c19yZXEoc2ltX2Nodl9pbmZvX3N0cnVjdCAqY2h2X2luZm8sIHNpbV9jaHZfc3RhdHVzX3N0cnVjdCAqY2h2X3N0YXR1cyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY3Boc191cGRhdGVfYWxzX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggbGluZV9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19zaW1fcGluX2NvbnZlcnQoa2FsX3VpbnQ4ICpkZXN0LCBrYWxfdWludDggKnNyYyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX3Jlc2V0X3JlcShrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19idF9zaW1fcHJvZmlsZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGFjdGlvbiwga2FsX3VpbnQ4IHRyYW5zcG9ydF9wcm90b2NvbF90eXBlLCBrYWxfdWludDggKmFwZHUsIGthbF91aW50MTYgbGVuZ3RoKTsKKworLy8vZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fY3NpbV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQxNiBsZW5ndGgsIGthbF91aW50OCAqY29tbWFuZCk7CisKKy8qIE1BVUlfMDMwODIzOTEgKi8vL210azAyNTE0X25mYworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fYXBkdV9hY2Nlc3NfcmVxKGthbF91aW50OCBzcmNfaWQsbDRjX2FjdGlvbl9lbnVtIGFjdGlvbiwga2FsX3VpbnQxNiBsZW5ndGgsIGthbF91aW50OCAqY29tbWFuZCxrYWxfdWludDggY2hhbm5lbF9pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NpbV9leHRlbmRlZF9hcGR1X2FjY2Vzc19yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQxNiBvZmZzZXQsIGthbF91aW50OCBjaGFubmVsX2lkLCBrYWxfdWludDE2IHRvdGFsX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBjdXJyX2xlbmd0aCwga2FsX3VpbnQ4ICpjb21tYW5kLCBrYWxfYm9vbCAqaXNfaW50ZXJtZWRpYXRlX3JzcCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX21hbmFnZV9jaGFubmVsX3JlcShrYWxfdWludDggc3JjX2lkLCBsNGNfYWN0aW9uX2VudW0gYWN0aW9uLCBzaW1fbWFuYWdlX2NoYW5uZWxfbW9kZV9lbnVtIG1vZGUsIGthbF91aW50OCBhaWRfbGVuLCBrYWxfdWludDggKmFpZCk7CisKKyNpZmRlZiBfX1ZTSU1fXworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fdnNpbV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHN3aXRjaF9vbiwga2FsX3VpbnQ4IHByb2ZpbGVfaWQsa2FsX3VpbnQ4IGFwcF90eXBlKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fZ2V0X3ZzaW1fcnNhX3B1YmtleV9yZXEoa2FsX3VpbnQ4IHNyY19pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX3ZzaW1fa2lfbW9kZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHByb2ZpbGVfaWQsIGthbF9ib29sIGVuYWJsZWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NpbV9zZXRfdnNpbV9raV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHByb2ZpbGVfaWQsIGthbF91aW50MTYga2V5X2xlbiwga2FsX3VpbnQ4ICprZXksIGthbF9ib29sIGVuY3J5cHRlZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX3NldF92c2ltX2ZpbGVfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBwcm9maWxlX2lkLCBrYWxfdWludDE2IGZpbGVfaWQsIGthbF91aW50MTYgbWV0YV9sZW4sIGthbF91aW50OCAqbWV0YSwga2FsX3VpbnQxNiBkYXRhX2xlbiwga2FsX3VpbnQ4ICpkYXRhKTsKKworZXh0ZXJuIHZvaWQgbDRjX3ZzaW1fcHJvZmlsZV93cml0ZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHByb2ZpbGVfaWQsIGthbF91aW50OCB2c2ltX3R5cGUsIGthbF91aW50MTYgYXV0aF9sZW4sIGthbF91aW50OCAqYXV0aCwga2FsX3VpbnQ4IGFsZ29faWR4KTsKKworI2lmIGRlZmluZWQoX19WU0lNX18pICYmIGRlZmluZWQoX19UQzAxX18pICYmIGRlZmluZWQoX19GRUFUVVJFX1RDMDFfU0lNT0ZGX0VYVEVOVElPTl9fKSAmJiBkZWZpbmVkKF9fTURWU0lNX18pCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NpbV92c2ltX3VwZGF0ZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHN3aXRjaF9vbiwga2FsX3VpbnQ4IHByb2ZpbGVfaWQsIGthbF91aW50OCBtb2RlLCBrYWxfdWludDgqIG1jY21uYywga2FsX3VpbnQ4KiBpaW4sIGthbF91aW50OCogZ2lkMSwga2FsX3VpbnQ4KiBzcG4pOworI2VuZGlmLyojaWYgZGVmaW5lZChfX1ZTSU1fXykgJiYgZGVmaW5lZChfX1RDMDFfXykgJiYgZGVmaW5lZChfX0ZFQVRVUkVfVEMwMV9TSU1PRkZfRVhURU5USU9OX18pICYmIGRlZmluZWQoX19NRFZTSU1fXykqLworCisjZW5kaWYKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fYXBwX3N0YXJ0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggYXBwbGljYXRpb25pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX2FwcF9hdXRoZW50aWNhdGVfcmVxKGthbF91aW50OCBzcmNfaWQsIHVpY2NfYXV0aF9tb2RlX2VudW0gbW9kZSwga2FsX3VpbnQ4IGNoYW5uZWxfaWQsIGthbF91aW50MTYgY29tbWFuZF9sZW4sIGthbF91aW50OCAqY29tbWFuZF9kYXRhKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fYXV0aGVudGljYXRlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggcmFuZF9sZW4sIGthbF91aW50OCAqcmFuZCwga2FsX3VpbnQ4IGF1dGhfbGVuLCBrYWxfdWludDggKmF1dGgpOworCitleHRlcm4gdm9pZCBsNGNfc211X3NtbF9yZWFkeV9ub3RpZnlfcmVxKHZvaWQpOworCisjaWZkZWYgX19TQVRfXworZXh0ZXJuIGthbF9ib29sIGw0Y19zYXRfc2V0dXBfY2FsbF9yZXMoc2F0X3NldHVwX2NhbGxfcmVzX3N0cnVjdCAqbG9jYWxfcHRyKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zYXRfc2VuZF9zbXNfcmVzKHNhdF9zZW5kX3Ntc19yZXNfc3RydWN0ICpsb2NhbF9wdHIpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NhdF9zZW5kX3NzX3JlcyhzYXRfc2VuZF9zc19yZXNfc3RydWN0ICpsb2NhbF9wdHIpOworCitleHRlcm4gdm9pZCBsNGNfc2F0X3NlbmRfeGNhcF9zc19yZXMoa2FsX2Jvb2wgaXNfc3VjY2Vzc2Z1bCwgc2F0X3Rlcm1pbmFsX3Jlc19lbnVtIHRyX2NhdXNlLCBrYWxfdWludDgqIGFkZGl0aW9uYWxfZGF0YV9wdHIsIGthbF91aW50MTYgYWRkaXRpb25hbF9kYXRhX2xlbik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X3NlbmRfdXNzZF9yZXMoc2F0X3NlbmRfdXNzZF9yZXNfc3RydWN0ICpsb2NhbF9wdHIpOworCitleHRlcm4gdm9pZCBsNGNfc2F0X3NlbmRfaW1zX3Vzc2RfcmVzKGthbF9ib29sIGlzX3N1Y2Nlc3NmdWwsIHNhdF90ZXJtaW5hbF9yZXNfZW51bSB0cl9jYXVzZSwgdm9pZCogYWRkaXRpb25hbF9kYXRhX3B0cik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X3J1bl9hdF9jb21tYW5kX3JlcyhzYXRfcnVuX2F0X2NvbW1hbmRfcmVzX3N0cnVjdCAqbG9jYWxfcHRyKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zYXRfc2VuZF9kdG1mX3JlcyhrYWxfdWludDggY21kX2RldGFpbFs1XSwga2FsX3VpbnQ4IHJlcywga2FsX3VpbnQ4IGFkZGl0aW9uYWxfaW5mbyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X2NhbGxfc2V0dXBfcmVxKAorICAgICAgICAgICAgICAgICAgICBsNGNjc21fY2Nfc2F0X3NldHVwX3JlcV9zdHJ1Y3QgKmxvY2FsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpwZWVyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGxlbmd0aCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X3NlbmRfZHRtZl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICpkdG1mX2RpZ2l0LCBrYWxfdWludDggbm9fZGlnaXQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NhdF9hYm9ydF9kdG1mX3JlcShrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zYXRfc2VuZF9zbXNfcmVxKGw0Y3Ntc2FsX3NhdF9zZW5kX3JlcV9zdHJ1Y3QgKmxvY2FsX3B0ciwga2FsX3VpbnQ4IG1vZGUpOworCisjaWYgZGVmaW5lZChfX1RDMTBfXykgJiYgZGVmaW5lZChfX0lQQ19BREFQVEVSX18pCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NhdF90ZXJtaW5hbF9yZXNwb25zZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGxlbmd0aCwga2FsX3VpbnQ4ICp0ZXJtaW5hbF9yc3AsIGthbF91aW50MTYgY21kX2lkKTsKKyNlbHNlCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NhdF90ZXJtaW5hbF9yZXNwb25zZV9yZXEoa2FsX3VpbnQ4IGxlbmd0aCwga2FsX3VpbnQ4ICp0ZXJtaW5hbF9yc3AsIGthbF91aW50MTYgY21kX2lkKTsKKyNlbmRpZgorZXh0ZXJuIGthbF9ib29sIGw0Y19zYXRfZW52ZWxvcGVfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBsZW5ndGgsIGthbF91aW50OCAqZW52ZWxvcGVfZGF0YSwga2FsX2Jvb2wgaXNfc3RhbmRhcmQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zYXRfc2V0dXBfc21zKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBtb2RlKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X3Ntc19xdWVyeShrYWxfdWludDggKnN0ciwga2FsX3VpbnQxNiAqc3RyX2xlbik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X3NldHVwX2NzX3NzKHZvaWQpOworZXh0ZXJuIHBlZXJfYnVmZl9zdHJ1Y3QqIGw0Y19zYXRfZ2V0X3NzX251bWJlcih2b2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zYXRfc2V0dXBfY3NfdXNzZCh2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19zYXRfc2V0X2ljb25fZGlzcGxheShzYXRfdGVybWluYWxfcmVzX2VudW0gdHJfY2F1c2UsIGthbF9ib29sIGlzX2ljb25fZGlzcGxheWVkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X3F1ZXJ5X3Vzc2RfaW5mb3JtX3VzZXIodm9pZCk7CitleHRlcm4gcGVlcl9idWZmX3N0cnVjdCogbDRjX3NhdF9nZXRfdXNzZF9zdHJpbmcodm9pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X3NldHVwX2NhbGwodmRtX2w0Y19jc19jY19zdGtfY2FsbF9yZXFfc3RydWN0ICptc2dfcHRyKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X2R0bWYodm9pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NhdF9tZW51X3F1ZXJ5KGthbF91aW50OCAqc3RyLCBrYWxfdWludDE2ICpzdHJfbGVuKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zYXRfcmVhZHlfcmVxKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NhdF9jdXNhdGFfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBhY3RfY29uZmlnKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zYXRfY3VzYXRkX3JlcShrYWxfdWludDggZHdsX2NvbmZpZyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X3NldF9jdF9tb2RlX3JlcShrYWxfdWludDggY3RfbW9kZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X2luamVjdF9wcm9hY3RpdmVfY21kX2luZChrYWxfdWludDggKmNtZF9kYXRhLCBrYWxfdWludDE2IGNtZF9sZW4pOworCisjZW5kaWYgLyogX19TQVRfXyAqLworCitleHRlcm4gdm9pZCBsNGNfc211X3NpbV9zdGF0dXNfdXBkYXRlX3JlcShrYWxfdWludDggbmV3X3NpbV9jb25maWcpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NpbV9zZXRfM2dfY2FwX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggY3VyXzNnX2NhcGFiaWxpdHksIGthbF91aW50OCAqY3VyX3BzX3NpbV9tYXApOworCitleHRlcm4gdm9pZCBsNGNfc2ltX3JlYWRfcGxtbl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGFjY2Vzc19pZCwga2FsX3VpbnQxNiBmaWxlX2lkeCk7CitleHRlcm4gdm9pZCBsNGNfc2ltX3dyaXRlX3BsbW5fcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBhY2Nlc3NfaWQsIGthbF91aW50MTYgZmlsZV9pZHgsIGthbF91aW50MTYgZmlsZV9zaXplLCBrYWxfdWludDggKmZpbGUpOworZXh0ZXJuIHZvaWQgbDRjX3NpbV9zZWFyY2hfcmVjb3JkX3JlcShrYWxfdWludDggc3JjX2lkLGthbF91aW50MTYgZmlsZV9pZHgsIGthbF91aW50MTYgcGFyYSwga2FsX3VpbnQ4IGFjY2Vzc19pZCwgIGthbF91aW50OCAqcGF0aCxrYWxfdWludDggcGF0dGVybl9sZW4sa2FsX3VpbnQ4ICpkYXRhKTsKKy8qIE1BVUlfMDI5NTMxNTQgKi8KKworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fcmVjb3ZlcnlfZW5oYW5jZW1lbnRfc3dpdGNoX3JlcShrYWxfYm9vbCBtb2RlKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fcXVlcnlfaW5mb19yZXEoa2FsX3VpbnQ4IHNyY19pZCwgc2ltX3F1ZXJ5X2luZm9fZW51bSBpbmZvX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fdGVybWluYWxfY2FwYWJpbGl0eV9zZXR0aW5nX3JlcShrYWxfdWludDggYWRkaXRpb25hbF9pbnRlcmZhY2UpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3JlZ2lvbmFsX3Bob25lX21vZGVfcmVxKGthbF91aW50MzIgbW9kZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY3N1c19zZXRfc2ltX3Nsb3Qoa2FsX3VpbnQ4IHNldHRpbmcpOworCitleHRlcm4gdm9pZCBsNGNfc2F0X3Rlcm1pYW5sX3Byb2ZpbGVfcmVhZF9yZXEoa2FsX3VpbnQ4IHN0LCBrYWxfdWludDggKnByb2ZpbGUsIGthbF91aW50OCAqcHJvZmlsZV9sZW4pOworCitleHRlcm4gdm9pZCBsNGNfc2F0X3Rlcm1pYW5sX3Byb2ZpbGVfd3JpdGVfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBzdCwga2FsX2Jvb2wgcmVzZXQsIGthbF91aW50OCAqcHJvZmlsZSwga2FsX3VpbnQ4IHByb2ZpbGVfbGVuKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fc2V0X3JlZ2lzdHJhdGlvbl9tb2RlX3JlcShrYWxfYm9vbCByZWdpc3RyYXRpb25fbW9kZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX3NldF9hcHZzaW1fbW9kZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX2Jvb2wgbW9kZSwga2FsX2Jvb2wgaXNfcmVhZHkpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fcnNhX2FwZHVfcnNwX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDMyIGFwZHVfbGVuLCBrYWxfdWludDggKmFwZHVfcnNwKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX3JzYV9hdHJfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBhdHJfc3RhdHVzLCBrYWxfdWludDMyIGF0cl9sZW4sIGthbF91aW50OCAqYXRyKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX3JzYV9ob3RfcGx1Z19vdXRfcmVxKGthbF91aW50OCBzcmNfaWQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1fcnNhX2hvdF9wbHVnX2luX3JlcShrYWxfdWludDggc3JjX2lkKTsKK2V4dGVybiBrYWxfdWludDggbDRjX2dldF9zaW5nbGVfc2ltX2V4aXN0X3N0YXR1cyh2b2lkKTsKK2V4dGVybiBrYWxfdWludDggbDRjX2dldF9zaW5nbGVfc2ltX2luc2VydGVkX3N0YXR1cyh2b2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfcXVlcnlfc2ltX3N0YXR1c19iaXQoc2ltX2ludGVyZmFjZV9lbnVtIHNpbV9pZCwgbDRjX3NpbV9mbGFnX2VudW0gcXVlcnlfc3RhdHVzKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfcmVzZXRfbDRfc2ltX2NvbnRleHQoc2ltX2ludGVyZmFjZV9lbnVtIHNpbV9wc19pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NpbV9yZWFkX2Rpcl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG9wdGlvbik7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NpbV9vcDIwX2FwX3NpbWxvY2tfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBsb2NrX21vZGUpOwora2FsX2Jvb2wgbDRjX3NpbV9hcF9zaW1wb3dlcl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IHNpbV9wb3dlcl9tb2RlLCBrYWxfYm9vbCBzaW1faGFuZGxlX3BsdWdfaW4pOworI2lmZGVmIF9fR0VNSU5JX18KK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX3BsdWdfb3V0X3JlcShrYWxfYm9vbCBha2Ffc3RhdHVzLCBrYWxfYm9vbCByZWFkeV9zdGF0dXMpOworZXh0ZXJuIHZvaWQgbDRjX3NpbV9zZXRfcnNpbV9tb2RlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfYm9vbCByc2ltX3N0YXR1cywga2FsX2Jvb2wgcmVhZHlfc3RhdHVzKTsKK2V4dGVybiB2b2lkIGw0Y19zaW1fc2VydmljZV9yZXNfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF9ib29sIG1vZGUpOworZXh0ZXJuIHZvaWQgbDRjX3NpbV9ha2FfZW5hYmxlX3JlcShrYWxfYm9vbCBtb2RlKTsKK2V4dGVybiB2b2lkIGw0Y19yc2ltX3NldF9hdXRoX3RpbWVvdXQoa2FsX3VpbnQ4IHJzaW1fYXV0aF90aW1lb3V0KTsKK2V4dGVybiB2b2lkIGw0Y19zaW1fc2VuZF9yc2ltX2FrYV9zdGF0dXNfcmVxKHZvaWQpOworI2VuZGlmCisjaWZkZWYgX19GQUtFSURfU1VQUE9SVF9fCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NpbV9mYWtlX2lkX3JlcShrYWxfdWludDggKm1jY19zdHIsIGthbF91aW50OCAqbW5jX3N0ciwga2FsX3VpbnQ4ICptc2luX3N0cik7CisjZW5kaWYKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfc21sX2dldF9sb2NrX2NvZGVzX3JlcShrYWxfdWludDggc3JjX2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3NldF9jdXN0b21fcGVyc29uYWxpemF0aW9uX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNhdGVnb3J5LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggb3AsCisgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBhbGdvX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqc2FsdCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICppdGVyX2NudCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3NsX3VwZGF0ZV9ibG9iX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDE2IHNsYl9sZW4sIGthbF91aW50OCAqc2xiKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3NsX2dldF9zaW1fbG9ja19zdGF0dXNfcmVxKGthbF91aW50OCBzY3JfaWQpOworZXh0ZXJuIGthbF91aW50OCBsNGNfZ2V0X3NpbmdsZV9zaW1faW5zZXJ0ZWRfc3RhdHVzX2J5X3BzX2lkKHByb3RvY29sX2lkX2VudW0gcHJvdG9jb2xfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV91cGRhdGVfZ2Jsb2JfbG9ja19ydWxlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggcnVsZSwga2FsX3VpbnQxNiBzdWJfcnVsZSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV91cGRhdGVfZ2Jsb2JfZGF0YV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG9wLCBrYWxfdWludDE2IGdibG9iX2RhdGFfbGVuLCBrYWxfdWludDggKmdibG9iX2RhdGEpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfZ2Jsb2JfZGV2X2xvY2tfdmVyaWZ5X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggb3AsIGthbF91aW50MTYga2V5X2xlbiwga2FsX3VpbnQ4ICprZXksIGthbF91aW50OCBuZXdfbG9ja19zdGF0ZSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV91cGRhdGVfZ2Jsb2JfZGV2X2xvY2tfYWxnb19yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGRldl9hbGdvX3R5cGUsIGthbF91aW50OCAqaGNrLCBrYWxfdWludDggbWF4X3JldHJ5X2NvdW50LCBrYWxfdWludDgqIHNhbHQsIGthbF91aW50OCogaW50ZXJfY250KTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3VwZGF0ZV9nYmxvYl9pbWVpX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggc2xvdF9pZCwga2FsX3VpbnQ4KiBpbWVpKTsKKyNpZmRlZiBfX0NVU1RfU01MX1JVTEVfXworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfdWRwYXRlX2dibG9iX2N1c3RfcnVsZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGN1c3RfY29kZSwga2FsX3VpbnQ4IGN1c3RfcnVsZSk7CisjZW5kaWYKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X2dldF9nYmxvYl9kZXZfbG9ja19zdGF0dXNfcmVxKGthbF91aW50OCBzcmNfaWQpOworCisjaWYgZGVmaW5lZChfX1RDMTBfXykgJiYgZGVmaW5lZChfX0lQQ19BREFQVEVSX18pCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NhdF9zaW1faW5pdF9tc2coa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGFjdGlvbik7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NhdF9yZWZyZXNoX3ZvdGluZ19jbmYoc2F0X3JlZnJlc2hfY29uZmlybV9yc3BfZW51bSB2b3RpbmdfcmVzdWx0KTsKKyNlbmRpZgorCisjaWZkZWYgX19UQzEwX18KK2V4dGVybiBrYWxfdWludDggbDRjX3NpbV9xdWVyeV92b2x0YWdlX2luZm8ocHJvdG9jb2xfaWRfZW51bSBwc19pZCk7CisjZW5kaWYKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX3F1ZXJ5X2F0cl9pbmZvKGthbF91aW50OCAqbGVuZ3RoLCBrYWxfdWludDggKmF0ciwgcHJvdG9jb2xfaWRfZW51bSBwc19pZCk7CitleHRlcm4ga2FsX3VpbnQ4IGw0Y19zbXVfZ2V0X3VubG9ja19jb2RlX3JlcSgpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfZ2VuX25vbmNlX3JlcShrYWxfdWludDgqIGRldmljZV9pZCwga2FsX3VpbnQzMiBkZXZpY2VfaWRfbGVuLCBrYWxfdWludDgqIG5vbmNlLCBrYWxfdWludDMyKiBub25jZV9sZW4pOworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfdmFsaWRhdGVfc2lnbmF0dXJlX3JlcShrYWxfdWludDggbW9kZSwga2FsX3VpbnQ4IHVubG9ja19jb2RlLCBrYWxfdWludDgqIHNpZ25hdHVyZSwga2FsX3VpbnQzMiBzaWduYXR1cmVfbGVuKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X2dldF9ub25jZV9zaWduX3N0YXR1c19yZXEoa2FsX3VpbnQ4KiBub25jZV9zdGF0dXMsIGthbF91aW50OCogc2lnbl9zdGF0dXMpOworCisjaWZkZWYgX19NQklNX01TX05FVFdPUktfQkxBQ0tMSVNUX18KK2V4dGVybiB2b2lkIGw0Y19zbXVfc2V0X253X2JsYWNrX2xpc3RfcmVxKHZvaWQpOworZXh0ZXJuIHZvaWQgbDRjX3NtdV9jb252ZXJ0X21jY19tbmNfdG9faW50KGthbF91aW50OCAqbWNjX21uY19jaGFyLCBud19ibGFja19saXN0X3Byb3ZpZGVyX3N0cnVjdCAqb3V0cHV0KTsKK2V4dGVybiB2b2lkIGw0Y19zbXVfY29udmVydF9tY2NfbW5jX3RvX2NoYXIobndfYmxhY2tfbGlzdF9wcm92aWRlcl9zdHJ1Y3QgKmlucHV0X21jY19tbmMsIGthbF91aW50OCAqb3V0cHV0KTsKKyNlbmRpZgorZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfZ2VuZXJhdGVfaGNrKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBjYXRlZ29yeSwga2FsX3VpbnQ4ICpjdHJsX2tleV9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MzIgaXRlcl9jbnQsIGthbF91aW50OCBzYWx0X2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBoY2tfbGVuZ3RoKTsKKworI2VuZGlmIC8qIF9MNENfU0lNX0NNRF9IICovCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y19zbXNfY21kLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfc21zX2NtZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjM2EyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfc21zX2NtZC5oCkBAIC0wLDAgKzEsNDQ2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiBsNGNfc21zX2NtZC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1UNjIwOAorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBpcyBpbnRlbmRzIGZvciDvv71LLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfTDRDX1NNU19DTURfSAorI2RlZmluZSBfTDRDX1NNU19DTURfSAorCisjaW5jbHVkZSAibDRjX2F1eF9zdHJ1Y3QuaCIKKyNpbmNsdWRlICJzbXNhbF9sNGNfZW51bS5oIgorI2luY2x1ZGUgImw0YzJzbXNhbF9zdHJ1Y3QuaCIKKyNpbmNsdWRlICJybW1pX2NvbW1vbl9lbnVtLmgiCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfc3RydWN0LmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKyAgICAKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX3NldF9wcm9maWxlX3BhcmFtc19yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgcGFyYV9pbmQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwcm9maWxlX25vLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcGlkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggZGNzLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdnAsCisgICAgICAgICAgICAgICAgICAgIGw0Y19udW1iZXJfc3RydWN0IHNjX2FkZHIsCisgICAgICAgICAgICAgICAgICAgIGw0X25hbWVfc3RydWN0IHByb2ZpbGVfbmFtZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX2dldF9wcm9maWxlX3BhcmFtc19yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwcm9maWxlX25vLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnBpZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpkY3MsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqdnAsCisgICAgICAgICAgICAgICAgICAgIGw0Y19udW1iZXJfc3RydWN0ICpzY19hZGRyLAorICAgICAgICAgICAgICAgICAgICBsNF9uYW1lX3N0cnVjdCAqcHJvZmlsZV9uYW1lKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfc2V0X2NvbW1vbl9wYXJhbXNfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IHBhcmFfaW5kLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggZm8sCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBiZWFyZXJfc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHN0YXR1c19yZXBvcnQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCByZXBseV9wYXRoKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfZ2V0X2NvbW1vbl9wYXJhbXNfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmZvLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmJlYXJlcl9zZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnN0YXR1c19yZXBvcnQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcmVwbHlfcGF0aCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX3N0YXJ0dXBfcmVhZF9uZXh0X3JlcShrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfc2V0X2JlYXJlcl9zZXJ2aWNlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggYmVhcmVyKTsKKworZXh0ZXJuIHZvaWQgbDRjX3Ntc19nZXRfYmVhcmVyX3NlcnZpY2VfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCAqYmVhcmVyKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfZXhlX3Bvc3RfY29tbWFuZF9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBmbywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGN0LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbW4sCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwaWQsCisgICAgICAgICAgICAgICAgICAgIGw0Y19udW1iZXJfc3RydWN0IGRlc3QsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqY21kKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfZXhlX3Bvc3RfY29tbWFuZF9wZHVfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGRhdGFfbGVuLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpwZHUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19leGVfZGVsZXRlX21zZ19yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBkZWxfZmxhZywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpkZWxfYml0bWFwKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfc2V0X21zZ19mb3JtYXRfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBmb3JtYXQpOworCitleHRlcm4gdm9pZCBsNGNfc21zX2dldF9tc2dfZm9ybWF0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKmZvcm1hdCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX2V4ZV9yZWFkX21zZ19saXN0X3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNoYW5nZV9zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzdGF0dXMsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgc3RhcnRfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBub19tc2cpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19leGVfZW1nbF9saXN0X3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNoYW5nZV9zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzdGF0dXMsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgc3RhcnRfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBub19tc2cpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19zZW5kX2Zyb21fc3RvcmFnZV9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGthbF9ib29sIGFkZHJfcHJlc2VudCwKKyAgICAgICAgICAgICAgICAgICAgbDRjX251bWJlcl9zdHJ1Y3QgZGEsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwcm9maWxlX25vX3RhZywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHByb2ZpbGVfbm8pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19zZXRfc3RhdHVzX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG5ld19zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgaW5kZXgpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19leGVfcmVhZF9tc2dfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50MTYgaW5kZXgsIGthbF9ib29sIGNoYW5nZV9zdGF0dXMpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19leGVfcG9zdF9tc2dfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiByZXBseV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgbDRjX251bWJlcl9zdHJ1Y3QgZGVzdCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBwYXJhLAorICAgICAgICAgICAgICAgICAgICBsNGNfbnVtYmVyX3N0cnVjdCBzY19hZGRyLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdnAsCisgICAgICAgICAgICAgICAgICAgIHNtc2FsX3BpZF9lbnVtIHBpZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHVkaGksCisgICAgICAgICAgICAgICAgICAgIHNtc2FsX2Rjc19lbnVtIGRjcywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqbXNnLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc2VxX251bSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG1tc19tb2RlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdHBfc3JyLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdHBfcnApOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19leGVfcG9zdF9wZHVfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IHJlcGx5X2luZGV4LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGRhdGFfbGVuLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc291cmNlX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc2VxX251bSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG1tc19tb2RlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpwZHUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19leGVfd3JpdGVfbXNnX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzdGF0dXMsCisgICAgICAgICAgICAgICAgICAgIGw0Y19udW1iZXJfc3RydWN0IGRlc3QsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgcGFyYSwKKyAgICAgICAgICAgICAgICAgICAgbDRjX251bWJlcl9zdHJ1Y3Qgc2NfYWRkciwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpzY3RzLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdnAsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB1ZGhpLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggZGNzLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGluZGV4LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICptc2csCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0cF9zcnIsCisgICAgICAgICAgICAJICAgIGthbF91aW50OCB0cF9tbXMsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCB0cF9ycCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHRwX3NyaSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX2V4ZV93cml0ZV9wZHVfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGRhdGFfbGVuLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpwZHUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19zZXRfbW9yZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG1vZGUpOworCitleHRlcm4gdm9pZCBsNGNfc21zX2dldF9tb3JlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKm1vZGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19leGVfc3RvcmFnZV9wb3N0X3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiByZXBseV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAga2FsX2Jvb2wgYWRkcl9wcmVzZW50LAorICAgICAgICAgICAgICAgICAgICBsNGNfbnVtYmVyX3N0cnVjdCBkZXN0LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcHJvZmlsZV9ub190YWcsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwcm9maWxlX25vKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfc2V0X21zZ19pbmRfbW9kZV9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBtb2RlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbXQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBibSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGRzKTsKKworZXh0ZXJuIHZvaWQgbDRjX3Ntc19nZXRfbXNnX2luZF9tb2RlX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICptb2RlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKm10LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmJtLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmRzKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfZXhlX3NlbmRfYWNrX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggbW9kZSwga2FsX3VpbnQxNiBsZW5ndGgsIGthbF91aW50OCAqYWNrKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfc2V0X3ByZWZlcnJlZF9tZW1fcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBtZW0xLCBrYWxfdWludDggbWVtMiwga2FsX3VpbnQ4IG1lbTMpOworCitleHRlcm4gdm9pZCBsNGNfc21zX2dldF9wcmVmZXJyZWRfbWVtX3JlcShrYWxfdWludDggc3JjX2lkLCBzbXNhbF9wcmVmZXJfc3RvcmFnZV9zdHJ1Y3QgKmluZm8pOworCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zYWxfZXFzaV9xdWVyeSgKKwkgICAgICAgICAgICAgICAgICBybW1pX3Ntc2FsX3N0b3JhZ2VfZW51bSAgbWVtLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiAJICAgICpiZWdfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYJICAgICplbmRfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgICAgICAgICAgKnVzZWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19zZXRfc2VydmljZV9tb2RlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggbW9kZSk7CisKK2V4dGVybiB2b2lkIGw0Y19zbXNfZ2V0X3NlcnZpY2VfbW9kZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICptb2RlLCBzbXNhbF9zZXJ2aWNlX21vZGVfc3RydWN0ICppbmZvKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfZ2V0X25vX21zZ3NfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICAvL2thbF9ib29sICAqaXNfc21zX3JlYWR5LAorICAgICAgICAgICAgICAgICAgICBrYWxfYm9vbCAqaXNfc2ltX2NhcmRfY2hhbmdlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2ICppbl9zaW1fbm8sCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgKmluX21lX25vLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2ICpvdXRfc2ltX25vLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2ICpvdXRfbWVfbm8sCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgKnVucmVhZF9tc2dfbnVtLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2ICp0b3RhbF9zaW1fbnVtLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2ICp0b3RhbF9tZV9udW0pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19nZXRfbm9fcHJvZmlsZXNfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCAqcHJvZmlsZV9ubywga2FsX3VpbnQ4ICpuYW1lX2xlbik7CisjaWYgMAorLyogdW5kZXIgY29uc3RydWN0aW9uICEqLworI2VuZGlmCitleHRlcm4gdm9pZCBsNGNfc21zX2dldF9zY19hZGRyX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggcHJvZmlsZV9ubywgbDRjX251bWJlcl9zdHJ1Y3QgKnNjX2FkZHIpOworI2lmIDAKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorZXh0ZXJuIHZvaWQgbDRjX3Ntc19nZXRfcG9zdF9wYXJhbXNfcmVxKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcHJvZmlsZV9ubywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpmbywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpwaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqZGNzLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnZwLAorICAgICAgICAgICAgICAgICAgICBsNF9uYW1lX3N0cnVjdCAqcHJvZmlsZV9uYW1lKTsKKy8qCisgKiBleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19leGVfbG9hZF9wcm9maWxlX3JlcSAoa2FsX3VpbnQ4IHNyY19pZCwKKyAqIGthbF91aW50OCBpbmRleCk7CisgKiAKKyAqIGV4dGVybiBrYWxfYm9vbCBsNGNfc21zX2V4ZV9zYXZlX3Byb2ZpbGVfcmVxIChrYWxfdWludDggc3JjX2lkLAorICoga2FsX3VpbnQ4IGluZGV4KTsKKyAqLworI2lmIDAgCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisjZW5kaWYKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2Jfc3Vic2NyaWJlX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggb25fb2ZmLCBzbXNhbF9jYl9jbWRfZW51bSBjYl9jbWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19zZXRfY2JfbW9kZV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwgbDRjX2NiX2luZm9fc3RydWN0ICppbmZvLCBzbXNhbF9jYl9jbWRfZW51bSBjYl9jbWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19nZXRfY2JfbW9kZV9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqbW9kZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICp0b3RhbF9taWRfbnVtLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnRvdGFsX21pcl9udW0sCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqdG90YWxfZGNzX251bSwKKyAgICAgICAgICAgICAgICAgICAgbDRjX2NiX2luZm9fc3RydWN0ICppbmZvKTsKKworZXh0ZXJuIHZvaWQgbDRjX3Ntc19jYl9tc2dfcmVtb3ZhbF9yZXEoa2FsX3VpbnQxNiBtaWQsIGthbF91aW50MTYgc24pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NlbmRfd2VhX3Rlc3RfZGF0YShrYWxfdWludDggbW9kZSk7CisKK2V4dGVybiB2b2lkIGw0Y19zbXNfZXhlX2Fib3J0X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggc2VxX251bSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX2dldF9tYWlsYm94X2FkZHJfcmVxKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19zZXRfbWFpbGJveF9hZGRyX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IG1haWxib3hfbnVtLAorICAgICAgICAgICAgICAgICAgICBsNGNfbnVtYmVyX3N0cnVjdCBudW1fYWRkciwKKyAgICAgICAgICAgICAgICAgICAgbDRfbmFtZV9zdHJ1Y3QgbmFtZSk7CisKKy8vIFI0L1I1IFNNUworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfc2V0X21iaV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG1zcF9ubywgc21zYWxfbWJpX3N0cnVjdCBtYmkpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfZ2V0X21iaV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICptc3BfbnVtLCBzbXNhbF9tYmlfc3RydWN0ICptYmkpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfc2V0X21zcF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG1zcF9ubyk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19nZXRfbXNwX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKm1zcF9ubyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zYWxfaW5pdF9tZV9zbXNfcmVxKGthbF91aW50OCBzcmNfaWQsa2FsX3VpbnQ4IGluaXRfdHlwZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX3JlZ19wb3J0X251bV9yZXEoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBzcmNfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF9ib29sIGVuYWJsZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQzMiBwb3J0X251bSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBtb2RfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgKmNhdXNlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyICpyZXRfcG9ydF9udW0sCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgKnJldF9tb2RfaWQsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcmV0X3NvdXJjZV9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19zbXNfc2V0X3JtbWlfc2NfYWRkcl9yZXEoa2FsX3VpbnQ4IHNyY19pZCwgbDRjX251bWJlcl9zdHJ1Y3Qgc2NfYWRkcik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX3NldF9ybW1pX3Bvc3RfcGFyYW1zX3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHByb2ZpbGVfbm8sIC8vZHVtbXkKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBwYXJhX2luZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGZvLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcGlkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggZGNzLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdnApOworCitleHRlcm4gdm9pZCBsNGNfc21zX2V4ZV9zYXZlX3NldHRpbmdzX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggcHJvZmlsZV9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19zbXNfZXhlX3Jlc3RvcmVfc2V0dGluZ3NfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBwcm9maWxlX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNhbF9yZWFkX3Jhd19kYXRhX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDE2IGluZGV4KTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zYWxfd3JpdGVfcmF3X2RhdGFfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBzdG9yYWdlX3R5cGUsa2FsX3VpbnQxNiBkYXRhX2xlbixrYWxfdWludDggKmRhdGEpOworCitleHRlcm4gdm9pZCBsNGNfc21zYWxfZmRuX2NoZWNrX3JzcChrYWxfdWludDggcmVzdWx0LCBrYWxfdWludDE2IGNhdXNlKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfY29weV9tc2dfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBhY3Rpb24sIGthbF91aW50OCBkc3Rfc3RvcmFnZSwga2FsX3VpbnQxNiBzcmNfaW5kZXgpOworCitleHRlcm4gdm9pZCBsNGNfc21zX3N5bmNfbXNnX3Jlc19yZXEoa2FsX2Jvb2wgcmVzdWx0KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfZXhlX3NlbmRfc21tYV9yZXEoa2FsX3VpbnQ4IHNyY19pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19leGVfc2V0X21zZ193YWl0aW5nX3JlcShrYWxfdWludDggc3JjX2lkLGthbF91aW50OCAgbGluZV9ubyxrYWxfdWludDggIHdhaXRpbmdfbnVtLGthbF91aW50OCAgaW5kX3R5cGUpOworCitleHRlcm4gdm9pZCBsNGNfc21zX3VzbV9nZW5lcmFsX3Jjb2RlX3JlcSgKKwkJa2FsX3VpbnQ4IHNyY19pZCwKKwkJcm1taV91c21fYXRjbWRfZW51bSBhdGNtZF90eXBlLAorCQlrYWxfdWludDMyIGF0Y21kX2luZGV4LAorCQlybW1pX3VzbV9tZXNzYWdlX3N0YXRfZW51bSB0YWdfdHlwZSwKKwkJa2FsX2Jvb2wgaXNjb21wbGV0ZSwKKwkJa2FsX3VpbnQ4IHBkdV9sZW5ndGgsCisJCWthbF91aW50OCAqcGR1LAorCQlsNGNfdXNtX2NubWlfc3RydWN0IGNubWlfcGFyYW1ldGVyLAorCQlsNGNfdXNtX2Ntc3Nfc3RydWN0IGNtc3Nfc3RydWN0LAorCQlrYWxfdWludDggcmVzdWx0LAorCQlrYWxfdWludDE2IGNhdXNlKTsKKworZXh0ZXJuIHZvaWQgbDRjX3Ntc19zeW5jX21zZ19zdG9yYWdlX3JlcSgKKwkJCWthbF91aW50OCBzcmNfaWQsCisJCQlrYWxfdWludDMyIHNtX21heF9udW0sIAorCQkJa2FsX3VpbnQzMiBzbV9jdXJyZW50X251bSwgCisJCQlrYWxfdWludDMyIG1lX21heF9udW0sIAorCQkJa2FsX3VpbnQzMiBtZV9jdXJyZW50X251bSwgCisJCQlrYWxfdWludDMyIHNyX21heF9udW0sIAorCQkJa2FsX3VpbnQzMiBzcl9jdXJyZW50X251bSk7IAorCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19zZW5kX2RlbGl2ZXJfcmVwb3J0X3JlcShrYWxfdWludDggc3JjX2lkLGthbF91aW50OCByZXN1bHQsa2FsX3VpbnQzMiBlcnJvcl9jYXVzZSwga2FsX3VpbnQ4IG1lbSwga2FsX3VpbnQzMiBpbmRleCwga2FsX3VpbnQ4IHVpZCwga2FsX3VpbnQ4IG1zZ19jbGFzcywga2FsX2Jvb2wgaXNfbXNnX3dhaXQsIGthbF91aW50OCBtc2dfd2FpdF9zdG9yZSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19zdGFydHVwX3JlYWRfcmVzX3JlcShrYWxfdWludDggc3JjX2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX2dldF9tZW1fc3RhdHVzX3Jlc19yZXEoa2FsX3VpbnQ4IHNyY19pZCxrYWxfdWludDMyIHNpbV9tYXhfbnVtLGthbF91aW50MzIgc2ltX2N1cnJlbnRfbnVtLGthbF91aW50MzIgbWVfbWF4X251bSxrYWxfdWludDMyIG1lX2N1cnJlbnRfbnVtLGthbF91aW50MzIgc3JfbWF4X251bSxrYWxfdWludDMyIHNyX2N1cnJlbnRfbnVtLGthbF91aW50OCBzb3VyY2VfaWQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfbWVtX3N0YXR1c19yZXEoa2FsX3VpbnQ4IHNyY19pZCxrYWxfdWludDggbWVtX3N0YXR1cyk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19hdGNtZF9jbWdyX3Jlc19yZXEoa2FsX3VpbnQ4IHNyY19pZCxrYWxfdWludDggcmVzdWx0LGthbF91aW50MTYgY2F1c2Usa2FsX3VpbnQ4IHNvdXJjZV9pZCxrYWxfdWludDggbWVtLCBrYWxfdWludDMyIGluZGV4LCBrYWxfdWludDggc3RhdCwga2FsX3VpbnQxNiBwZHVfbGVuZ3RoLCBrYWxfdWludDggKnBkdSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19hdGNtZF9jbWdsX3Jlc19yZXEoa2FsX3VpbnQ4IHNyY19pZCxrYWxfdWludDggbWVtLCBrYWxfdWludDMyIGluZGV4LCBrYWxfdWludDggc3RhdCwga2FsX3VpbnQxNiBwZHVfbGVuZ3RoLCBrYWxfdWludDggKnBkdSwga2FsX3VpbnQ4IHJlc3VsdCxrYWxfdWludDE2IGNhdXNlLCBrYWxfdWludDggaXNfY29tcGxldGUsIGthbF91aW50OCBzb3VyY2VfaWQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfYXRjbWRfY21nZF9yZXNfcmVxKGthbF91aW50OCBzcmNfaWQsa2FsX3VpbnQ4IHJlc3VsdCwga2FsX3VpbnQxNiBjYXVzZSwga2FsX3VpbnQ4IHNvdXJjZV9pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19hdGNtZF9jbWd3X3Jlc19yZXEoa2FsX3VpbnQ4IHNyY19pZCxrYWxfdWludDMyIGluZGV4LCBrYWxfdWludDggcmVzdWx0LCBrYWxfdWludDE2IGNhdXNlLCBrYWxfdWludDggc291cmNlX2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX2F0Y21kX2Vxc2lfcmVzX3JlcShrYWxfdWludDggc3JjX2lkLGthbF91aW50OCBtZW0sIGthbF91aW50MzIgYmVnaW4sIGthbF91aW50MzIgZW5kLCBrYWxfdWludDMyIHVzZWQsIGthbF91aW50OCBzb3VyY2VfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc19ldHdzX3NldHRpbmdfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF9ib29sIGlzX2V0d3NfbmVlZGVkLCBrYWxfYm9vbCBpc19ldHdzX3NlY3VyaXR5X25lZWRlZCwga2FsX2Jvb2wgaXNfZXR3c190ZXN0aW5nX29uLCBrYWxfYm9vbCB3cml0ZV90b19udnJhbSk7CisKKy8qIF9fSU1TX1NVUFBPUlRfXyAqLworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfaW1zX2V4ZV9zdWJtaXRfcGR1X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDE2IGRhdGFfbGVuLCBrYWxfdWludDE2IGxlbmd0aCwga2FsX3VpbnQ4ICpwZHUsIGthbF9ib29sIHN0a3Ntcyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX2ltc19leGVfc3VibWl0X3RleHRfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBwcm9maWxlLCBrYWxfdWludDE2IHJlcGx5X2luZGV4LCBsNGNfbnVtYmVyX3N0cnVjdCBkZXN0LCBrYWxfdWludDE2IHBhcmEsIGw0Y19udW1iZXJfc3RydWN0IHNjYSwga2FsX3VpbnQ4IHZwLCBzbXNhbF9waWRfZW51bSBwaWQsIGthbF91aW50OCB1ZGhpLCBzbXNhbF9kY3NfZW51bSBkY3MsIGthbF91aW50MTYgbGVuZ3RoLCBrYWxfdWludDggKm1zZywga2FsX3VpbnQ4IHNlcV9udW0sIGthbF91aW50OCBtbXNfbW9kZSwga2FsX3VpbnQ4IHRwX3Nyciwga2FsX3VpbnQ4IHRwX3JwKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfaW1zX2V4ZV9jb21tYW5kX3BkdV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQxNiBkYXRhX2xlbiwga2FsX3VpbnQxNiBsZW5ndGgsIGthbF91aW50OCAqcGR1KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNfaW1zX2V4ZV9jb21tYW5kX3RleHRfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBmbywga2FsX3VpbnQ4IGN0LCBrYWxfdWludDggbW4sIGthbF91aW50OCBwaWQsIGw0Y19udW1iZXJfc3RydWN0IGRlc3QsIGthbF91aW50MTYgbGVuZ3RoLCBrYWxfdWludDggKmNtZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX2ltc19leGVfbXRfcGR1X3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDE2IHBkdV9sZW4sIGthbF91aW50OCAqcGR1X3B0cik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX2ltc19leGVfc21tYV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IG9wLCBrYWxfdWludDggaXNfZnVsbCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX2ltc19leGVfc3RvcmFnZV9wb3N0X3JlcSgKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiByZXBseV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAga2FsX2Jvb2wgYWRkcl9wcmVzZW50LAorICAgICAgICAgICAgICAgICAgICBsNGNfbnVtYmVyX3N0cnVjdCBkZXN0LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggcHJvZmlsZV9ub190YWcsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBwcm9maWxlX25vLAorICAgICAgICAgICAgICAgICAgICBzbXNhbF9kb21haW5fZW51bSBkb21haW4sCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBtc2dfcmVmLAorICAgICAgICAgICAgICAgICAgICBrYWxfYm9vbCBpc19yZXRyeSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zX2ltc19leGVfdXBkYXRlX21zZ2JveChrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggcmVzdWx0LCBrYWxfdWludDggbXIpOworLyogZW5kIG9mIF9fSU1TX1NVUFBPUlRfXyAqLworCitleHRlcm4gdm9pZCBsNGNfc21zX2NvbnRleHRfc3dpdGNoKGw0Y19tZV9yZWNvbmZpZ19lbnVtIHJlY29uZmlnX3R5cGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc2FsX2luaXRfcmVxKGthbF91aW50OCBzcmNfaWQsIHNtc2FsX2luaXRfdHlwZV9lbnVtIGluaXRfdHlwZSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc2FsX3Ntc19lbmRfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBkb21haW4sa2FsX3VpbnQ4IGRpcmVjdGlvbik7CisKKworI2VuZGlmIC8qIF9MNENfU01TX0NNRF9IICovIApkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX3NtdV9jbWQuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y19zbXVfY21kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU5NmJlZgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y19zbXVfY21kLmgKQEAgLTAsMCArMSw0NSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiBsNGNfc211X2NtZC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIFVNT0xZQQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBpcyBpbnRlbmRzIGZvciBWWlcgU0lNIHJlbGF0ZWQgZnVuY3Rpb24gcHJvdG90eXBlCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9MNENfU01VX0NNRF9ICisjZGVmaW5lIF9MNENfU01VX0NNRF9ICisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorCisvLyBWelcgUlNVCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV92endfcnN1X2luaXRpYXRlX3JlcShrYWxfdWludDggc3JjX2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3Z6d19yc3VfcHJvY19sb2NrX2RhdGFfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCAqc2ltX2xvY2tfZGF0YSwga2FsX3VpbnQxNiBkYXRhX2xlbik7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV92endfcnN1X2dldF9sb2NrX3N0YXR1c19yZXEoa2FsX3VpbnQ4ICpzdGF0dXMsIGthbF91aW50MTYgKnVubG9ja190aW1lKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3Z6d19yc3VfZGVsYXlfdGltZXJfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBzdGFydF9zdG9wKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3Z6d19yc3VfZGF0YV9yZXNldF9yZXEobDRjX3NvdXJjZV9pZF9lbnVtIHNyY19pZCk7CisKKy8vIE9QMTI5IFJTVQorZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfb3AxMjlfdXBkYXRlX3NpbV9sb2NrX3NldHRpbmdfcmVxKGthbF91aW50OCBzcmNfaWQsIGthbF9ib29sIGlzX2xhc3RfZGF0YSwga2FsX3VpbnQxNiBvZmZzZXQsIGthbF91aW50MTYgc2xzX2xlbiwga2FsX3VpbnQ4ICpzbHMpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfb3AxMjlfZ2V0X3NpbWxvY2tfZGF0YV9yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGxpc3RfdHlwZSk7CisKKy8vIFRNTyBSU1UgaW4gTW92aWFsIFNvbHV0aW9uCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV90bW9fcnN1X2NyZWF0ZV91bmxvY2tfbXNnX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggdW5sb2NrX3JlcV90eXBlLCBrYWxfdWludDggKmltc2ksIGthbF91aW50OCAqaW1laSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV90bW9fcnN1X3Byb2Nlc3NfbXNnX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKmltZWksIGthbF91aW50MTYgcmF3X2xlbiwga2FsX3VpbnQ4ICpyYXdfbXNnKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3Rtb19yc3VfZ2V0X3NtbF9zdGF0dXNfcmVxKGthbF91aW50OCBzcmNfaWQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXVfdG1vX3JzdV9nZXRfcmVnX21zZ19yZXEoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4ICppbWVpKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc211X3Rtb19yc3VfZ2V0X2FkYXB0ZXJfY29uZmlnX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKnJzdV92ZXJzaW9uX3N0cik7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NtdV90bW9fcnN1X3VwZGF0ZV9ibG9iX3JlcShrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggKnNpbV9sb2NrX2RhdGEsIGthbF91aW50MTYgZGF0YV9sZW4pOworCisjZW5kaWYgLyogX0w0Q19TTVVfQ01EX0ggKi8gCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y19zc19wYXJzZS5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDRjX3NzX3BhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ4NDExMQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y19zc19wYXJzZS5oCkBAIC0wLDAgKzEsMTI5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiBsNGNfc3NfcGFyc2UuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNVDYyMDgKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBUaGlzIGZpbGUgaXMgaW50ZW5kcyBmb3Ig77+9Sy4KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqICBUaGlzIHByb2R1Y3QgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nIGEgcHJvdG9jb2wgc3RhY2sKKyogIGRldmVsb3BlZCBieSBTYXNrZW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgTGltaXRlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9MNENfU1NfUEFSU0VfSAorI2RlZmluZSBfTDRDX1NTX1BBUlNFX0gKKworCisjaW5jbHVkZSAicm1taV9jb250ZXh0LmgiCisjaW5jbHVkZSAicHNfcHVibGljX3N0cnVjdC5oIgorI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisKK3R5cGVkZWYgZW51bQoreworICAgIFNTX0RDU19FTkdMSVNIID0gMHgwZiwKKyAgICBTU19EQ1NfQ0hJTkVTRSA9IDB4MDgKK30gbDRjX3NzX2Rjc19lbnVtOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NzX3N0cmluZ19wYXJzaW5nKAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggZGNzLAorICAgICAgICAgICAgICAgICAgICBybW1pX3N0cmluZ19zdHJ1Y3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBsNGNfc3Nfc3RyaW5nX2luZm9fc3RydWN0ICppbmZvLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggY2FsbF90eXBlLAorICAgICAgICAgICAgICAgICAgICBrYWxfYm9vbCBpc19zaW1fb3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggYWxzX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBlY2NfaW5mbyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc3Nfb3BlcmF0aW9uX3JlcShrYWxfdWludDggc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGRjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBjZl9udW1iZXJfbGVuZ3RoKTsKKwkKK2V4dGVybiBrYWxfYm9vbCBpc19zaW1fc3RyaW5nKGthbF91aW50OCBzcmNfaWQsIHJtbWlfc3RyaW5nX3N0cnVjdCAqaW5wdXQsIGthbF9ib29sICpmb3JtYXRfdmFsaWQsIGthbF91aW50OCAqdHlwZSk7CisKK2V4dGVybiBrYWxfYm9vbCBpc19ncHJzX3N0cmluZyhrYWxfdWludDggc3JjX2lkLCBybW1pX3N0cmluZ19zdHJ1Y3QgKmlucHV0LCBrYWxfYm9vbCAqZm9ybWF0X3ZhbGlkKTsKKworZXh0ZXJuIGthbF9ib29sIGlzX2NjX3N0cmluZygKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAgcm1taV9zdHJpbmdfc3RydWN0ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgbDRjX3NzX3N0cmluZ19pbmZvX3N0cnVjdCAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGNhbGxfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IGFsc190eXBlLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggZWNjX2luZm8pOworCitleHRlcm4ga2FsX2Jvb2wgc2hvcnRfc3RyaW5nX2FzX2NhbGwocm1taV9zdHJpbmdfc3RydWN0ICppbnB1dCwga2FsX3VpbnQ4IGxlbmd0aCk7CisKK2V4dGVybiBrYWxfYm9vbCBzZXR1cF9wZHBfYWN0X3N0cnVjdChrYWxfdWludDggc3JjX2lkLCBybW1pX3N0cmluZ19zdHJ1Y3QgKmlucHV0LCBrYWxfYm9vbCAqZm9ybWF0X3ZhbGlkKTsKKworZXh0ZXJuIGthbF9ib29sIHNldHVwX2lwX3BkcF9hY3Rfc3RydWN0KGthbF91aW50OCBzcmNfaWQsIHJtbWlfc3RyaW5nX3N0cnVjdCAqaW5wdXQsIGthbF9ib29sICpmb3JtYXRfdmFsaWQpOworCitleHRlcm4ga2FsX2Jvb2wgc2V0dXBfc2ltX3N0cnVjdChrYWxfdWludDggc3JjX2lkLCBybW1pX3N0cmluZ19zdHJ1Y3QgKmlucHV0LCBrYWxfdWludDggdHlwZSwga2FsX2Jvb2wgKmZvcm1hdF92YWxpZCk7CisKK2V4dGVybiBrYWxfYm9vbCBzZXR1cF9udW1iZXJfc3RydWN0KGthbF91aW50OCBzcmNfaWQsIHJtbWlfc3RyaW5nX3N0cnVjdCAqaW5wdXQsIGw0Y19zc19zdHJpbmdfaW5mb19zdHJ1Y3QgKmluZm8pOworCitleHRlcm4ga2FsX2Jvb2wgZ2V0X2ludF9iZWZvcmVfc3RhcihybW1pX3N0cmluZ19zdHJ1Y3QgKmlucHV0LCBrYWxfdWludDggKm51bWJlcik7CisKK2V4dGVybiBrYWxfYm9vbCBnZXRfdWludDMyX2JlZm9yZV9zdGFyKHJtbWlfc3RyaW5nX3N0cnVjdCAqaW5wdXQsIGthbF91aW50MzIgKm51bWJlcik7CisKK2V4dGVybiBrYWxfYm9vbCBnZXRfc3RyaW5nX2JlZm9yZV9zdGFyKHJtbWlfc3RyaW5nX3N0cnVjdCAqaW5wdXQsIGthbF91aW50OCAqc3RyaW5nX3B0ciwga2FsX3VpbnQ4IG1heF9sZW5ndGgpOworCitleHRlcm4ga2FsX2Jvb2wgZ2V0X2RuX2JlZm9yZV9zdGFyKHJtbWlfc3RyaW5nX3N0cnVjdCAqaW5wdXQsIGthbF91aW50OCAqc3RyaW5nX3B0cik7CisKK2V4dGVybiBrYWxfYm9vbCBnZXRfZG5fYnlfbGVuZ3RoKHJtbWlfc3RyaW5nX3N0cnVjdCAqaW5wdXQsIGthbF91aW50OCAqc3RyaW5nX3B0ciwga2FsX3VpbnQ4IGRuX2xlbmd0aCk7CisKKy8vIGV4dGVybiBrYWxfYm9vbCBwaGJfaXNfbnVtYmVyX2VjYyhsNF9hZGRyX2JjZF9zdHJ1Y3QgKnRlbF9udW1iZXIpOworI2VuZGlmIC8qIF9MNENfU1NfUEFSU0VfSCAqLworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfdHN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfdHN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxOWRhYgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y190c3QuaApAQCAtMCwwICsxLDExNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiBsNGNfbWVkX21zZy5jCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIHJlcSBhbmQgY25mIGhhbmRsZXJzIGludGVyZmFjaW5nIE1lZGlhIHRhc2sKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqICBUaGlzIHByb2R1Y3QgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nIGEgcHJvdG9jb2wgc3RhY2sKKyogIGRldmVsb3BlZCBieSBTYXNrZW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgTGltaXRlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIEw0Q19UU1RfSAorI2RlZmluZSBMNENfVFNUX0gKKworCisjaW5jbHVkZSAiZGNsLmgiCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiIC8vTVNCQiBjaGFuZ2UgI2luY2x1ZGUgInN0YWNrX2NvbmZpZy5oIgorCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKyNpbmNsdWRlICJsNGNfY29tbW9uX2VudW0uaCIKKworI2lmZGVmIF9fTDRDX0dQUlNfVVRfXworZXh0ZXJuIHZvaWQgbDRjX3V0X2NoZWNrX2w0Y19jb250ZXh0X2luZm8oa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGNpZCwgbDRjX2FjdGlvbl9lbnVtIGFjdGlvbik7CitleHRlcm4gdm9pZCBsNGNfdXRfcmVxdWVzdF90eXBlX2hhbmRvdmVyX3RvX2luaXRpYWxfcmVxdWVzdChrYWxfdWludDggaW5kZXgpOworZXh0ZXJuIHZvaWQgbDRjX3V0X2w0Y19jb252ZXJ0X2RhdGFfc3BlZWRfc3VwcG9ydF9lbnVtKCk7CitleHRlcm4gdm9pZCBsNGNfdXRfY29uZmlnX2NnZGNvbnRyZHBfc2V0X21vZGUoKTsKK2V4dGVybiB2b2lkIGw0Y191dF9jb25maWdfY2dkY29udF9yZWFkX21vZGUoKTsKK2V4dGVybiB2b2lkIGw0Y191dF9jb25maWdfY2dhY3RfcmVhZF9tb2RlKCk7CitleHRlcm4gdm9pZCBsNGNfdXRfY29uZmlnX3BkcF9hZGRyX3JlYWRfbW9kZSgpOworZXh0ZXJuIHZvaWQgbDRjX3V0X2NvbmZpZ19wc2JlYXJlcl9yZWFkX21vZGUoKTsKK2V4dGVybiB2b2lkIGw0Y191dF9jb25maWdfZXBzX3Fvc19yZWFkX21vZGUoKTsKK2V4dGVybiB2b2lkIGw0Y191dF9jb25maWdfY2dlcXJlcV9yZWFkX21vZGUoKTsKK2V4dGVybiB2b2lkIGw0Y191dF9jb25maWdfY2dxcmVxX3JlYWRfbW9kZSgpOworZXh0ZXJuIHZvaWQgbDRjX3V0X2NvbmZpZ19tc3FfcmVhZF9tb2RlKCk7CitleHRlcm4gdm9pZCBsNGNfdXRfY29uZmlnX2NncHJjb19yZWFkX21vZGUoKTsKK2V4dGVybiB2b2lkIGw0Y191dF9jaGVja19pcHY0djZfdGFibGVfYWxsX2ZyZWUodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfdXRfcm1taV9jb252ZXJ0X2wzX2NhdXNlKCk7CisjZW5kaWYKKworLy9leHRlcm4ga2FsX2Jvb2wgbDRjX2NoZWNrX3RzdF9pbmplY3RfY21kX2NvbmZsaWN0KGthbF9jaGFyKiBjbWRfc3RyaW5nKTsKK2V4dGVybiB2b2lkIHRzdF9pbmplY3Rfc3RyaW5nX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfYXR0YWNoX3VhcnRfcG9ydF9yZXEoa2FsX3VpbnQ4IHNyY19pZCwgbW9kdWxlX3R5cGUgbW9kdWxlX2lkLCBVQVJUX1BPUlQgcG9ydCwga2FsX3VpbnQzMiBiYXVkX3JhdGUpOworZXh0ZXJuIGthbF9ib29sIGw0Y19kZXRhY2hfdWFydF9wb3J0X3JlcShrYWxfdWludDggc3JjX2lkLCBtb2R1bGVfdHlwZSBtb2R1bGVfaWQsIFVBUlRfUE9SVCBwb3J0KTsKK2V4dGVybiB2b2lkIGw0Y19vcGVuX3VhcnRfcG9ydF9jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworZXh0ZXJuIHZvaWQgbDRjX2Nsb3NlX3VhcnRfcG9ydF9jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworZXh0ZXJuIGthbF9ib29sIGw0Y19jaGVja19wb3J0X2ZyZWUoa2FsX3VpbnQ4IHBvcnQpOworZXh0ZXJuIHZvaWQgbDRjX3NlbmRfb3Blbl9wb3J0X3JlcShrYWxfdWludDggcG9ydCwga2FsX3VpbnQ4IG1vZHVsZV9pZCwga2FsX3VpbnQzMiBiYXVkX3JhdGUpOworZXh0ZXJuIHZvaWQgbDRjX3NlbmRfY2xvc2VfcG9ydF9yZXEoa2FsX3VpbnQ4IHBvcnQsIGthbF91aW50OCBtb2R1bGVfaWQpOworZXh0ZXJuIGthbF9ib29sIGw0Y190c3RfY2hhbmdlX2xvZ19wb3J0X3JlcShsNGNfc291cmNlX2lkX2VudW0gc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQ0xfREVWIGwxX3BvcnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQ0xfREVWIHBzX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBsb2dfbW9kZSk7CitleHRlcm4gdm9pZCBsNGNfY2hhbmdlX3VhcnRfcG9ydF9jbmZfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqIGxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICogcGVlcl9idWZmX3B0cik7CisgCisKKyAKKworZXh0ZXJuIHZvaWQgbDRjX2Fzc2VydF9ieXBhc3NfdHJhY2VfaW5kX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKiBsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqIHBlZXJfYnVmZl9wdHIpOworCisjaWZuZGVmIF9fTVRLX1RBUkdFVF9fCitleHRlcm4gdm9pZCBsNGNfYXRjaV91dF9ybW1pX2lucHV0X3N0cmluZ19oZGxyKGxvY2FsX3BhcmFfc3RydWN0ICogbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKiBwZWVyX2J1ZmZfcHRyKTsgLy9STU1JX1VUCitleHRlcm4gdm9pZCBsNGNfYXRjaV91dF9ybW1pX2V4cGFuZGVkX2F0X2NvbW1hbmRfaW5wdXRfc3RyaW5nX2hkbHIobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsgLy9fX0w0Q19HUFJTX1VUX18KK2V4dGVybiB2b2lkIGw0Y19pbmplY3Rfc2JwX2NoYW5nZV9pbmRfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworZXh0ZXJuIHZvaWQgbDRjX3V0X3NldF9yYWNfcmF0X21vZGVfY29udGV4dF9pbmRfaGRscihsb2NhbF9wYXJhX3N0cnVjdCAqbG9jYWxfcGFyYV9wdHIsIHBlZXJfYnVmZl9zdHJ1Y3QgKnBlZXJfYnVmZl9wdHIpOworI2VuZGlmCisKKyNlbmRpZiAvKiBMNENfVFNUX0ggKi8gCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w0Y191dGlsaXR5LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfdXRpbGl0eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NDIyOGIKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNGNfdXRpbGl0eS5oCkBAIC0wLDAgKzEsMTA3NSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiBsNGNfdXRpbGl0eS5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1UNjIwOAorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBpcyBpbnRlbmRzIGZvciAuLi4KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqICBUaGlzIHByb2R1Y3QgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nIGEgcHJvdG9jb2wgc3RhY2sKKyogIGRldmVsb3BlZCBieSBTYXNrZW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgTGltaXRlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9MNENfVVRJTElUWV9ICisjZGVmaW5lIF9MNENfVVRJTElUWV9ICisKKyNpbmNsdWRlICJtY2RfbDNfaW5jX3N0cnVjdC5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfZGVmcy5oIiAvL01TQkIgY2hhbmdlICNpbmNsdWRlICJzdGFja19jb25maWcuaCIKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgImxjZF9scXVldWUuaCIKKworI2luY2x1ZGUgInBzX3B1YmxpY19lbnVtLmgiCisjaW5jbHVkZSAibDNfaW5jX2VudW1zX3B1YmxpYy5oIgorI2luY2x1ZGUgIm52cmFtX2VudW1zLmgiCisjaW5jbHVkZSAibDRjX2NvbnRleHQuaCIKKyNpbmNsdWRlICJsNGNfY29tbW9uX2VudW0uaCIKKyNpbmNsdWRlICJsM19pbmNfbG9jYWwuaCIKKyNpbmNsdWRlICJsNGNyYWNfZW51bXMuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfc3RydWN0LmgiCisjaW5jbHVkZSAibDRjMmNzbV9jY19zdHJ1Y3QuaCIKKworI2luY2x1ZGUgInJzdmFzX3N0cnVjdC5oIgorI2luY2x1ZGUgImw0Y19ldmFsX3N0cnVjdC5oIgorI2luY2x1ZGUgImw0Y19ucnJjX3N0cnVjdC5oIgorI2luY2x1ZGUgImltc19jb21tb25fZGVmLmgiCisKKyNpZiBkZWZpbmVkKF9fR0VNSU5JX18pCisjaW5jbHVkZSAibXNwbV9wdWJsaWNfYXBpLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImRjbC5oIgorI2luY2x1ZGUgImZ0X21zZ19sNC5oIgorCisjZGVmaW5lIFVOVVNFRF9QQVJBTSh4KSAvL2lmKHgpCisKK3R5cGVkZWYgZW51bQoreworICAgIEw0Q19CQVNFQkFORF9DT0RFLAorICAgIEw0Q19EU1BfQ09ERSwKKyAgICBMNENfRFNQX1BBVENILAorICAgIEw0Q19TV19DT0RFLAorICAgIEw0Q19IV19DT0RFLAorICAgIEw0Q19GTEFWT1JfQ09ERSA9IDEzLAorICAgIEw0Q19EU1BfTEFCRUwsCisgICAgTDRDX0RTUF9CVUlMRF9USU1FCit9IGw0Y19tc19yZXZpc2lvbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBDT05WRVJUX1RPX0JDRF9OT1JNQUwsCisgICAgQ09OVkVSVF9UT19CQ0RfV0lMRCwKKyAgICBDT05WRVJUX1RPX0JDRF9JR05PUkVfUExVUworfWNvbnZlcnRfdG9fYmNkX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIENPTlZFUlRfVE9fRElHSVRfTk9STUFMLAorICAgIENPTlZFUlRfVE9fRElHSVRfV0lMRCwKKyAgICBDT05WRVJUX1RPX0RJR0lUX0VYVCwKKyAgICBDT05WRVJUX1RPX0RJR0lUXzI0MDA4Cit9Y29udmVydF90b19kaWdpdF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBMNENfUkVGUkVTSF9DU1AgPSAweDAxLAorICAgIEw0Q19SRUZSRVNIX1JBVCA9IDB4MDIKK31sNGNfc2ltX3JlZnJlc2hfZmlsZV9lbnVtOworCisKK3R5cGVkZWYgc3RydWN0IF9DUkVFX01BUF9FTlRSWQoreworICAgIHVuc2lnbmVkIGludCBpbmRleDsKKyAgICB1bnNpZ25lZCBjaGFyICpjcmVlX3N0cjsKK30gQ1JFRV9NQVBfRU5UUlk7CisKK2V4dGVybiBrYWxfYm9vbCBpc19wcm9wZXJfb3duZXIoa2FsX3VpbnQ4IHNyY19pZCk7CisvLyBtdGswMjUxNF9waGIKKyNkZWZpbmUgY29udmVydF90b19iY2Qoc291cmNlLCBkZXN0LCBtYXhfZGVzdF9sZW4pIGNvbnZlcnRfdG9fZ2VuZXJhbF9iY2Qoc291cmNlLCBkZXN0LCBtYXhfZGVzdF9sZW4sIENPTlZFUlRfVE9fQkNEX05PUk1BTCkKKyNkZWZpbmUgY29udmVydF90b19iY2Rfd2lsZChzb3VyY2UsIGRlc3QsIG1heF9kZXN0X2xlbikgY29udmVydF90b19nZW5lcmFsX2JjZChzb3VyY2UsIGRlc3QsIG1heF9kZXN0X2xlbiwgQ09OVkVSVF9UT19CQ0RfV0lMRCkKK2V4dGVybiBrYWxfdWludDggY29udmVydF90b19nZW5lcmFsX2JjZChrYWxfdWludDggKnNvdXJjZSwga2FsX3VpbnQ4ICpkZXN0LCBrYWxfdWludDggbWF4X2Rlc3RfbGVuLCBrYWxfdWludDggdHlwZSk7CisKKworI2RlZmluZSBjb252ZXJ0X3RvX2RpZ2l0KHNvdXJjZSwgZGVzdCkgY29udmVydF90b19nZW5lcmFsX2RpZ2l0KHNvdXJjZSwgZGVzdCwgQ09OVkVSVF9UT19ESUdJVF9OT1JNQUwpCisjZGVmaW5lIGNvbnZlcnRfdG9fZGlnaXRfd2l0aF9sZW4oc291cmNlLCBkZXN0LCBsZW4pIGNvbnZlcnRfdG9fZ2VuZXJhbF9kaWdpdF93aXRoX2xlbihzb3VyY2UsIGRlc3QsIGxlbikKKyNkZWZpbmUgY29udmVydF90b19kaWdpdF93aWxkKHNvdXJjZSwgZGVzdCkgY29udmVydF90b19nZW5lcmFsX2RpZ2l0KHNvdXJjZSwgZGVzdCwgQ09OVkVSVF9UT19ESUdJVF9XSUxEKQorI2RlZmluZSBjb252ZXJ0X3RvX2RpZ2l0X2V4dChzb3VyY2UsIGRlc3QpIGNvbnZlcnRfdG9fZ2VuZXJhbF9kaWdpdChzb3VyY2UsIGRlc3QsIENPTlZFUlRfVE9fRElHSVRfRVhUKQorI2RlZmluZSBjb252ZXJ0X3RvX2RpZ2l0XzI0MDA4KHNvdXJjZSwgZGVzdCkgY29udmVydF90b19nZW5lcmFsX2RpZ2l0KHNvdXJjZSwgZGVzdCwgQ09OVkVSVF9UT19ESUdJVF8yNDAwOCkKKworI2RlZmluZSBMNENfREVDTEFSRV9BTkRfQ09OU1RSVUNUX0xPQ0FMX1BBUkFNKHN0cnVjdF90eXBlLCB2YXIsIGluaXRfdHlwZSkgXAorICAgIHN0cnVjdF90eXBlKiB2YXIgPSAoc3RydWN0X3R5cGUqKWNvbnN0cnVjdF9sb2NhbF9wYXJhKHNpemVvZihzdHJ1Y3RfdHlwZSksaW5pdF90eXBlKSAvL01BVUlfMDI5MDA0NzUKKworCisjZGVmaW5lIFJFVFVSTl9XSVRIX0w0Q19UUkMoUkVUVVJOX1ZBTFVFKSBcCisgICAgbDRjX3RyYWNlX2Z1bmN0aW9uX25hbWVfYW5kX3JldHVybl9saW5lKF9fRlVOQ1RJT05fXywgX19MSU5FX18sIFJFVFVSTl9WQUxVRSk7IFwKKyAgICByZXR1cm4gUkVUVVJOX1ZBTFVFOworCisKKyNkZWZpbmUgbDRjX3BzX2RpYWx1cF9kaXNjX3JlcShhLGIsYykge30KKwordHlwZWRlZiB2b2lkICgqIGw0Y190aW1lcl9mdW5jX3B0cikodm9pZCApOworCitleHRlcm4ga2FsX3VpbnQ4IGNvbnZlcnRfdG9fZ2VuZXJhbF9kaWdpdChrYWxfdWludDggKnNvdXJjZSwga2FsX3VpbnQ4ICpkZXN0LCBrYWxfdWludDggdHlwZSk7CisKK2V4dGVybiBrYWxfdWludDggY29udmVydF90b19nZW5lcmFsX2RpZ2l0X3dpdGhfbGVuKGthbF91aW50OCAqc291cmNlLCBrYWxfdWludDggKmRlc3QsIGthbF91aW50OCBsZW4pOworCitleHRlcm4ga2FsX3VpbnQ4IHBsbW5fY29udmVydF90b19iY2Qoa2FsX3VpbnQ4ICpzb3VyY2UsIGthbF91aW50OCAqZGVzdCk7CisKK2V4dGVybiBrYWxfdWludDggcGxtbl9jb252ZXJ0X3RvX3N0cnVjdChrYWxfdWludDggKnNvdXJjZSwgcGxtbl9pZF9yYXRfc3RydWN0ICpkZXN0KTsKKworZXh0ZXJuIGthbF91aW50OCBwbG1uX2NvbnZlcnRfdG9fZGlnaXQocGxtbl9pZF9zdHJ1Y3QgKnNvdXJjZSwga2FsX3VpbnQ4ICpkZXN0KTsKKworZXh0ZXJuIGthbF9ib29sIHBsbW5fY29udmVydF9pbnRfdG9fc3RydWN0KGthbF91aW50OCBwbG1uX251bSwga2FsX3VpbnQzMiBwbG1uX2lkLCBwbG1uX2lkX3N0cnVjdCAqZGVzdCk7CisKKy8vTUFVSV8wMjg4NDA5MyBleHRlcm4ga2FsX2Jvb2wgc3Nfc3RyaW5nX3NraXBfcGx1cyhrYWxfdWludDggKnNvdXJjZSwga2FsX3VpbnQ4ICpkZXN0KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jb25zdHJ1Y3RfcGhiX2FwcHJvdmVfc3RyKGthbF91aW50OCAqc291cmNlLCBrYWxfdWludDggbGVuZ3RoKTsgLy9NQVVJXzAyODg0MDkzCisKK2V4dGVybiBrYWxfdWludDggZ2V0X2JjZF9ieXRlKGthbF91aW50OCBkaWdpdCwga2FsX3VpbnQ4IHR5cGUpOworCitleHRlcm4ga2FsX3VpbnQ4IGdldF9jaF9ieXRlKGthbF91aW50OCBiY2QsIGthbF91aW50OCB0eXBlKTsKKworZXh0ZXJuIGthbF91aW50OCBnZXRfY2hfYnl0ZV9yYXcoa2FsX3VpbnQ4IGJjZCwga2FsX3VpbnQ4IHR5cGUpOworCitleHRlcm4ga2FsX3VpbnQ4IGdldF9jaF9ieXRlXzI0MDA4KGthbF91aW50OCBiY2QpOworCitleHRlcm4ga2FsX2Jvb2wgaXNfY21kX2NvbmZsaWN0KGthbF91aW50OCBzcmNfaWQsIGthbF91aW50MTYgYWN0aW9uKTsKKworZXh0ZXJuIGthbF9ib29sIGlzX2VxX2NtZF9jb25mbGljdChrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDE2IGFjdGlvbik7CisKK2V4dGVybiBrYWxfYm9vbCBpc19waGJfY21kX2NvbmZsaWN0KGthbF91aW50OCBzcmNfaWQsIGthbF91aW50MTYgYWN0aW9uKTsKKworZXh0ZXJuIGthbF9ib29sIGlzX3Ntc19jbWRfY29uZmxpY3Qoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQxNiBhY3Rpb24pOworCitleHRlcm4ga2FsX2Jvb2wgaXNfc3NfY21kX2NvbmZsaWN0KGthbF91aW50OCBzcmNfaWQsIGthbF91aW50MTYgYWN0aW9uKTsKKworZXh0ZXJuIGthbF9ib29sIGlzX3JhY19jbWRfY29uZmxpY3Qoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQxNiBhY3Rpb24pOworCitleHRlcm4ga2FsX2Jvb2wgaXNfcmFjX2VndHlwZV9yZWdfY29uZmxpY3Qodm9pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBpc19yYWNfdGNtX2NtZF9jb25mbGljdChrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGlzX2w0Y19wc19hZGRpdGlvbmFsX3Bkbl9hY3RpdmF0ZV9jb25mbGljdChrYWxfdWludDMyIGFwbl90eXBlKTsKKworZXh0ZXJuIGthbF9ib29sIGlzX2w0Y19ud19wbG1uX2xpc3Rfb25nb2luZyhwcm90b2NvbF9pZF9lbnVtIHByb3RvY29sX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGlzX3NtdV9jbWRfY29uZmxpY3Qoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQxNiBhY3Rpb24pOworCitleHRlcm4gbDRjX2dwcnNfY21kX2NvbmZsaWN0X2NhdXNlX2VudW0gbDRjX3BzX2NoZWNrX2NtZF9jb25mbGljdChrYWxfdWludDMyIGNoZWNrX2JpdG1hcCwga2FsX3VpbnQ4IGNpZCwga2FsX3VpbnQ4IHNyY19pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfY2hlY2tfY2NfY3VycmVudF9hY3Rpb25fY29uZmxpY3Qoa2FsX3VpbnQ4IHNyY19pZCk7CisKK2V4dGVybiBsNGNfZ3Byc19jbWRfY29uZmxpY3RfY2F1c2VfZW51bSBpc19sNGNfcHNfc2V0X2NtZF9jb25mbGljdChrYWxfdWludDggY2lkLCBrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDE2IGFjdGlvbik7IC8vbWF1aV8wMTg5NTY5MywgbXRrMDIyODUKKworZXh0ZXJuIGw0Y19hY3Rpb25fZW51bSBsNGNfcHNfZ2V0X2FjdGlvbl9ieV9jaWRfbl9zcmMoa2FsX3VpbnQ4IGNpZCwga2FsX3VpbnQ4IHNyY19pZCk7CitleHRlcm4gbDRjX2FjdGlvbl9lbnVtIGw0Y19wc19nZXRfYWN0aW9uX2J5X2NpZChrYWxfdWludDggY2lkKTsKK2V4dGVybiBsNGNfYWN0aW9uX2VudW0gbDRjX3BzX2dldF9hY3Rpb25fYnlfc3JjKGthbF91aW50OCBzcmNfaWQpOworZXh0ZXJuIGthbF91aW50OCBsNGNfcHNfZ2V0X3NyY19ieV9jaWRfbl9hY3Rpb24oa2FsX3VpbnQ4IGNpZCwgbDRjX2FjdGlvbl9lbnVtIGFjdGlvbik7CitleHRlcm4ga2FsX3VpbnQ4IGw0Y19wc19nZXRfc3JjX2Zvcl9zZXRfY21kKGthbF91aW50OCBjaWQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19jaGVja19pc19zcmNfZnJlZShrYWxfdWludDggc3JjX2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfY2hlY2tfaXNfY2lkX2ZyZWUoa2FsX3VpbnQ4IGNpZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2NoZWNrX2lzX3RhYmxlX2ZyZWUoKTsKK2V4dGVybiBsNGNfdGNtX2ludGVybmFsX2NpZF9zdGF0ZSBsNGNfcHNfZ2V0X3N0YXRlX2J5X2NpZChrYWxfdWludDggY2lkKTsKK2V4dGVybiB2b2lkIGw0Y19wc19zZXRfYWN0aW9uKGthbF91aW50OCBjaWQsIGthbF91aW50OCBzcmNfaWQsIGthbF91aW50MTYgYWN0aW9uKTsKK2V4dGVybiB2b2lkIGw0Y19wc19jbGVhbl9jaWRfYWN0aW9uKGthbF91aW50OCBjaWQpOworZXh0ZXJuIHZvaWQgbDRjX3BzX2NsZWFuX3NyY19hY3Rpb24oa2FsX3VpbnQ4IHNyY19pZCk7CitleHRlcm4gdm9pZCBsNGNfcHNfcHJpbnRfYWN0aW9uX3RhYmxlKCk7CisKK2V4dGVybiB2b2lkIGw0Y19wc19zZXRfdnp3X2Fwbl9lbmFibGVfYml0bWFwKGthbF91aW50OCBjbGFzc19udW0sIGthbF9ib29sIGlzX2VuYWJsZSApOworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19jaGVja19pZl9ib3RoX2NsYXNzXzFfYW5kX2NsYXNzXzJfYXJlX2VuYWJsZSgpOworZXh0ZXJuIHZvaWQgbDRjX3BzX2NsZWFyX3Z6d19hcG5fZW5hYmxlX2JpdG1hcCgpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2lzX2RhdGFfYWxsb3dlZChwcm90b2NvbF9pZF9lbnVtIHByb3RvY29sX2lkKTsKKworI2lmZGVmIF9fVEMxMF9fCitleHRlcm4gbDRjX3FjaV9pbmZvX3N0cnVjdCAqbDRjX3BzX2dldF9xY2lfYnlfY29udGV4dF9pZCgga2FsX3VpbnQ4IGNvbnRleHRfaWQgKTsKK2V4dGVybiB2b2lkIGw0Y19wc19zZXRfcWNpX2luZm8oa2FsX3VpbnQ4IGNpZCwga2FsX3VpbnQ4IHFjaSk7CitleHRlcm4gdm9pZCBsNGNfcHNfZ2V0X2N1cnJlbnRfcGxtbl9pZF9mcm9tX3NpbShrYWxfY2hhciAqc2ltX3BsbW4pOworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19pc19wbG1uX2lkZW50aWNhbChrYWxfY2hhciAqcGxtbjFfcHRyLCBrYWxfY2hhciAqcGxtbjJfcHRyKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfaXNfZmRuX2NoZWNrX25vdF9uZWVkZWRfaW5fcGxtbnMoY29uc3Qga2FsX2NoYXIgKmZkbl9vbWl0X3BsbW4pOworZXh0ZXJuIGthbF9ib29sIGw0Y19wc19pc19mZG5fY2hlY2tfbm90X25lZWRlZF9mb3JfcGxtbih2b2lkKTsKKworI2VuZGlmIC8qX19UQzEwX18qLworCisjaWYgMCAvL2RlZiBfX0NUTV9TVVBQT1JUX18KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NlYXJjaF9hbGxfc3JjKG1vZHVsZV90eXBlIHdoaWNoX3NpbSwga2FsX3VpbnQxNiBhY3Rpb24pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NlYXJjaF9hbGxfc3JjX2V4dChtb2R1bGVfdHlwZSB3aGljaF9zaW0sIGthbF91aW50MTYgYWN0aW9uLCBrYWxfdWludDggKnNyY19pZCk7IC8vTUFVSV8wMjU1NDA2OAorCitleHRlcm4ga2FsX2Jvb2wgbDRjX3NlYXJjaF9vdGhlcl9zcmMoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQxNiBhY3Rpb24pOworCitleHRlcm4ga2FsX3VpbnQ4IGw0Y19jb25mbGljdF9zZWFyY2goa2FsX3VpbnQxNiB2YWwpOworCitleHRlcm4gdm9pZCBsNGNfY211eF9zdGFydHVwX3JlcShVQVJUX1BPUlQgcG9ydCk7CisKK2V4dGVybiB2b2lkIGw0Y19jbXV4X2Nsb3NlZG93bl9yZXEodm9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19zdGFydF9yZXRyeV90aW1lcl9oZGxyKGthbF91aW50OCBzcmNfaWQpOworCisvL210azAxNjE2XzA3MDUxNSA6IHN0YXJ0IDEgc2VjIHJldHJ5IHRpbWVyIGZybyBzcyBjaGFuZ2UgcGhhc2UgcmVxdWVzdAorZXh0ZXJuIHZvaWQgbDRjX3N0YXJ0X2NoYW5nZV9waGFzZV9yZXRyeV90aW1lcl9oZGxyKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4gdm9pZCBsNGNfc2F0X2ZpbGVfY2hhbmdlX2hkbHIoa2FsX3VpbnQ4IHNyY19pZCk7CisKKyNpZmRlZiBfX1RDMTBfXworZXh0ZXJuIGthbF9ib29sIGw0Y19zYXRfbmVlZF9jaGVja19mZG4oc2F0X2NhbGxfY3RybF90eXBlX25vdGlfZW51bSB0eXBlKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2F0X2lzX2FscmVhZHlfY3RybF9ieV9zaW0oc2F0X2NhbGxfY3RybF90eXBlX25vdGlfZW51bSB0eXBlKTsKKyNlbmRpZgorCitleHRlcm4ga2FsX2Jvb2wgbDRjX25lZWRfcmV0cnkoa2FsX3VpbnQxNiBjYXVzZSk7CisKK2V4dGVybiB2b2lkIGw0Y19yZXRyeV9oZGxyKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGNfc2VuZF9tc2dfaGRscihrYWxfdWludDggc3JjX2lkLCBrYWxfdWludDggb3BlcmF0aW9uKTsKKworZXh0ZXJuIGthbF9ib29sIGNoZWNrX211bHRpX2NvbW1hbmQoa2FsX3VpbnQ4IHJlc3VsdCk7CisKK2V4dGVybiB2b2lkIGw0Y19ncHJzX3NlbmRfZGF0YV90aW1lcl9oZGxyKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGNfZ3Byc19kYXRhX3RpbWVvdXRfaGRscih2b2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX2dwcnNfY29ubmVjdGlvbl90aW1lcl9oZGxyKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGNfZ3Byc19jb25uZWN0aW9uX3RpbWVyb3V0X2hkbHIodm9pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX3Bvd2Vyb2ZmX2RvbmUodm9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19zaW1fcG93ZXJvZmZfdGltZXJfaGRscih2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19zaW1fcG93ZXJvZmZfdGltZXJvdXRfaGRscih2b2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX2FsbF9wb3dlcm9mZl9kb25lKHZvaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2RpYWx1cF9jaGVja19leGlzdGVuY2Uoa2FsX3VpbnQ4IHNpbV9pZCk7CitleHRlcm4ga2FsX3VpbnQ4IGw0Y19wc19kaWFsdXBfZ2V0X2NpZChrYWxfdWludDE2IHBvcnQpOworZXh0ZXJuIGthbF91aW50MTYgbDRjX3BzX2RpYWx1cF9nZXRfcG9ydChrYWxfdWludDggY2lkKTsKK2V4dGVybiB2b2lkIGw0Y19wc19kaWFsdXBfcmVzZXRfcG9ydDJjaWQoa2FsX3VpbnQ4IGNpZCk7CitleHRlcm4gdm9pZCBsNGNfcHNfZGlhbHVwX3NldF9wb3J0MmNpZChrYWxfdWludDE2IHBvcnQsa2FsX3VpbnQ4IGNpZCk7CisKK2V4dGVybiBsNGNfZGF0YV9iZWFyZXJfY2FwYWJsaWxpdHlfZW51bSBsNGNfY29udmVydF9kYXRhX3NwZWVkX3N1cHBvcnRfZW51bShkYXRhX3NwZWVkX2FjdGl2YXRlX2VudW0gbG93X2xheWVyX3ZhbHVlKTsKK2V4dGVybiB2b2lkIGw0Y19wc191cGRhdGVfZ3Byc19zdGF0dXMobDRjX2hhbmRsZXJfYWN0aW9uX2VudW0gYWN0aW9uKTsKK2V4dGVybiB2b2lkIGw0Y19wc191cGRhdGVfb3ZlcmFsbF9wZHBfc3RhdHVzX3RvX3NpbShsNGNfZ3Byc19zdGF0dXNfZW51bSAqbGFzdF9zdGF0dXMsIGw0Y19ncHJzX3N0YXR1c19lbnVtIGN1cnJlbnRfc3RhdHVzKTsKK2V4dGVybiB2b2lkIGw0Y19zZXRfdm9pY2VfY2VudHJpY19mcm9tX3JhYyhrYWxfYm9vbCBpc192b2ljZV9jZW50cmljX2VuYWJsZSk7CisvLyBleHRlcm4ga2FsX2Jvb2wgbDRjX3BzX2NoZWNrX25lZWRfdG9fdHJhbnNmZXJfcGRuX3RvX2VocnBkKCk7CisKK2V4dGVybiBrYWxfdWludDggbDRjX3BzX2Fwbl9jaGFyX3RvX3VwcGVyKGthbF91aW50OCBjKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfcHNfYXBuX2VxdWFsKGthbF91aW50OCBsZW4sIGthbF91aW50OCAqYXBuMSwga2FsX3VpbnQ4ICphcG4yKTsKKworZXh0ZXJuIGthbF9ib29sIGdldF9tc19yZXZpc2lvbihrYWxfdWludDggZXF1aXBfdHlwZSwga2FsX3VpbnQ4ICplcXVpcF9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19jb252ZXJ0X3Jlc3VsdChrYWxfdWludDggbDRjX3Jlc3VsdCwga2FsX3VpbnQxNiBsNGNfY2F1c2UsIGthbF9ib29sICpyZXN1bHQsIGthbF91aW50MTYgKmNhdXNlKTsKKworZXh0ZXJuIGthbF91aW50OCBsNGNfY2hlY2tfcG9ydF9vd25lcl9zb3VyY2Uoa2FsX3VpbnQ4IHBvcnQpOworCitleHRlcm4gdm9pZCBsNGNfc2V0X3VzZXJfYWN0aW9uKGthbF91aW50OCBtb2QsIGthbF91aW50OCB1c2VyLCBrYWxfdWludDE2IGFjdGlvbik7CisKK2V4dGVybiB2b2lkIGw0Y19zZXRfdGNtX3VzZXJfYWN0aW9uKGthbF91aW50OCBjaWQsIGthbF91aW50OCBzcmNfaWQsIGthbF91aW50MTYgYWN0aW9uKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19jaGVja191c2VyX2FjdGlvbihrYWxfdWludDggbW9kLCBrYWxfdWludDggdXNlciwga2FsX3VpbnQxNiBhY3Rpb24pOworCitleHRlcm4gdm9pZCBsNGNfY2xlYXJfYWxsX2NjX2FjdGlvbigpOworCisjaWZkZWYgX19BUFBfU0VDT05EQVJZX1BEUF9TVVBQT1JUX18KK2V4dGVybiBrYWxfYm9vbCBsNGNfZmluZF9mcmVlX3BkcF9jb250ZXh0KGthbF91aW50OCAqY2lkLCBrYWxfdWludDggcGlkLCBrYWxfdWludDggcW9zX2lkKTsKK2V4dGVybiB2b2lkIGw0Y19maW5kX3BkcF9waWQyY2lkKGthbF91aW50OCAqY2lkLCBrYWxfdWludDggcGlkLCBrYWxfdWludDggcW9zX2lkKTsKK2V4dGVybiB2b2lkIGw0Y19mcmVlX3BkcF9jb250ZXh0KGthbF91aW50OCBjaWQsIGthbF91aW50OCAqcGlkLCBrYWxfdWludDggKnFvc19pZCk7CisjZWxzZSAvKiBfX0FQUF9TRUNPTkRBUllfUERQX1NVUFBPUlRfXyAqLworZXh0ZXJuIGthbF9ib29sIGw0Y19maW5kX2ZyZWVfcGRwX2NvbnRleHQoa2FsX3VpbnQ4ICpjaWQsIGthbF91aW50OCBwaWQpOworCitleHRlcm4gdm9pZCBsNGNfZmluZF9wZHBfcGlkMmNpZChrYWxfdWludDggKmNpZCwga2FsX3VpbnQ4IHBpZCk7CisKK2V4dGVybiB2b2lkIGw0Y19mcmVlX3BkcF9jb250ZXh0KGthbF91aW50OCBjaWQsIGthbF91aW50OCAqcGlkKTsKKyNlbmRpZiAvKiBfX0FQUF9TRUNPTkRBUllfUERQX1NVUFBPUlRfXyAqLworCitleHRlcm4ga2FsX3VpbnQ4IGw0Y19maW5kX3BkcF9jaWQycGlkKGthbF91aW50OCBjaWQpOworCitleHRlcm4gdm9pZCBsNGNfQ29udmVydEdTTTdCaXREZWZhdWx0RW5jb2RpbmdUb0FzY2lpKAorICAgICAgICAgICAgICAgIGthbF91aW50OCAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICBrYWxfdWludDggKm1zZywKKyAgICAgICAgICAgICAgICBrYWxfdWludDE2IGxlbmd0aCwKKyAgICAgICAgICAgICAgICBrYWxfdWludDE2ICpvdXRMZW4pOworCitleHRlcm4gdm9pZCBsNGNfc2V0X2Rvd25sb2FkX3BhdGgoa2FsX3djaGFyICpkb3dubGFvZF9wYXRoKTsKKworZXh0ZXJuIGthbF9ib29sIGhhc19hbnlfY3VycmVudF9hY3Rpb24oa2FsX3VpbnQ4IHNyY19pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBoYXNfYW55X3NyY19pbl9hY3Rpb24oa2FsX3VpbnQ4IG1vZCwga2FsX3VpbnQxNiBhY3Rpb24pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NoZWNrX29ubGluZV9zdGF0ZShrYWxfdWludDggKm9ubGluZV9zcmNfaWQsIGthbF91aW50OCBzdGF0ZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfaXNfc3JjX2Zyb21fcm1taShrYWxfdWludDggc3JjX2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfaXNfc3JjX2Zyb21fdmRtKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3ByZXZpb3VzX3JhY19hY3Rpb25fcnNwKGthbF91aW50MTYgbmV4dF9hY3Rpb24pOworCisvL2V4dGVybiB2b2lkIGw0Y19jbGVhcl9jb25jYXRfc21zX2FycmF5ICh2b2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfbW1pX3Jlc3VsdChrYWxfdWludDggcmVzdWx0KTsKKworZXh0ZXJuIHZvaWQgbDRjX3NldF9tdF9jYWxsX2V2ZW50KGthbF9ib29sIG10X2NhbGxfZXhpc3Qsa2FsX3VpbnQ4IG10X2NhbGxfaWQpOworCitleHRlcm4gdm9pZCBsNGNfdXBkYXRlX3JldHJ5X2NhbGxfc3RhdGVfaW5kKGthbF91aW50OCBjYWxsX2lkLGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4gdm9pZCBsNGNfc2VuZF9jYWxsaWRfYXNzaWduX2ZhaWxfaW5kKGthbF91aW50OCBzcmNfaWQsa2FsX3VpbnQ4IGNhbGxfaWQsa2FsX3VpbnQxNiBjYXVzZSk7CisKKworZXh0ZXJuIHZvaWQgbDRjX2N0cmxfZGNkX3N0YXR1cyhrYWxfdWludDggc3JjX2lkLCBtb2R1bGVfdHlwZSBvd25lcmlkKTsKKworZXh0ZXJuIHZvaWQgbDRjX2NoZWNrX2NpbmRfc3RhdHVzKGthbF91aW50OCAqY2FsbCwga2FsX3VpbnQ4ICpzZXJ2aWNlLCBrYWxfdWludDggKmNhbGxzZXR1cCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2hlY2tfZHVhbF9zaW1fc3RhdGUobW9kdWxlX3R5cGUgY3VycmVudF9tb2RfaWQsIGthbF91aW50OCBjZnVuX3N0YXRlKTsKKworZXh0ZXJuIHZvaWQgbDRjX2NoZWNrX2R1YWxfc2ltX2luc2VydF9zdGF0dXMobW9kdWxlX3R5cGUgbW9kX2lkLCBrYWxfdWludDggc2ltX2luc2VydGVkX3N0YXR1cyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2VuZF9kdWFsX3NpbV9wb3dlcl9vbl9pbmQoa2FsX3VpbnQ4IHNyY19pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19jb250ZXh0X3NlbGVjdGlvbihrYWxfdWludDggc2ltX2ludGVyZmFjZSk7CitleHRlcm4ga2FsX3VpbnQ4IGw0Y19nZXRfYnRfaGZfYXRkX2FjdGlvbih2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y191bmlmaWVkX2NpZXZfc3RhdXMoa2FsX3VpbnQ4ICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnNpZ25hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4ICpyb2FtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqY2FsbHNldHVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmNhbGxoZWxkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19pc190ZXN0X3NpbSh2b2lkKTsKKyNpZmRlZiBfX1ZTSU1fXworZXh0ZXJuIGthbF9ib29sIGw0Y19pc192c2ltX29uKHZvaWQpOworI2lmIGRlZmluZWQgKF9fR0VNSU5JX18pCitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX3ZzaW1fYXV0aF9vbihrYWxfdWludDggc2ltSW50ZXJmYWNlKTsKKyNlbHNlCitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX3ZzaW1fYXV0aF9vbih2b2lkKTsKKyNlbmRpZgorZXh0ZXJuIGthbF91aW50OCBsNGNfcmVhZF92c2ltX3Byb2ZpbGVpZChrYWxfdWludDggc2ltSW50ZXJmYWNlKTsKK2V4dGVybiBrYWxfdWludDggbDRjX3JlYWRfdnNpbV90eXBlKGthbF91aW50OCBzaW1JbnRlcmZhY2UsIGthbF91aW50OCBwcm9maWxlX2lkKTsKK2V4dGVybiBrYWxfdWludDggbDRjX3JlYWRfdnNpbV9hdXRoX2FsZ28oa2FsX3VpbnQ4IHNpbUludGVyZmFjZSwga2FsX3VpbnQ4IHByb2ZpbGVfaWQpOworZXh0ZXJuIHZvaWQgbDRjX3JlYWRfdnNpbV9hdXRoX3JlcyhrYWxfdWludDggc2ltSW50ZXJmYWNlLCBrYWxfdWludDggcHJvZmlsZV9pZCwga2FsX3VpbnQxNiAqYXV0aF9sZW4sIGthbF91aW50OCAqYXV0aF9yZXMpOworZXh0ZXJuIHZzaW1fdmVyX3R5cGVfZW51bSBsNGNfcmVhZF92c2ltX3ZlcihrYWxfdWludDggc2ltSW50ZXJmYWNlKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfaXNfcmF0X3ZzaW1fY29uZmxpY3Qoa2FsX3VpbnQ4IHByb2ZpbGVfaWQpOworI2VuZGlmCitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX3ZzaW1fc2tpcF9zZWN1cml0eShwcm90b2NvbF9pZF9lbnVtIHByb3RvY29sX2lkKTsKK2V4dGVybiBrYWxfdWludDggbDRjX2NoZWNrX3NpbV9zdGF0dXModm9pZCk7CitleHRlcm4gbDRjX3NpbV9zdGF0dXNfZW51bSBsNGNfZ2V0X3NpbV9zdGF0dXModm9pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2NoZWNrX2F1dG9fZHRtZl9tb2RpZmllcihrYWxfdWludDggY2gpOworZXh0ZXJuIGthbF91aW50OCBsNGNfZ2V0X2NmdW5fc3RhdGUodm9pZCk7CitleHRlcm4ga2FsX3VpbnQ4IGw0Y19nZXRfY2Z1bl9zdGF0ZV9ieV9wcm90b2NvbF9pZChwcm90b2NvbF9pZF9lbnVtIHByb3RvY29sX2lkKTsKKworZXh0ZXJuIGthbF91aW50OCBsNF9jdXN0b21fYXBwcm92YWxfdHlwZShrYWxfdWludDggb3BlcmF0aW9uX3R5cGUsa2FsX3VpbnQ4IHNyY19pZCk7CisKKworZXh0ZXJuIHZvaWQgbDRjX3BoYl9mb3JtYXRfYWxwaGFfaWQodm9pZCAqYWxwaGFfaWQsIGthbF91aW50OCAqcnNwX3N0cmluZyk7CitleHRlcm4gdm9pZCBsNGNfcGhiX2F0ZF9tZW1fZGlhbChrYWxfdWludDggKnRlbF9udW1iZXIsIGthbF91aW50OCB0b24pOworZXh0ZXJuIHZvaWQgbDRjX3BoYl9zZXRfcmVzdWx0X2NvZGUoa2FsX3VpbnQ4IHBoYl9yZXN1bHQsIGthbF91aW50MTYgcGhiX2NhdXNlLCB2b2lkICpyZXN1bHQsIGthbF91aW50OCBvdGhlcl9jb25kKTsKK2V4dGVybiB2b2lkIGw0Y19waGJfc2V0X3RlbF9udW1iZXIodm9pZCAqcGhiX3RlbCwgdm9pZCAqbDRjX3BoYl90ZWwsIGNvbnZlcnRfdG9fYmNkX2VudW0gY29udmVydF9tZXRob2QpOworZXh0ZXJuIHBoYl9zdG9yYWdlX2VudW0gbDRjX3BoYl9nZXRfc2ltX3N0b3JhZ2VfYnlfY3VycmVudF9tb2R1bGUodm9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19yZXNldF9zbXNfY29udGV4dCgpOworCitleHRlcm4gdm9pZCBsNGNfYWN0aXZhdGVfc3ViX21vZHVsZXMoa2FsX3VpbnQ4IHNyY19pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19yZXNldF9zdWJfbW9kdWxlcyhsNGNfc3ViX21vZHVsZV9lbnVtIHN1Yl9tb2QsIGthbF9ib29sIGlzX2Zkbl9jaGFuZ2UpOworCitleHRlcm4gdm9pZCBsNGNfY2xlYXJfcG93ZXJvbl9hY3Rpb24oa2FsX3VpbnQ4IHNyY19pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19ud19zeXNjb25maWdfdXBkYXRlKGthbF91aW50OCBzcmNfaWQpOworCitleHRlcm4gdm9pZCBsNGNfbndfc3lzc2VsX3VwZGF0ZShrYWxfdWludDggc3JjX2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX3NhdmVfc3lzc2VsX3NldHRpbmcoa2FsX3VpbnQ4IHNyY19pZCwga2FsX3VpbnQ4IGJhbmQpOworCitleHRlcm4gdm9pZCogbDRjX2NvbnN0cnVjdF9udnJhbV93cml0ZV9sb2NhbF9wYXJhKGthbF91aW50OCBhY2Nlc3NfaWQsIG52cmFtX2xpZF9lbnVtIGZpbGVfaWR4LCBrYWxfdWludDE2IHBhcmEpOworZXh0ZXJuIHZvaWQqIGw0Y19jb25zdHJ1Y3RfbnZyYW1fcmVhZF9sb2NhbF9wYXJhKGthbF91aW50OCBhY2Nlc3NfaWQsIG52cmFtX2xpZF9lbnVtIGZpbGVfaWR4LCBrYWxfdWludDE2IHBhcmEsIGthbF91aW50MTYgcmVjX2Ftb3VudCk7CisKK2V4dGVybiB2b2lkIGw0Y190YXJnZXRfcmVzZXQoa2FsX3VpbnQ4IHNlYyk7CisKK2V4dGVybiB2b2lkIGw0Y19jbGVhcl9yZXRyeV9jYWxsKHZvaWQpOworZXh0ZXJuIHZvaWQgbDRjX2NsZWFyX2FsbF9yZXRyeV9jYWxsKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGNfY2xlYXJfc2ltX3Bvd2VyX3N0YXRlKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGNfbndfcG93ZXJfb2ZmX2NsZWFyX3N0YXRlKHZvaWQpOworZXh0ZXJuIHZvaWQgbDRjX253X3Jmb2ZmX2NsZWFyX2h2b2x0ZV9wYXJhbWV0ZXIodm9pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfbndfYzJrX3Jmb2ZmX3JlcSh2b2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfYzJrX3Bvd2VyX29mZl9yZXEoa2FsX3VpbnQ4IHNyY19pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2hlY2tfcG93ZXJfb2ZmX3JlYWR5KCk7CisKK2V4dGVybiB2b2lkIGw0Y19jY19zYXZlX2NlZXJfY2F1c2UobDRjX3Jlc3VsdF9lbnVtIHJlc3BvbnNlLGthbF91aW50OCBjYXVzZV9wcmVzZW50LGthbF91aW50MTYgY2F1c2UpOworCitleHRlcm4gdm9pZCBsNGNfbmVlZF9ub3RpZnlfZ2FzX3RvX2Jhcl9jdXJyZW50X2NlbGwoa2FsX3VpbnQxNiBjYXVzZSk7CisKKworI2lmIGRlZmluZWQoX19FQ0FMTF9TVVBQT1JUX18pIHx8IGRlZmluZWQoX19OR19FQ0FMTF9TVVBQT1JUX18pCitleHRlcm4ga2FsX2Jvb2wgbDRjX2dldF9lY2FsbF9udW1iZXIobDRfYWRkcl9iY2Rfc3RydWN0ICpjYWxsZWRfbnVtYmVyLGthbF91aW50OCBlY2NfaW5mbyk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fQ1NHX1NVUFBPUlRfXykKK2V4dGVybiB2b2lkIGw0Y19mcmVlX2NzZ19saXN0KHJhY19jc2dfbGlzdF9zdHJ1Y3QgKmNzZ19saXN0KTsKKyNlbmRpZgorCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NjX2NoZWNrX2NhbGxfZXhpc3Qoa2FsX3VpbnQ4IHNyY19pZCk7CisKKyNpZmRlZiBfX1ZPTFRFX1NVUFBPUlRfXworZXh0ZXJuIGthbF9ib29sIGw0Y19jY19jaGVja19pbXNfY2FsbF9leGlzdCh2b2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2NfY2hlY2tfaW5fY2FsbF9zZXNzaW9uKGthbF91aW50OCBzcmNfaWQpOworI2VuZGlmCisKK2V4dGVybiB2b2lkIGw0Y19zZXRfbGVkXzdfc2VnbWVudF9kZWJ1ZyhsNGNfZGF0YV9zcGVlZF9zdXBwb3J0X2VudW0gZGF0YV9zcGVlZF9mb3JfY2VsbF9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw0Y19kYXRhX2JlYXJlcl9jYXBhYmxpbGl0eV9lbnVtIGRhdGFfYmVhcmVyX2Zyb21fbDIpOworCisKK2V4dGVybiByYXRfZW51bSBsNGNfZ2V0X2FjdGl2ZV9yYXQodm9pZCk7CitleHRlcm4gcmF0X2VudW0gbDRjX2dldF9hY3RpdmVfcmF0X2J5X3Byb3RvY29sX2lkKHByb3RvY29sX2lkX2VudW0gcHJvdG9jb2xfaWQpOworCitleHRlcm4gcmF0X2VudW0gbDRjX2dldF9hY3RpdmVfM2dwcF9yYXQodm9pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBpc19yYWNfYWN0aXZhdGVkKHZvaWQpOworCitleHRlcm4ga2FsX2Jvb2wgaXNfY3VycmVudF9yYWNfYWN0aXZhdGVkKCk7CisKK2V4dGVybiBrYWxfYm9vbCBpc190Y21fYWN0aXZhdGVkKCk7CitleHRlcm4ga2FsX2Jvb2wgaXNfY3VycmVudF90Y21fYWN0aXZhdGVkKCk7CitleHRlcm4gdm9pZCBsNGNfYWN0X3JhY19yZXEoKTsKK2V4dGVybiB2b2lkIGw0Y19hY3RfdGNtX3JlcSgpOworZXh0ZXJuIHZvaWQgbDRjX3Bvd2VyX29uX3N0YWdlMV9maW5pc2hlZF9pbmQodm9pZCk7CisKKyNpZiBkZWZpbmVkKF9fTk9fUFNEQVRBX1NFTkRfU0NSSV9fKSB8fCBkZWZpbmVkKF9fRkFTVF9ET1JNQU5DWV9fKQorZXh0ZXJuIGthbF9ib29sIGw0Y19mZF9uZWVkX2ZvcmNlX3NlbmRfU0NSSSh2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19mZF9tb25pdG9yX3RpbWVvdXRfaGRscih2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19mZF9zdGFydF9tb25pdG9yX3RpbWVyKGthbF91aW50OCBzcmNfaWQpOworZXh0ZXJuIHZvaWQgbDRjX2ZkX2NoZWNrX3BkcF9zdGF0aXN0aWNzKHZvaWQpOworI2VuZGlmCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2hlY2tfc3RhdGVfaXNfcmVnaXN0ZXJlZChyZWdfc3RhdGVfZW51bSByZWdfc3RhdGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NoZWNrX2NpZF9hY3RpdmF0ZWRfd2l0aF9zYW1lX2NvbmZpZyhrYWxfdWludDggY2lkLCBwZHBfYWRkcl90eXBlX2VudW0gcGRwX3R5cGUsIGthbF91aW50OCAqQWNjZXNzU3RyaW5nLCBrYWxfdWludDggKlVzZXJOYW1lLCBrYWxfdWludDggKlBhc3N3b3JkKTsKKworZXh0ZXJuIGthbF91aW50OCBsNGNfc2VhcmNoX2FjdGl2YXRlZF9jaWRfd2l0aF9naXZlbl9jb25maWcocGRwX2FkZHJfdHlwZV9lbnVtIHBkcF90eXBlLCBrYWxfdWludDggKkFjY2Vzc1N0cmluZywga2FsX3VpbnQ4ICpVc2VyTmFtZSwga2FsX3VpbnQ4ICpQYXNzd29yZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfbm90aWZ5X3JhY19jZ2FjdF9ldmVudCgpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX25vdGlmeV9yYWNfY2dhY3RfZXZlbnQoKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2hlY2tfaXNfc2dsdGVfbW9kZShrYWxfdWludDggc2ltSW5kZXgpOworCitleHRlcm4gbDRjX21vZGVtX2NhcGFiaWxpdHlfZW51bSBsNGNfY2hlY2tfbW9kZW1fY2FwYWJpbGl0eShsNGNfbW9kZW1fY2FwYWJpbGl0eV9lbnVtIGNhcGFiaWxpdHkpOworZXh0ZXJuIGw0Y19tb2RlbV9jYXBhYmlsaXR5X2VudW0gbDRjX2NoZWNrX3Byb3RvY29sX2NhcGFiaWxpdHkocHJvdG9jb2xfaWRfZW51bSBwcm90b2NvbF9pZCwgbDRjX21vZGVtX2NhcGFiaWxpdHlfZW51bSBjYXBhYmlsaXR5KTsKK2V4dGVybiBrYWxfaW50MzIgbDRjX3BsbW5fb3JkZXJfY29tcGFyZSAoY29uc3Qgdm9pZCAqIHBsbW5fYSwgY29uc3Qgdm9pZCAqIHBsbW5fYik7CitleHRlcm4gdm9pZCBsNGNfcGxtbl9pbmNyZWFzaW5nX29yZGVyKGthbF91aW50OCB0b3RhbF9udW0sIGthbF91aW50OCAqcGxtbl9saXN0X3B0cik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2hlY2tfcHJvdG9jb2xfY2FwX3dpdGhfZ21zc19tb2RlKHByb3RvY29sX2lkX2VudW0gcHJvdG9jb2xfaWQsbDRjX21vZGVtX2NhcGFiaWxpdHlfZW51bSBjYXBhYmlsaXR5KTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfY2hlY2tfY3VyX3Byb3RvY29sX2NhcF93aXRoX2dtc3NfbW9kZShsNGNfbW9kZW1fY2FwYWJpbGl0eV9lbnVtIGNhcGFiaWxpdHkpOworCitleHRlcm4gcmF0X2VudW0gbDRjX3JhdF9tb2RlX3ZhbGlkYXRvcihyYXRfZW51bSBvbGRfcmF0X21vZGUpOworZXh0ZXJuIHJhdF9lbnVtIGw0Y19yYXRfbW9kZV92YWxpZGF0b3Jfd2l0aF91ZV9jYXBhYmlsaXR5KHJhdF9lbnVtIHJhdF9tb2RlKTsKKworZXh0ZXJuIGthbF9ib29sIGNoZWNrX2lmX05BX25ldHdvcmsoY29uc3Qga2FsX2NoYXIgKm53X21jYyk7CitleHRlcm4gdm9pZCBsNGNfbG9hZF9odm9sdGVfZTkxMV9jb25maWcocHJvdG9jb2xfaWRfZW51bSBwc19pZCk7CitleHRlcm4gdm9pZCBsNGNfbG9hZF9udnJhbV9odm9sdGVfY29uZmlnKHByb3RvY29sX2lkX2VudW0gcHNfaWQpOworZXh0ZXJuIHZvaWQgbDRjX3NhdmVfaHZvbHRlX2U5MTFfY29uZmlnX3RvX252cmFtKHByb3RvY29sX2lkX2VudW0gcHNfaWQpOworZXh0ZXJuIGthbF91aW50OCBwbG1uX2NvbnZlcnRfYmNkX3RvX2RpZ2l0KGNvbnN0IGthbF91aW50OCAqcGxtbl9ieXRlLCBrYWxfdWludDggKmRlc3QpOworZXh0ZXJuIGthbF91aW50OCBkZWNvZGVfbmV0d29ya19uYW1lKGthbF91aW50OCBud19uYW1lX2xlbiwgY29uc3Qga2FsX3VpbnQ4ICpud19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBkZXN0X2xlbiwga2FsX3VpbnQ4ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGthbF91aW50OCAqbWNjLCBrYWxfdWludDggKmRjcyk7CitleHRlcm4ga2FsX2Jvb2wgaXNfcGxtbl9tYXRjaChjb25zdCBrYWxfdWludDggKnNpbV9wbG1uLCBjb25zdCBrYWxfdWludDggKm53X3BsbW4pOworZXh0ZXJuIGthbF91aW50OCBwbG1uX2NvbnZlcnRfZGlnaXRfdG9fc3RydWN0KGthbF91aW50OCAqc291cmNlLCBwbG1uX2lkX3N0cnVjdCAqZGVzdCk7CisKK2V4dGVybiB2b2lkIGw0Y19zdGFydF92b2x0ZV9oeXNfdGltZXIodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfc3RvcF92b2x0ZV9oeXNfdGltZXIodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfdm9sdGVfaHlzX3RpbWVvdXRfaGRscih2b2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX3RpbWVvdXRfY2xlYW51cChsNGNfdGltZXJfaWRfZW51bSB0aW1lcl9pZCk7CitleHRlcm4gdm9pZCBsNGNfY2FuY2VsX3RpbWVyKGw0Y190aW1lcl9pZF9lbnVtIHRpbWVyX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19pc190aW1lcl9ydW5uaW5nKGw0Y190aW1lcl9pZF9lbnVtIHRpbWVyX2lkKTsKK2V4dGVybiBrYWxfdWludDMyIGw0Y19xdWVyeV90aW1lcl92YWx1ZV9oZGxyKGw0Y190aW1lcl9pZF9lbnVtIHRpbWVyX2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2V0X3RpbWVyX3ZhbHVlX2hkbHIobDRjX3RpbWVyX2lkX2VudW0gdGltZXJfaWQsIGthbF91aW50MzIgdGltZXJfdmFsdWUpOworZXh0ZXJuIGthbF91aW50OCBsNGNfZ2V0X2RvbmdsZV9tb2RlKHZvaWQpOworZXh0ZXJuIGthbF91aW50MTYgbDRjX2NvbnZlcnRfYWN0X3RvX2VhY3Qoa2FsX3VpbnQ4IGFjdCk7CitleHRlcm4gdm9pZCBsNGNfY2hlY2tfYW5kX3NlbmRfY2FsbF9zdGF0dXNfcmVxKGthbF91aW50OCBtc2dfdHlwZSwga2FsX3VpbnQ4IGNhbGxfaWQpOworZXh0ZXJuIHZvaWQgbDRjX3NlbmRfcmFjX2NhbGxfc3RhdHVzX3JlcShjYWxsX3N0YXR1c19lbnVtIGNhbGxfc3RhdHVzLCBjYWxsX3R5cGVfaW5kaWNhdGlvbl9lbnVtIGNhbGxfdHlwZSwga2FsX2Jvb2wgaXNfZmxpZ2h0X21vZGVfb25fZWNjKTsKKworCitleHRlcm4gdm9pZCBsNGNfc3RhcnRfdHhyeHRpbWVfdGltZXIodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfc3RvcF90eHJ4dGltZV90aW1lcih2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y190eHJ4dGltZV90aW1lb3V0X2hkbHIodm9pZCk7CisjaWYgZGVmaW5lZChfX0dFTUlOSV9fKQorZXh0ZXJuIGthbF9ib29sIGlzX2VmdW5fY21kX2NvbmZsaWN0KGthbF91aW50OCBzcmNfaWQsIGthbF91aW50OCBkZXNpcmVkX2VmdW4pOworI2VuZGlmCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX2NoZWNrX29wZXJhdG9yX2NhcmQoc2ltX29wZXJhdG9yX3R5cGVfZW51bSBvcGVyYXRvcl90eXBlLCBrYWxfdWludDggc2ltX2ludGVyZmFjZSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NpbV9jaGVja19vcGVyYXRvcl9jYXJkX2J5X2ljY2lkKHNpbV9vcGVyYXRvcl90eXBlX2VudW0gb3BlcmF0b3JfdHlwZSwga2FsX3VpbnQ4IHNpbV9pbnRlcmZhY2UpOworZXh0ZXJuIHNpbV9vcGVyYXRvcl90eXBlX2VudW0gbDRjX3NpbV9xdWVyeV9vcGVyYXRvcl9jYXJkKHByb3RvY29sX2lkX2VudW0gcHNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX253X3NldF9hcGNfY29udHJvbF9pbmZvX3JlcShrYWxfdWludDggc3JjX2lkLAorCQkJCQkJCQkga2FsX3VpbnQ4IGVuYWJsZSwKKwkJCQkJCQkJIGthbF91aW50OCBtb2RlLAorCQkJCQkJCQkga2FsX3VpbnQxNiB0aW1lcik7CisKK2V4dGVybiB2b2lkIGw0Y19ud19wc2V1ZG9fYnNfcXVlcnlfcmVxKGthbF91aW50OCBzcmNfaWQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19ib290X21vZGVfbm90aWZ5X2hkbHIobXNnX3R5cGUgbm90aWZ5X21zZ19pZCk7CitleHRlcm4gdm9pZCBsNGNfYm9vdF9tb2RlX3JzcChtc2dfdHlwZSBub3RpZnlfbXNnX2lkLCBrYWxfYm9vbCByZXN1bHQsIGthbF9ib29sIGlzX2Zyb21fZnQsIEZUX01PREVfU1dJVENIX1JFU1VMVCBmdF9yZXN1bHQpOworCisjaWZkZWYgX19HRU1JTklfXworZXh0ZXJuIGthbF9ib29sIGw0Y19pc19yc2ltX3ByZXNlbnQoa2FsX3VpbnQ4IHNpbV9pZCk7CitleHRlcm4gcnN2YXNfaWRfZW51bSBsNGNfZ2V0X3JzdmFzX2lkKHZvaWQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19pc19ha2Ffc2ltX3ByZXNlbnQoa2FsX3VpbnQ4IHNpbV9pZCk7CitleHRlcm4gdm9pZCBsNGNfc2ltX3JzaW1fc3RhcnRfcGx1Z2luX3RpbWVyX2hkbHIodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfc2ltX3JzaW1fcGx1Z2luX3RpbWVyb3V0X2hkbHIodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfc2ltX3JzaW1fZXJzaW1hdXRoX3RpbWVvdXRfaGRscih2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19zaW1fcnNpbV9lcnNpbWF1dGhfc3RhcnRfdGltZXIodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfc2ltX3JzaW1fZXJzaW1hdXRoX3N0b3BfdGltZXIodm9pZCk7CisjZW5kaWYKKworI2lmZGVmIF9fQUxMT1dfQ0FMTF9EVVJJTkdfU01TX0lOX09USEVSX1NUQUNLX18KK2V4dGVybiB2b2lkIGw0Y190b19zbXNfc2VuZF9jYWxsX3N0YXR1c19yZXEoa2FsX3VpbnQ4IG1zZ190eXBlLCBrYWxfdWludDggY2FsbF9pZCk7CisjZW5kaWYKKworZXh0ZXJuIHZvaWQgbDRjX3N0YXJ0X3NicF90aW1lcihrYWxfdGltZXJfZnVuY19wdHIgdGltZW91dF9oZGxyLCB2b2lkICpwYXJhbV9wdHIsIGthbF91aW50MzIgdGltZV9pbl9zZWMpOworZXh0ZXJuIHZvaWQgbDRjX3N0b3Bfc2JwX3RpbWVyKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGNfbm90aWZ5X2lwY29yZV91bF90aHJvdHRsZV9ldmVudChsNGNfaXBjb3JlX3VsX3Rocm90dGxlX2FjdGlvbl9lbnVtIHVsX3Rocm90dGxlX2FjdGlvbik7CisKK2V4dGVybiB2b2lkIGw0Y19ud19wb3dlcl9sZXZlbF90aHJlc2hvbGRfc3RhcnRfdGltZXJfaGRscihsNGNfdGltZXJfaWRfZW51bSB0aW1lciwga2FsX3VpbnQ4IHRpbWUpOworZXh0ZXJuIHZvaWQgbDRjX253X3Bvd2VyX2xldmVsX3RocmVzaG9sZF9zdG9wX3RpbWVyX2hkbHIobDRjX3RpbWVyX2lkX2VudW0gdGltZXIpOworZXh0ZXJuIHZvaWQgbDRjX253X3Bvd2VyX2xldmVsX3RocmVzaG9sZF90aW1lcm91dF9oZGxyKCk7CitleHRlcm4gdm9pZCBsNGNfbndfZ2V0X3Bvd2VyX2xldmVsX3RocmVzaG9sZChrYWxfaW50MzIgKnVwcGVyX3RocmVzaG9sZCwga2FsX3VpbnQ4ICp0dXAsCisgICAgICAgICAgICBrYWxfaW50MzIgKmxvd2VyX3RocmVzaG9sZCwga2FsX3VpbnQ4ICp0bG8pOworZXh0ZXJuIGthbF9ib29sIGw0Y19pc19wZWVyX3BzX2Mya19leGlzdGVkKGthbF91aW50OCBjdXJyZW50X3BzKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfaGFzX2FueV9jYWxsX3Nlc3Npb24oKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfaGFzX2FueV9jYWxsX3Nlc3Npb25fYnlfcHMoa2FsX3VpbnQ4IHBzX2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX3NldF91c2VyX2FjdGlvbl9mb3JfYWxsX3NpbXMoa2FsX3VpbnQ4IG1vZCwga2FsX3VpbnQ4IHVzZXIsIGthbF91aW50MTYgbmV3X2FjdGlvbiwga2FsX3VpbnQxNiBwcmV2aW91c19hY3Rpb24pOworCitleHRlcm4gdm9pZCBsNGNfc2ltX2R1cGxleF9tb2RlX2luZF9oZGxyKGR1cGxleF9tb2RlX2NoYW5nZV9hY3Rpb25fZW51bSBzaW1fZHVwbGV4X29wKTsKKworZXh0ZXJuIHZvaWQgbDRjX3NlbmRfY2JfdXBkYXRlX2Zvcl9kdXBsZXhfbW9kZV9yZXEodm9pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19zbXNfc2VuZF9ldHdzX3NldHRpbmcodm9pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX2FwdnNpbV9vbih2b2lkKTsKKworZXh0ZXJuIGw0Y19zaW1fc3RhdGVfZW51bSBsNGNfc2ltX2dldF9wb3dlcl9zdGF0ZShrYWxfdWludDggcHNfaWQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19zaW1faXNfZHNzX29uZ29pbmcodm9pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX2Vjc3JhX29uZ29pbmcodm9pZCk7CitsNGNfbndfZHVtcF9jb250ZXh0IGw0Y19ud19nZXRfZHVtcF9jb250ZXh0KCk7CitsNGNfY2NfZHVtcF9jb250ZXh0IGw0Y19jY19nZXRfZHVtcF9jb250ZXh0KCk7CitsNGNfc21zX2R1bXBfY29udGV4dCBsNGNfc21zX2dldF9kdW1wX2NvbnRleHQoKTsKK2w0Y19zaW1fZHVtcF9jb250ZXh0IGw0Y19zaW1fZ2V0X2R1bXBfY29udGV4dCgpOworbDRjX3NtdV9kdW1wX2NvbnRleHQgbDRjX3NtdV9nZXRfZHVtcF9jb250ZXh0KCk7CitsNGNfaW1zX2R1bXBfY29udGV4dCBsNGNfaW1zX2dldF9kdW1wX2NvbnRleHQoKTsKK2w0Y19waGJfZHVtcF9jb250ZXh0IGw0Y19waGJfZ2V0X2R1bXBfY29udGV4dCgpOworCitleHRlcm4ga2FsX3VpbnQ4IGw0Y19nZXRfZXJmaWR4X2luZGV4X2Zyb21fc3JjaWQoa2FsX3VpbnQ4IHNyY2lkKTsKK2V4dGVybiB2b2lkIGw0Y19vcDEyX2xvY2tfcmVnX2J5X3Z6d19hZG1fYXBuKGthbF9ib29sIGxvY2tfZW5hYmxlKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZ2V0X2lzX29wMTJfbG9jayhrYWxfdWludDggcHNfaWQpOworZXh0ZXJuIHZvaWQgbDRjX29wMTJfdW5sb2NrX3RpbWVyX2hkbHIoKTsKK2V4dGVybiB2b2lkIGw0Y19vcDEyX2xvY2tfdGltZXJfaGRscigpOworZXh0ZXJuIHZvaWQgbDRjX29wMTJfbG9ja19zZW5kX2RlcmVnKCk7CitleHRlcm4gdm9pZCBsNGNfb3AxMl91bmxvY2tfc2VuZF9yZWcoKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfaXNfY2RtYV9sZXNzKHZvaWQpOworCisKK2V4dGVybiB2b2lkIGw0Y19vcDAxX2xvY2tfc2VuZF9kZXJlZygpOworZXh0ZXJuIHZvaWQgbDRjX29wMDFfdW5sb2NrX3NlbmRfcmVnKCk7CitleHRlcm4gdm9pZCBsNGNfc2V0X29wMDFfbG9ja191bmxvY2soa2FsX3VpbnQ4IGxvY2tfc3RhdGUpOworZXh0ZXJuIGthbF9ib29sIGw0Y19nZXRfaXNfb3AwMV9sb2NrKGthbF91aW50OCBwc19pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2JwX2lzX2FueV9kc2JwX29uX2dvaW5nKCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfc2ltX2R1cGxleF9tb2RlX3Jlc2V0X2RvbmUoKTsKKworLypJV0xBTiAtIFBvd2VyIExldmVsIFRocmVzaG9sZCovCitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX2NlbGxfcG93ZXJfbWVhc19kaXNhYmxlX25lZWRlZChsNGNfc2lnX3R5cGVfZW51bSBzaWdfdHlwZSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX2NlbGxfcG93ZXJfbWVhc19lbmFibGVfbmVlZGVkKCk7CitleHRlcm4gbDRjX3RpbWVyX2Z1bmNfcHRyIGw0Y19nZXRfcHdsX3RpbWVvdXRfaGRsciggbDRjX3B3bF90aHJoZF90aW1lcl9pZF9lbnVtIHdoaWNoX3RpbWVyICk7CitleHRlcm4gdm9pZCBsNGNfcHdsX3RocmhkX2dzbV9yc3NpX3RpbWVyb3V0X2hkbHIodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfcHdsX3RocmhkX3V0cmFuX3JzY3BfdGltZXJvdXRfaGRscih2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19wd2xfdGhyaGRfdXRyYW5fZWNub190aW1lcm91dF9oZGxyKHZvaWQpOworZXh0ZXJuIHZvaWQgbDRjX3B3bF90aHJoZF9sdGVfcnNycF90aW1lcm91dF9oZGxyKHZvaWQpOworZXh0ZXJuIHZvaWQgbDRjX3B3bF90aHJoZF9sdGVfcnNycV90aW1lcm91dF9oZGxyKHZvaWQpOworZXh0ZXJuIHZvaWQgbDRjX3B3bF90aHJoZF9sdGVfcnNzbnJfdGltZXJvdXRfaGRscih2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19wd2xfdGhyaGRfbnJfc3NfcnNycF90aW1lcm91dF9oZGxyKHZvaWQpOworZXh0ZXJuIHZvaWQgbDRjX3B3bF90aHJoZF9ucl9zc19yc3JxX3RpbWVyb3V0X2hkbHIodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfcHdsX3RocmhkX25yX3NzX3NpbnJfdGltZXJvdXRfaGRscih2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19wd2xfdGhyaGRfbnJfY3NpX3JzcnBfdGltZXJvdXRfaGRscih2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19wd2xfdGhyaGRfbnJfY3NpX3JzcnFfdGltZXJvdXRfaGRscih2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19wd2xfdGhyaGRfbnJfY3NpX3NpbnJfdGltZXJvdXRfaGRscih2b2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX253X2l3bGFuX3B3bF90aHJoZF9zdG9wX3RpbWVyX2hkbHIobDRjX3B3bF90aHJoZF90aW1lcl9pZF9lbnVtIHRpbWVyKTsKK2V4dGVybiBsNGNfcHdsX3RocmhkX3RpbWVyX2lkX2VudW0gbDRjX2dldF9wd2xfdGhyaGRfdGltZXJfaWQobDRjX3NpZ190eXBlX2VudW0gc2lnX3R5cGUpOworZXh0ZXJuIHZvaWQgbDRjX253X2l3bGFuX3B3bF90aHJoZF9zdGFydF90aW1lcl9oZGxyKGw0Y19wd2xfdGhyaGRfdGltZXJfaWRfZW51bSB0aW1lciwga2FsX3VpbnQxNiB0aW1lKTsKK2V4dGVybiB2b2lkIGw0Y19ud19pd2xhbl9wd3JfbGV2ZWxfaW5kX2hkbHIoa2FsX2ludDMyIHNpZ192YWx1ZV9pbl9xZGJtLCBsNGNfc2lnX3R5cGVfZW51bSBzaWdfdHlwZSk7CitleHRlcm4gdm9pZCBsNGNfbndfcHdsX3RocmhkX3RpbWVyb3V0X2hkbHIobDRjX3NpZ190eXBlX2VudW0gc2lnX3R5cGUsIGthbF9pbnQzMiBzaWdfdmFsdWVfaW5fcWRibSk7CitleHRlcm4ga2FsX2ludDE2IGw0Y19nZXRfbHRlX3NpZ25hbF9sZXZlbChsNGNfZXZhbF9jZWxsX3Bvd2VyX2xldmVsX2luZF9zdHJ1Y3QgKm1zZ19wdHIsIGw0Y19zaWdfdHlwZV9lbnVtIHNpZ190eXBlKTsKK2V4dGVybiBrYWxfaW50MzIgbDRjX2dldF9ucl9zaWduYWxfbGV2ZWwobDRjX25ycmNfY2VsbF9wb3dlcl9sZXZlbF9pbmRfc3RydWN0ICptc2dfcHRyLCBsNGNfc2lnX3R5cGVfZW51bSBzaWdfdHlwZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfbndfY29wc19nZXRfY3VycmVudF9wbG1uX2lkKGthbF91aW50OCAqb3Blcik7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2R1cGxleF9tb2RlX2lzX2NwaW5fYWxsb3dlZChrYWxfdWludDggY2hhbm5lbF9pZCk7CisKK2V4dGVybiBsNF9wc19jb25maWdfcmVzdWx0X2VudW0gbDRjX253X3BzX2F0dGFjaF9jb25maWdfcmVzdWx0KHZvaWQpOworCitleHRlcm4gdm9pZCogbDRjX2FsbG9jX2N0cmxfYnVmZmVyKHVuc2lnbmVkIGludCBzaXplKTsKK2V4dGVybiB2b2lkIGw0Y19mcmVlX2N0cmxfYnVmZmVyKHZvaWQgKnB0cik7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfcXVldWVfcmVtb3ZlX2l0ZW1fYnlfaW5kZXgobGNkX2xxdWV1ZSAqcXVldWUsIGthbF91aW50MzIgZGVsZXRlX2lkeCk7CitleHRlcm4gbDRjX3F1ZXVlX3BlbmRpbmdfYWN0aW9uX2l0ZW1fc3RydWN0KiBsNGNfcXVldWVfZ2V0X2ZpcnN0X3BlbmRpbmdfaXRlbSh2b2lkKTsKKworZXh0ZXJuIGthbF91aW50MTYgbDRjX2dldF9udW1fb2ZfcGVuZGluZ19hY3Rpb25faGRscl9pdGVtX3RhYmxlKHZvaWQpOworZXh0ZXJuIGNvbnN0IGw0Y19xdWV1ZV9wZW5kaW5nX2FjdGlvbl9oZGxyX2l0ZW1fc3RydWN0ICpsNGNfZ2V0X3BlbmRpbmdfYWN0aW9uX2hkbHJfaXRlbV90YWJsZSh2b2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lbnF1ZXVlX3BlbmRpbmdfYWN0aW9uX2l0ZW0obDRjX3BlbmRpbmdfYWN0aW9uX2VudW0gcGVuZGluZ19hY3Rpb24sIHZvaWQgKmRhdGEpOworZXh0ZXJuIGthbF9ib29sIGw0Y19kZXF1ZXVlX3BlbmRpbmdfYWN0aW9uX2l0ZW0odm9pZCk7CitleHRlcm4gdm9pZCBsNGNfcXVldWVfcHJpbnRfYWxsX3BlbmRpbmdfYWN0aW9uKHZvaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX2xpbWl0ZWRfc2VydmljZV9ydWxlX2J5X3NpbV90eXBlKHByb3RvY29sX2lkX2VudW0gcHNfaWQsIHNpbV9vcGVyYXRvcl90eXBlX2VudW0gY2FyZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRfZW51bSByYXRfbW9kZSwgaW1zX2NhcF9yYXRfZW51bSBpbXNfdm9pY2VfcmF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDgqIGNhbXBlZF9wbG1uKTsKKworZXh0ZXJuIG1tX3VzZXJfc2VhcmNoX3R5cGVfZW51bSBsNGNfbndfZ2V0X3VlX2N1cnJlbnRfc2VhcmNoX3R5cGUoKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19kZXF1ZXVlX2F0dGFjaF9hY3Rpb24odm9pZCAqZGF0YSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2RlcXVldWVfZGV0YWNoX2FjdGlvbih2b2lkICpkYXRhKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19lbnF1ZXVlX3BzX2F0dGFjaF9hY3Rpb24obDRjX3F1ZXVlX3BlbmRpbmdfYWN0aW9uX2l0ZW1fc3RydWN0ICpwZW5kaW5nX2FjdGlvbl9pdGVtKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZGVxdWV1ZV9wc19hdHRhY2hfYWN0aW9uKHZvaWQgKmRhdGEpOworZXh0ZXJuIGthbF9ib29sIGw0Y19lbnF1ZXVlX3BzX2RldGFjaF9hY3Rpb24obDRjX3F1ZXVlX3BlbmRpbmdfYWN0aW9uX2l0ZW1fc3RydWN0ICpwZW5kaW5nX2FjdGlvbl9pdGVtKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZGVxdWV1ZV9wc19kZXRhY2hfYWN0aW9uKHZvaWQgKmRhdGEpOworCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfbndfdHJpZ2dlcl9hdHRhY2hfYWN0aW9uKGw0Y19zb3VyY2VfaWRfZW51bSBzcmNfaWQsIG1tX3VzZXJfc2VhcmNoX2NhdXNlX2VudW0gc2VhcmNoX2NhdXNlKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfbndfdHJpZ2dlcl9kZXRhY2hfYWN0aW9uKGw0Y19zb3VyY2VfaWRfZW51bSBzcmNfaWQsIGRvbWFpbl9pZF9lbnVtIHNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsNGNfcmFjX2RldGFjaF9jYXVzZV9lbnVtIGRldGFjaF9jYXVzZSwga2FsX2Jvb2wgaXNfcG93ZXJvZmYpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX253X3RyaWdnZXJfcHNfYXR0YWNoX2FjdGlvbihrYWxfYm9vbCBmb2xsb3dfb25fcmVxdWVzdCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX253X3RyaWdnZXJfcHNfZGV0YWNoX2FjdGlvbih2b2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19yZXNldF9sNF9lcV9jb250ZXh0KHNpbV9pbnRlcmZhY2VfZW51bSBzaW1fcHNfaWQpOworCisvKiBfX0tPUl9DVVNUT01JWkFUSU9OX18gKi8KK2V4dGVybiB2b2lkIGw0Y19nZXRfZWNjX3NjKCB2b2lkICogZWNjX3JldHJ5X3NldHVwX3B0ciApOworZXh0ZXJuIGthbF9ib29sIGw0Y19pc19wbG1uX2NoYW5nZWQocGxtbl9pZF9zdHJ1Y3QgKnBsbW5faWRfcHRyKTsKK2V4dGVybiB2b2lkIGw0Y191cGRhdGVfa29ybW5vX2Zha2VfbndfZWNjKCBwbG1uX2lkX3N0cnVjdCAqIHBsbW5faWRfcHRyICk7CisvKiBfX0tPUl9DVVNUT01JWkFUSU9OX18gKi8KKworZXh0ZXJuIGthbF9ib29sIGw0Y19kaXNhYmxlX3JhdF93aXRoX2VjY192YWxpZGF0b3IocmF0X2VudW0gZGlzYWJsZV9yYXQpOworCitleHRlcm4gcnN2YXNfaWRfZW51bSBsNGNfZ2V0X3JzdmFzX2lkKHZvaWQpOworCitleHRlcm4gdm9pZCBsNGNfbndfbm9uX3BzX29jY3VweV9yc3ZhX3N0YXJ0X3RpbWVyX2hkbHIoa2FsX3VpbnQzMiB0aW1lX2luX3NlYyk7CitleHRlcm4gdm9pZCBsNGNfbndfbm9uX3BzX29jY3VweV9yc3ZhX3N0b3BfdGltZXJfaGRscih2b2lkKTsKKyNpZmRlZiBfX0NIUl9BQl9JTkZPX18KK2V4dGVybiB2b2lkIGw0Y19lcHNubHRlX3N0YXJ0X3RpbWVyX2hkbHIobDRjX3RpbWVyX2lkX2VudW0gdGltZXIsIGthbF91aW50OCB0aW1lKTsKK2V4dGVybiB2b2lkIGw0Y19lcHNubHRlX3N0b3BfdGltZXJfaGRscihsNGNfdGltZXJfaWRfZW51bSB0aW1lcik7CitleHRlcm4gdm9pZCBsNGNfZXBzbmx0ZV90aW1lb3V0X2hkbHIodm9pZCk7CisjZW5kaWYgLyogX19DSFJfQUJfSU5GT19fICovCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZ2V0X2lzX29wMDFfc2ltX2xvY2soa2FsX3VpbnQ4IHBzX2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZ2V0X2lzX29wMDFfcmF0X2xvY2soa2FsX3VpbnQ4IHBzX2lkKTsKK2V4dGVybiB2b2lkIGw0Y19zZW5kX29wMDFfbG9ja19jbmYoa2FsX2Jvb2wgcmVzdWx0KTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZGVxdWVfb3AwMV9zaW1fbG9ja19hY3Rpb24odm9pZCAqZGF0YSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2RlcXVlX29wMDFfc2ltX3VubG9ja19hY3Rpb24odm9pZCAqZGF0YSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2RlcXVlX29wMDFfcmF0X2xvY2tfYWN0aW9uKHZvaWQgKmRhdGEpOworZXh0ZXJuIGthbF9ib29sIGw0Y19kZXF1ZV9vcDAxX3JhdF91bmxvY2tfYWN0aW9uKHZvaWQgKmRhdGEpOworZXh0ZXJuIGthbF9ib29sIGw0Y190cmlnZXJfb3AwMV9zaW1fbG9ja19kZXRhY2goKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfdHJpZ2VyX29wMDFfc2ltX3VubG9ja19hdHRhY2goKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfdHJpZ2VyX29wMDFfcmF0X2xvY2tfZXhlKCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3RyaWdlcl9vcDAxX3JhdF91bmxvY2tfZXhlKCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2VucXVldWVfb3AwMV9sb2NrX2FjdGlvbihsNGNfcXVldWVfcGVuZGluZ19hY3Rpb25faXRlbV9zdHJ1Y3QgKnBlbmRpbmdfYWN0aW9uX2l0ZW0pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX3RyaWdlcl9sb2NrX2RldGFjaChsNGNfYWN0aW9uX2VudW0gbDRjX2FjdGlvbiwgbDRjX3BlbmRpbmdfYWN0aW9uX2VudW0gcGVuZGluZ19xdWV1ZV9hY3Rpb24pOworZXh0ZXJuIGthbF9ib29sIGw0Y190cmlnZXJfdW5sb2NrX2F0dGFjaChsNGNfYWN0aW9uX2VudW0gbDRjX2FjdGlvbiwgbDRjX3BlbmRpbmdfYWN0aW9uX2VudW0gcGVuZGluZ19xdWV1ZV9hY3Rpb24pOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2RlcXVldWVfaW1laV9tZWlkX2xvY2tfZGV0YWNoX2FjdGlvbih2b2lkICpkYXRhKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZGVxdWV1ZV9pbWVpX21laWRfbG9ja19hdHRhY2hfYW55X2FjdGlvbih2b2lkICpkYXRhKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZGVxdWV1ZV9pbWVpX21laWRfdW5sb2NrX2F0dGFjaF9hY3Rpb24odm9pZCAqZGF0YSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2VucXVldWVfaW1laV9tZWlkX2xvY2tfYWN0aW9uKGw0Y19xdWV1ZV9wZW5kaW5nX2FjdGlvbl9pdGVtX3N0cnVjdCAqcGVuZGluZ19hY3Rpb25faXRlbSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfbndfdHJpZ2VyX2ZvcmNlX2NoYW5nZV9yYXQobDRjX3BlbmRpbmdfYWN0aW9uX2VudW0gcGVuZGluZ19xdWV1ZV9hY3Rpb24pOworZXh0ZXJuIGthbF9ib29sIGw0Y19lbnF1ZXVlX2ZvcmNlX2NoYW5nZV9yYXRfYWN0aW9uKGw0Y19xdWV1ZV9wZW5kaW5nX2FjdGlvbl9pdGVtX3N0cnVjdCAqcGVuZGluZ19hY3Rpb25faXRlbSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2RlcXVldWVfZm9yY2VfY2hhbmdlX3JhdF9hY3Rpb24odm9pZCAqZGF0YSk7CisKK2V4dGVybiB2b2lkIGw0Y19vcDAxX2NoZWNrX3JhdF9tb2RlX2FuZF9wcmVmZXJfcmF0KHJhdF9lbnVtKiByYXRfbW9kZSwgcmF0X2VudW0qIHByZWZlcl9yYXQpOworZXh0ZXJuIHJhdF9lbnVtICBsNGNfb3AwMV9jaGVja19yYXRfbW9kZShyYXRfZW51bSByYXRfbW9kZSk7CitleHRlcm4gdm9pZCBsNGNfbndfY2xlYXJfaW1zX253X2ZlYXR1cmVfc3VwcG9ydF9jb250ZXh0KCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3NzX2NoZWNrX2lmX1NTX29wZXJhdGlvbl9vbl9hbm90aGVyX3N0YWNrKCk7CisKK2V4dGVybiB2b2lkIGw0Y19zaW1fY2FsX3BzX3NpbV9tYXAoa2FsX3VpbnQ4IG1hc3Rlcl9zaW1fYml0bWFzaywga2FsX3VpbnQ4ICpwc19zaW1fbWFwKTsKK2V4dGVybiBrYWxfdWludDggbDRjX3NpbV9jYWxfbWFzdGVyX3NpbV9iaXRtYXNrKGthbF91aW50OCAqcHNfc2ltX21hcCk7CisKK2V4dGVybiBrYWxfdWludDggbDRjX3NpbV9xdWVyeV90cmF5X2luZm8oa2FsX3VpbnQ4IHNpbV9pbnRlcmZhY2UpOworCisjaWYgZGVmaW5lZChfX01PREVNX0VNX01PREVfXykKK2V4dGVybiBrYWxfdWludDMyIGw0Y19lbV9kZXN0aW5hdGlvbihpbG1fc3RydWN0ICppbG1fcHRyKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX1RDMTBfXykgJiYgZGVmaW5lZChfX0lQQ19BREFQVEVSX18pCitleHRlcm4ga2FsX2Jvb2wgb2VtX2dldF9pbWVpX3ZlcmlmaWNhdGlvbih2b2lkKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoX19NVEtfVEFSR0VUX18pCitleHRlcm4gdm9pZCBsNGNfdXRfc2V0X21hc3Rlcl9zaW1faWQoc2ltX2ludGVyZmFjZV9lbnVtIHNpbUlkKTsKKyNlbmRpZgorCisjaWZkZWYgX19NQklNX01TX05FVFdPUktfQkxBQ0tMSVNUX18KK2V4dGVybiBrYWxfYm9vbCBsNGNfbXNfYmxhY2tfbGlzdF9sb2NrX2RldGFjaChsNGNfYWN0aW9uX2VudW0gbDRjX2FjdGlvbiwgbDRjX3BlbmRpbmdfYWN0aW9uX2VudW0gcGVuZGluZ19xdWV1ZV9hY3Rpb24pOworZXh0ZXJuIGthbF9ib29sIGw0Y19tc19ibGFja19saXN0X3VubG9ja19kZXRhY2gobDRjX2FjdGlvbl9lbnVtIGw0Y19hY3Rpb24sIGw0Y19wZW5kaW5nX2FjdGlvbl9lbnVtIHBlbmRpbmdfcXVldWVfYWN0aW9uKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19kZXF1ZXVlX21zX2JsYWNrX2xpc3RfbG9ja19kZXRhY2hfYWN0aW9uKHZvaWQgKmRhdGEpOworZXh0ZXJuIGthbF9ib29sIGw0Y19kZXF1ZXVlX21zX2JsYWNrX2xpc3RfbG9ja19hdHRhY2hfYW55X2FjdGlvbih2b2lkICpkYXRhKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZGVxdWV1ZV9tc19ibGFja19saXN0X3VubG9ja19hdHRhY2hfYWN0aW9uKHZvaWQgKmRhdGEpOworZXh0ZXJuIGthbF9ib29sIGw0Y19kZXF1ZXVlX21zX2JsYWNrX2xpc3RfdW5sb2NrX2RldGFjaF9hY3Rpb24odm9pZCAqZGF0YSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2VucXVldWVfbXNfYmxhY2tfbGlzdF9sb2NrX2FjdGlvbihsNGNfcXVldWVfcGVuZGluZ19hY3Rpb25faXRlbV9zdHJ1Y3QgKnBlbmRpbmdfYWN0aW9uX2l0ZW0pOworI2VuZGlmCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBGVU5DVElPTgorKiAgIGw0Y19jaGVja19wcm90b2NvbF9zdXBwb3J0ZWQoKQorKiBERVNDUklQVElPTgorKiAgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBpbnB1dCBwcm90b2NvbCBpcyBzdXBwb3J0ZWQuCisqICAgQVAgbWF5IHNlbmQgQVQrRVNBRE0gdG8gYXNzaWduIHdoaWNoIHByb3RvY29scyBzaG91bGQgYmUgc3VwcG9ydGVkLgorKgorKiBQQVJBTUVURVJTCisqICAgcHNfaWQgICBbSU5dIHByb3RvY29sIElEIHRvIGJlIHF1ZXJpZWQKKyoKKyogUkVUVVJOUworKiAgIGthbF9ib29sIDogVGhlIGZ1bmN0aW9uIHJldHVybnMgVFJVRSB3aGVuIHRoZSBwcm90b2NvbCBpcyBzdXBwb3J0ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK2V4dGVybiBrYWxfYm9vbCBsNGNfY2hlY2tfcHJvdG9jb2xfc3VwcG9ydGVkKHByb3RvY29sX2lkX2VudW0gcHNfaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NoZWNrX2lzX3NtbF92ZXJpZnlfYWN0aW9uKHByb3RvY29sX2lkX2VudW0gcHNfaWQpOworCisjaWZkZWYgX19HRU1JTklfXworZXh0ZXJuIHZvaWQgbDRjX253X21zcG1fcmVxdWVzdF9vY2N1cHkobXNwbV9wcm9jZWR1cmVfZW51bSBtc3BtX3Byb2NlZHVyZSk7CitleHRlcm4gdm9pZCBsNGNfbndfbXNwbV9yZXF1ZXN0X3JlbGVhc2UobXNwbV9wcm9jZWR1cmVfZW51bSBtc3BtX3Byb2NlZHVyZSk7CisjZW5kaWYgLyogX19HRU1JTklfXyAqLworCitleHRlcm4ga2FsX3VpbnQ4IGw0Y19jY19jaGVja19zaW1faW50ZXJmYWNlKHZvaWQpOworCisjaWZkZWYgX19MNENfR1BSU19VVF9fCitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX3Rlc3Rfc2ltX3V0KHZvaWQpOworI2VuZGlmCisKK2V4dGVybiBrYWxfdWludDggbDRjX2dldF9wc19pZF9pbWVpX21laWRfYmxvY2tlZF9zb3VyY2Uodm9pZCk7CitleHRlcm4gcmF0X2VudW0gbDRjX2dldF9yYXRfaW1laV9tZWlkX2Jsb2NrZWRfc291cmNlKHZvaWQpOworZXh0ZXJuIGthbF9ib29sIGw0Y19pc19yYXRfY2hhbmdlX25lZWRlZChrYWxfdWludDggKm1jYywgcmF0X2VudW0gcmF0X21vZGUpOworCitleHRlcm4gbDRjX3JhdF9ncm91cF9lbnVtIGw0Y19nZXRfcmF0X2dyb3VwKHJhdF9lbnVtIHJhdCk7CitleHRlcm4gaW1zX3JhdF90eXBlX2VudW0gbDRjX2NvbnZlcnRfcmF0X3RvX2ltc19yYXQocmF0X2VudW0gcmF0LCByYXRfZHVwbGV4X3R5cGVfZW51bSBkdXBsZXhfdHlwZSk7CisKK2V4dGVybiBsNGNfZGF0YV9iZWFyZXJfY2FwYWJsaWxpdHlfZW51bSBsNGNfbndfY29udmVydF9kYXRhX3NwZWVkX3RvX2NhcGFiaWxpdHkoZGF0YV9zcGVlZF9zdXBwb3J0X2VudW0gY2VsbF9kYXRhX3NwZWVkX3N1cHBvcnQpOworCitleHRlcm4gdm9pZCBsNGNfbndfcmVnX3N0YXRlX2RlYnVnX2luZm8ocmVnX3N0YXRlX2luZF9zdHJ1Y3QgcmVnX3N0YXRlKTsKKworZXh0ZXJuIGthbF91aW50MzIgbDRjX2NvbnZlcnRfYXJlYV9jb2RlX3RvX2F0KGNlbGxfaW5mb19hbmRfcmF0X3N0cnVjdCBjZWxsX2luZm8pOworZXh0ZXJuIGthbF91aW50NjQgbDRjX2NvbnZlcnRfY2VsbF9pZF90b19hdChjZWxsX2luZm9fYW5kX3JhdF9zdHJ1Y3QgY2VsbF9pbmZvKTsKK2V4dGVybiBrYWxfdWludDggbDRjX2NvbnZlcnRfcmFfY29kZV90b19hdChjZWxsX2luZm9fYW5kX3JhdF9zdHJ1Y3QgY2VsbF90eXBlKTsKK2V4dGVybiBrYWxfdWludDE2IGw0Y19jb252ZXJ0X2xhY190b19hdChrYWxfdWludDgqICBsYV9jb2RlX3B0cik7CisKKworZXh0ZXJuIHZvaWQgbDRjX253X3VwZGF0ZV9jc19yZWdfc3RhdGVfY29udGV4dChrYWxfdWludDggc3RhdGUsIGthbF91aW50OCBhY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3BlZWRfc3VwcG9ydF9lbnVtIGNlbGxfZGF0YV9zcGVlZF9zdXBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyIGxhY19vcl90YWMsIGthbF91aW50NjQgY2VsbF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJhYywga2FsX3VpbnQ4IGNhdXNlX3R5cGUsIGthbF91aW50MzIgcmVqZWN0X2NhdXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnBsbW4sIGthbF9ib29sIGlzX2hwbG1uKTsKKworZXh0ZXJuIHZvaWQgbDRjX253X3VwZGF0ZV9wc19yZWdfc3RhdGVfY29udGV4dChrYWxfdWludDggc3RhdGUsIGthbF91aW50OCBhY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3BlZWRfc3VwcG9ydF9lbnVtIGNlbGxfZGF0YV9zcGVlZF9zdXBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyIGxhY19vcl90YWMsIGthbF91aW50NjQgY2VsbF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQ4IHJhYywga2FsX3VpbnQ4IGNhdXNlX3R5cGUsIGthbF91aW50MzIgcmVqZWN0X2NhdXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKnBsbW4sIGthbF9ib29sIGlzX2hwbG1uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggdmdtbV9hbGxvd2VkX25zc2FpX2xlbmd0aCwga2FsX3VpbnQ4KiB2Z21tX2FsbG93ZWRfbnNzYWkpOworCisKK2V4dGVybiB2b2lkIGw0Y19ud191cGRhdGVfcmVnX3N0YXRlX2NvbnRleHQocmVnX3N0YXRlX2luZF9zdHJ1Y3QgcmVnX3N0YXRlKTsKKworCisvKiBMNEMgc3VibW9kdWxlcyBNVVNUIGNhbGwgbDRjX3BoYl9zZW5kX2FwcHJvdmVfcmVxKCkKKyAgIHRvIHNlbmQgTVNHX0lEX0w0Q1BIQl9BUFBST1ZFX1JFUSB3aXRoIGFwcHJvdmVfc3JjLiAqLworZXh0ZXJuIHZvaWQgbDRjX3BoYl9zZW5kX2FwcHJvdmVfcmVxKGw0Y19waGJfYXBwcm92ZV9zcmNfZW51bSBhcHByb3ZlX3NyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsNGNwaGJfYXBwcm92ZV9yZXFfc3RydWN0ICpsNGNwaGJfYXBwcm92ZV9yZXFfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqYnVmZmVyX3B0cik7CisKK2V4dGVybiBrYWxfdWludDggbDRjX2dldF9udW1fb2ZfcGhiX2FwcHJvdmVfY25mX2NhbGxiYWNrX3RhYmxlKHZvaWQpOworZXh0ZXJuIGNvbnN0IGw0Y19waGJfYXBwcm92ZV9jbmZfY2FsbGJhY2tfc3RydWN0ICpsNGNfZ2V0X3BoYl9hcHByb3ZlX2NuZl9jYWxsYmFja190YWJsZSh2b2lkKTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogQmVnaW5uaW5nIG9mIGNhbGxiYWNrIGZ1bmN0aW9ucyBmb3IgTVNHX0lEX0w0Q1BIQl9BUFBST1ZFX0NORiAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworZXh0ZXJuIHZvaWQgbDRjY3NtX2NjX2NhbGxfc2V0dXBfcGhiX2FwcHJvdmVfY25mKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CitleHRlcm4gdm9pZCBsNGNfcHNfcGhiX2FwcHJvdmVfY25mKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CitleHRlcm4gdm9pZCBsNGNzbXNhbF9zbXNfcGhiX2FwcHJvdmVfY25mKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CitleHRlcm4gdm9pZCBsNGNjc21fY2lzc19wYXJzZV9zc19waGJfYXBwcm92ZV9jbmYobG9jYWxfcGFyYV9zdHJ1Y3QgKmxvY2FsX3BhcmFfcHRyLCBwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKK2V4dGVybiB2b2lkIGw0Y2NzbV9jaXNzX2N1c2RfcGhiX2FwcHJvdmVfY25mKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CitleHRlcm4gdm9pZCBsNGNwaGJfZWFwcHJvdmVfcGhiX2FwcHJvdmVfY25mKGxvY2FsX3BhcmFfc3RydWN0ICpsb2NhbF9wYXJhX3B0ciwgcGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBFbmQgb2YgY2FsbGJhY2sgZnVuY3Rpb25zIGZvciBNU0dfSURfTDRDUEhCX0FQUFJPVkVfQ05GICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2V4dGVybiB2b2lkIGw0Y191cGRhdGVfZWNjX2NhbGxfaWRfZm9yX3NydmNjKGthbF91aW50OCBjYWxsX2lkKTsKKworCitleHRlcm4ga2FsX2Jvb2wgbDRjX253X2lzX3NlcnZpY2VfbW9kZV9jaGFuZ2VfcmVkdW5kYW50KGw0Y19hY3Rpb25fZW51bSBhY3Rpb24sIHNtdV9zaW1faW5zZXJ0ZWRfZW51bSBzaW1fc3RhdHVzKTsKK2V4dGVybiB2b2lkIGw0Y19ud19zZXJ2aWNlX21vZGVfY2hhbmdlX2V4ZSgpOworZXh0ZXJuIHZvaWQgbDRjX253X3NlcnZpY2VfbW9kZV9jaGFuZ2VfcmVhdHRhY2goKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfbndfaXNfcHNfYXR0YWNoX2xvY2soa2FsX3VpbnQ4IHBzX2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX3RyYWNlX2Z1bmN0aW9uX25hbWVfYW5kX3JldHVybl9saW5lKGNvbnN0IGthbF9jaGFyICpmdW5jdGlvbl9uYW1lLCBrYWxfdWludDMyIGxpbmUsIGthbF9ib29sIHJldHVybl92YWx1ZSk7CitleHRlcm4gcmF0X2VudW0gbDRjX3F1ZXJ5X3ByZWZlcl9yYXRfbW9kZV9ieV9wc19pZChwcm90b2NvbF9pZF9lbnVtIHBzX2lkKTsKK2V4dGVybiByYXRfZW51bSBsNGNfcXVlcnlfcmF0X21vZGVfYnlfcHNfaWQocHJvdG9jb2xfaWRfZW51bSBwc19pZCk7CisKK2V4dGVybiBrYWxfdWludDggbDRjX2dldF9iaXRfbWFzayhrYWxfdWludDgqIGJpdF9tYXNrX2FycmF5LCBsNGNfc291cmNlX2lkX2VudW0gc3JjX2lkKTsKK2V4dGVybiB2b2lkIGw0Y19zZXRfYml0X21hc2soa2FsX3VpbnQ4KiBiaXRfbWFza19hcnJheSwgbDRjX3NvdXJjZV9pZF9lbnVtIHNyY19pZCwga2FsX3VpbnQ4IHZhbHVlKTsKKworZXh0ZXJuIHZvaWQgbDRjX3NpbV9mcmVlX3NpbV9wYXJhbWV0ZXIodm9pZCk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZmluZF9zbXNfY2F0ZWdvcnlfZm9yX210X3NtcyhwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZmluZF9zbXNfY2F0ZWdvcnlfZm9yX21vX3NtcyhwZWVyX2J1ZmZfc3RydWN0ICpwZWVyX2J1ZmZfcHRyKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZmluZF9zbXNfY2F0ZWdvcnlfZm9yX2Ntc3MocGVlcl9idWZmX3N0cnVjdCAqcGVlcl9idWZmX3B0cik7CisKKyNpZmRlZiBfX1RDMDFfXworZXh0ZXJuIGthbF9ib29sIGw0Y19jaGVja19lbWVyZ2VuY3lfY2FsbF9leGlzdHModm9pZCk7CisjZW5kaWYgLypfX1RDMDFfXyovCisKK2V4dGVybiB2b2lkIGw0Y19ud19hbnRlbm5hX3N0YXRlX3JlcG9ydF9zdGFydF90aW1lcl9oZGxyKHZvaWQpOworZXh0ZXJuIHZvaWQgbDRjX253X2FudGVubmFfc3RhdGVfdGltZXJvdXRfaGRscigpOworCisKK2V4dGVybiB2b2lkIGw0Y191cGRhdGVfc2NwX21vbml0b3JfZGF0YShsNGNfc2NwX21vbml0b3JfZW51bSBpbnB1dCk7CisKK2V4dGVybiB2b2lkIGw0Y19jb252ZXJ0X2NhbGxfdHlwZV90b19zY3BfZW51bShjc21jY19jcGlfbXNnX3R5cGVfZW51bSBjcGlfaW5kX3ZhbHVlKTsKKworZXh0ZXJuIGthbF91aW50OCBsNGNfZ2V0X3NjcF9tb25pdG9yX3ZhbHVlKHZvaWQpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2dldF91YWNfZnJlZV90cmFuc2FjdGlvbihrYWxfdWludDggKmlkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfcXVlcnlfdWFjX3RyYW5zYWN0aW9uX2lkKGthbF91aW50OCBzcmNfdHhfaWQsIG1vZHVsZV90eXBlIHNyYywga2FsX3VpbnQ4ICpyZXRfdHhfaWQpOworCitleHRlcm4ga2FsX3VpbnQ4IGw0Y19jb252ZXJ0X3JmX2FuZF9zaW1fc3RhdGVfdG9fY2Z1bihsNF9yZl9zdGF0ZV9lbnVtIHJmX3N0YXRlLCBsNF9zaW1fc3RhdGVfZW51bSBzaW1fc3RhdGUpOworCitleHRlcm4gdm9pZCBsNGNfc2VuZF9waG9uZV9zdGF0ZV9jbmYoa2FsX2Jvb2wgcmVzdWx0LCBrYWxfdWludDE2IGNhdXNlKTsKK2V4dGVybiB2b2lkIGw0Y19zZW5kX3Bob25lX3N0YXRlX2NuZl90b19sNGJwd3Jfd2l0aF9tb25pdG9yKGthbF9ib29sIHJlc3VsdCwga2FsX3VpbnQxNiBjYXVzZSk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfZ2V0X25pdHpfaW5mb3JtYXRpb24obDRjX253X3RpbWVfem9uZV90aW1lX3N0cnVjdCAqbml0el9wdHIpOworZXh0ZXJuIHZvaWQgbDRjX253X2RlYWN0aXZhdGVfZW5kYyhrYWxfYm9vbCBkZWFjdGl2YXRlLCBrYWxfYm9vbCBhbGxvd19zY2dfYWRkKTsKK2V4dGVybiBrYWxfaW50OCBsNGNfZ2V0X2VmdW5fcmZvZmZfY2F1c2Uodm9pZCk7CisKKworI2lmIGRlZmluZWQoX19TRU5TSVRJVkVfREFUQV9NT1NBSUNfXykKK2V4dGVybiBzYXBfdHlwZSBsNGNfY2hlY2tfc2Vuc2l0aXZlX2RhdGFfbXNnKG1zZ190eXBlIG1zZ19pZCxzYXBfdHlwZSBzYXBfaWQpOworI2VuZGlmCisKKyNpZmRlZiBfX0NCX18KK2V4dGVybiBrYWxfYm9vbCBsNGNfc21zYWxfYWRkX2NiX2NoYW5uZWxzKGw0Y19jYl9pbmZvX3N0cnVjdCAqaW5mbyk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3Ntc2FsX3JlbW92ZV9jYl9jaGFubmVscyhsNGNfY2JfaW5mb19zdHJ1Y3QgKmluZm8pOworZXh0ZXJuIGthbF9ib29sIGw0Y19zbXNhbF9jb25zdHJ1Y3RfY2JfY29uZmlndXJhdGlvbihrYWxfdWludDggbW9kZSxsNGNfY2JfaW5mb19zdHJ1Y3QgKmluZm8sa2FsX3VpbnQ4ICplcnJvcl9jYXVzZSk7CisjZW5kaWYKKworZXh0ZXJuIGthbF9ib29sIGw0Y19ud19pc19ob21lX2NvdW50cnkoKTsKKworI2lmZGVmIF9fQVJGQ05fVE9fQ0FNRVJBX1NVUFBPUlRfXworZXh0ZXJuIHZvaWQgbDRjX2NsZWFyX2NhbWVyYV9lYXJmY25faW5mbyh2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19jYW1lcmFfcmVwb3J0X2NhbGxfaW5kIChrYWxfYm9vbCBpc19jYWxsX3ByZXNlbnQpOworI2VuZGlmCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfbmVnYXRpdmVfc3dpdGNoX2h2b2x0ZV9tb2RlX2J5X2RlcmVnX2NhdXNlKGthbF91aW50OCBkZXJlZ19jYXVzZSk7CisjaWZkZWYgX19UQzAxX18KK2V4dGVybiBrYWxfYm9vbCBsNGNfZ2V0X2JlYXJlcl9pZChjb25zdCBrYWxfdWludDggY2lkLCBrYWxfdWludDggKmJlYXJlcl9pZCk7CisjZW5kaWYgLyogX19UQzAxX18gKi8KKworZXh0ZXJuIHZvaWQgbDRjX253X3NldF9pYV9wZG5faW5mbyhsNGNfaWFfcGRuX2luZm9fc3RydWN0KiBpYV9wZG5faW5mbyk7CisKK2V4dGVybiBrYWxfYm9vbCBsNGNfbndfaXNfdWVfY2FwYWJpbGl0eV9pbmRfcHJvY2VkdXJlX2NvbmZsaWN0KCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3VlX2NhcGFiaWxpdHlfZGV0YWNoX2F0dGFjaCgpOworZXh0ZXJuIGthbF9ib29sIGw0Y19lbnF1ZXVlX3VlX2NhcGFiaWxpdHlfZXhlKGw0Y19xdWV1ZV9wZW5kaW5nX2FjdGlvbl9pdGVtX3N0cnVjdCAqcGVuZGluZ19hY3Rpb25faXRlbSk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2RlcXVldWVfdWVfY2FwYWJpbGl0eV9leGUodm9pZCAqcGVuZGluZ19hY3Rpb25faXRlbSk7CisKKyNpZiBkZWZpbmVkIChfX1RDMDFfXykgJiYgZGVmaW5lZCAoX19TR0xURV9fKSAvLyBhdCVsdGVjYWxsCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NoZWNrX3BzX2F0dGFjaF9hbGxvd2VkKCk7CisjZW5kaWYKKworZXh0ZXJuIGthbF91aW50OCBsNGNfc2tpcF9pbnZhbGlkX2NoYXJhY3RlcnMoa2FsX3VpbnQ4ICpudW1iZXIpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX3N0YW5kYWxvbmVfZHVwbGV4X21vZGVfY2hhbmdlX2xhc3RfdGltZSgpOworZXh0ZXJuIHZvaWQgbDRjX2NsZWFyX3N0YW5kYWxvbmVfZHVwbGV4X21vZGVfY2hhbmdlX2NvbnRleHQoKTsKKworI2lmZGVmIF9fRkVBVFVSRV9TQU1TVU5HX1JGX1NBUl9FVVJfQ0hLX18KK2V4dGVybiB2b2lkIGw0Y19ud19tY2NfZm9yX3B3cl9iYWNrb2ZmX2ZlYXR1cmUoa2FsX3VpbnQ4ICpwbG1uKTsKKyNlbmRpZgorCisjaWZkZWYgX19UQzEwX18KK2V4dGVybiBrYWxfYm9vbCBsNGNfaXNfbWRfcmVhZHkodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfbndfcmVnaXN0ZXJfbml0el9jYWxsYmFjayhsNGNfbndfcmVnaXN0ZXJfbml0el9jYiBuaXR6X2NiKTsKKyNlbmRpZiAvKiBfX1RDMTBfXyAqLworCitleHRlcm4gbDRjX3Bvd2VyX2xldmVsX3RocmVzaG9sZF9yYW5nZV9lbnVtIGw0Y19nZXRfdGhyZXNob2xkX3JhbmdlKGthbF91aW50OCBpbmRleCk7CisKK2V4dGVybiBsNGNfcG93ZXJfbGV2ZWxfdGhyZXNob2xkX3JhbmdlX2VudW0gbDRjX2NoZWNrX3NpZ25hbF92YWx1ZV9yYW5nZShrYWxfaW50MzIgc2lnX3ZhbHVlLCBrYWxfdWludDggc2lnX3R5cGUpOworZXh0ZXJuIHZvaWQgbDRjX3NtdV9nZXRfbWNjX21uY19zdHIoa2FsX2NoYXIgKiBtY2NfbW5jKTsKKworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX3RocmVzaG9sZF9jaGFuZ2VkKGl3bGFuX2w0Y19zZXRfcHdsX3RocmhkX3JlcV9zdHJ1Y3QgKmN1cnJlbnRfdGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDRjX3B3bF90aHJoZF9zdHJ1Y3QgKnByZXZpb3VzX3RocmVzaG9sZCk7CisKKyNpZiBkZWZpbmVkKF9fQ1RfSFZPTFRFX0RFRkFVTFRfVk9QU19NT0RFX18pCitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX3NldF9odm9sdGVfY29udGV4dF9ieV9zaW1fY2FyZCgpOworI2VuZGlmCitleHRlcm4ga2FsX3VpbnQxNiBsNGNfZ2V0X21jY19mcm9tX3BsbW5fZm91bmQodm9pZCk7CisKK2thbF9ib29sIGw0Y19pc19saW1pdGVkX3NlcnZpY2VfcnVsZV9ieV9zaW1fdHlwZShwcm90b2NvbF9pZF9lbnVtIHBzX2lkLCBzaW1fb3BlcmF0b3JfdHlwZV9lbnVtIGNhcmRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRfZW51bSByYXRfbW9kZSwgaW1zX2NhcF9yYXRfZW51bSBpbXNfdm9pY2VfcmF0LCBrYWxfdWludDgqIGNhbXBlZF9wbG1uKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y190cmlnZXJfbG9ja19hdHRhY2hfYW55KGw0Y19hY3Rpb25fZW51bSBsNGNfYWN0aW9uLCBsNGNfcGVuZGluZ19hY3Rpb25fZW51bSBwZW5kaW5nX3F1ZXVlX2FjdGlvbik7CitleHRlcm4ga2FsX2Jvb2wgbDRjX25zc2FpX2NvbnZlcnRfaGV4c3RyaW5nX3RvX2RpZ2l0KGthbF91aW50OCAqZGVzdCwga2FsX3VpbnQ4ICpzb3VyY2UsIGthbF91aW50OCAqbGVuZ3RoX2luX29jdGV0cyk7CitleHRlcm4ga2FsX3VpbnQ4IGw0Y19uc3NhaV9jb252ZXJ0X2RpZ2l0X3RvX2hleHN0cmluZyhrYWxfdWludDE2IG1heF9zaXplLCBrYWxfdWludDggKmRlc3QsIGthbF91aW50OCAqc291cmNlLCBrYWxfdWludDggbGVuZ3RoX2luX29jdGV0cywga2FsX2Jvb2wgaXNfcmVqZWN0ZWRfbnNzYWkpOworCitleHRlcm4gdm9pZCBsNGNfc2VuZF9pY2RfZXBzZmJzX2V2ZW50KGthbF91aW50OCBzdGF0ZSwga2FsX3VpbnQ4IHR5cGUpOworCitleHRlcm4ga2FsX2NoYXIqIGw0Y19wc19hZGRfcGxtbl9saXN0X2Jsb2NrX2FwbihrYWxfdWludDggY2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX3BzX2NsZWFyX3BsbW5fbGlzdF9ibG9ja19hcG4ocHNfY2F1c2VfZW51bSBjYXVzZSk7CisKK2V4dGVybiB2b2lkIGw0Y19wc19zZW5kX3BhbV9iYWNrb2ZmX3RpbWVyX3JlcG9ydF9pbmQoa2FsX2Jvb2wgaXNfcmVzZXQsIHBzX2NhdXNlX2VudW0gY2F1c2UsIGthbF9jaGFyICphcG4pOworCitleHRlcm4gdm9pZCBsNGNfbm90aWZ5X2VuZF9vZl9wbG1uX2xpc3QoKTsKKworZXh0ZXJuIHJhdF9lbnVtIGw0Y19jaGVja19lZl9yYXRfdG9fY29uZmlnX3ZnX29wdGlvbihyYXRfZW51bSBvbGRfcmF0X21vZGUpOworCisjaWZkZWYgX19UQzAxX18KK2V4dGVybiB2b2lkIGw0Y19ud191cGRhdGVfcGRuX2FjdF9jbmZfc3RhdHVzKGthbF9ib29sIGlzX3N1Y2Nlc3MpOworI2VuZGlmCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfaXNfcGxtbl9pZF92YWxpZChsNGNfcGxtbl90eXBlX2VudW0gcGxtbl90eXBlLCBrYWxfdWludDgqIHBsbW5fYXJyYXksIHBsbW5faWRfc3RydWN0KiBwbG1uX21jY19tbmMpOworCitleHRlcm4gcmF0X2VudW0gbDRjX3RjMTBfcmF0X21vZGVfdmFsaWRhdG9yKGthbF91aW50OCBzcmNfaWQsIHJhdF9lbnVtIG9sZF9yYXRfbW9kZSk7CisKK2V4dGVybiBrYWxfdWludDggbDRjX2dldF9jbGlfdmFsaWRpdHkobDRjY3NtX2NjX3BlZXJfYWRkcl9zdHJ1Y3QgKmNhbGxpbmdfbnVtYmVyLCBrYWxfdWludDggY2FsbGluZ19udW1iZXJfcHJlc2VudCwga2FsX3VpbnQ4IG5vX2NsaV9jYXVzZV9wcmVzZW50LCBrYWxfdWludDggbm9fY2xpX2NhdXNlKTsKKworZXh0ZXJuIHJhdF9lbnVtIGw0Y19yYXRfY2hhbmdlX2Zvcl9vcGVyX253X3ZhbGlkYXRvcihrYWxfdWludDggc3JjX2lkLCByYXRfZW51bSBvbGRfcmF0X21vZGUpOworCitleHRlcm4ga2FsX2Jvb2wgbDRjX2NoZWNrX3JhdF9tb2RlX3NhdmVfdG9fbnZyYW0oa2FsX3VpbnQ4IHNyY19pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX253X2dldF9yYXRfbW9kZV9zYXZlX3RvX252cmFtX3N0YXR1ZXModm9pZCk7CitleHRlcm4gdm9pZCBsNGNfdXBkYXRlX3Jmb2ZmX2NuZl9jb250ZXh0KCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX253X2NoZWNrX3JhdF9jaGFuZ2VfbmVlZGVkKCk7CitleHRlcm4gdm9pZCBsNGNfbHRlX29ubHlfdGltZW91dF9oZGxyKHZvaWQpOworZXh0ZXJuIHZvaWQgbDRjX3N0b3BfbHRlX3JhdF9tb2RlX2NoYW5nZV90aW1lcl9oZGxyKHZvaWQpOworZXh0ZXJuIHZvaWQgbDRjX3N0YXJ0X2x0ZV9yYXRfbW9kZV9jaGFuZ2VfdGltZXJfaGRscih2b2lkKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfY3VzdG9tX3JhdF9zZXR0aW5nX25lZWRlZCgpOworZXh0ZXJuIGthbF9ib29sIGw0Y19ud19jaGVja19yYXRfY2hhbmdlX25lZWRlZF9mb3JfZG9jb21vKGthbF91aW50OCAqcGxtbik7CisKK3ZvaWQgbDRjX253X2NoZWNrX3NlcnZpY2VfY2hhbmdlX29uX3ZvcHNfc2V0dGluZyhpbXNfY2FwX3JhdF9lbnVtIG9sZF9pbXNfdm9pY2VfcmF0LCBpbXNfY2FwX3JhdF9lbnVtIG5ld19pbXNfdm9pY2VfcmF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCogb2xkX2NhbXBlZF9wbG1uLCBrYWxfdWludDgqIG5ld19jYW1wZWRfcGxtbik7CisKK2V4dGVybiB2b2lkIGw0Y19jaGVja192Z19vcHRpb25fc2V0dGluZ193aXRoX3Nhc2Uodmdfb3B0aW9uX2VudW0gdmdfb3B0aW9uLCBrYWxfdWludDggc3JjX2lkKTsKK2V4dGVybiB2b2lkIGw0Y191cGRhdGVfdmdfb3B0aW9uX3RvX3JhYyh2Z19vcHRpb25fZW51bSB2Z19vcHRpb24sIGthbF91aW50OCBhY3Rfb3BlcmF0aW9uLCBrYWxfdWludDggc3JjX2lkLCBtb2R1bGVfdHlwZSB1c2VyKTsKKyNpZmRlZiBfX1dISVRFX0NFTExfTE9DS19fCitleHRlcm4ga2FsX3VpbnQzMiBsNGNfbndfYmFuZF9iaXRfbWFza190b19hcnJheSAocmF0X2VudW0gcmF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MzIgKmJhbmRfYml0X21hc2tfdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbndfc2Nhbl9iYW5kX2VudW0gKmJhbmRfYXJyYXlfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50MTYgYml0X21hc2tfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IGludF9hcnJfbGVuKTsKKyNlbmRpZiAvKiBfX1dISVRFX0NFTExfTE9DS19fICovCisKK2V4dGVybiBrYWxfYm9vbCBsNGNfdHJpZ2VyX2xvY2tfYXR0YWNoX2FueShsNGNfYWN0aW9uX2VudW0gbDRjX2FjdGlvbiwgbDRjX3BlbmRpbmdfYWN0aW9uX2VudW0gcGVuZGluZ19xdWV1ZV9hY3Rpb24pOworCitleHRlcm4ga2FsX2NoYXIqIGw0Y19wc19hZGRfcGxtbl9saXN0X2Jsb2NrX2FwbihrYWxfdWludDggY2lkKTsKK2V4dGVybiB2b2lkIGw0Y19wc19jbGVhcl9wbG1uX2xpc3RfYmxvY2tfYXBuKHBzX2NhdXNlX2VudW0gY2F1c2UpOworZXh0ZXJuIHZvaWQgbDRjX3BzX3NlbmRfcGFtX2JhY2tvZmZfdGltZXJfcmVwb3J0X2luZChrYWxfYm9vbCBpc19yZXNldCwgcHNfY2F1c2VfZW51bSBjYXVzZSwga2FsX2NoYXIgKmFwbik7CisKK2V4dGVybiB2b2lkIGw0Y19ub3RpZnlfZW5kX29mX3BsbW5fbGlzdCgpOworCitleHRlcm4ga2FsX3VpbnQzMiBsNGNfcHNfZ2V0X2Fwbl90eXBlX2J5X2NpZChwcm90b2NvbF9pZF9lbnVtIHBzX2lkLCBrYWxfdWludDggY2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX3NldF9tb19kaXNjX2NhdXNlKGthbF91aW50MTYgZGlzY19jYXVzZSk7CisKKyNpZmRlZiBfX0VDQUxMX1NVUFBPUlRfXworZXh0ZXJuIGthbF9ib29sIGw0Y19nZXRfdXNpbV9lY2FsbF9udW1iZXIobDRfYWRkcl9iY2Rfc3RydWN0ICpjYWxsZWRfbnVtYmVyLGthbF91aW50OCBlY2NfaW5mbyk7CisjZW5kaWYgLyogX19FQ0FMTF9TVVBQT1JUX18gKi8KKworI2lmZGVmIF9fTkdfRUNBTExfU1VQUE9SVF9fCitleHRlcm4gdm9pZCBsNGNfY29udmVydF9hZGRyX2JjZF90b19hc2NpaShsNF9hZGRyX2JjZF9zdHJ1Y3QgKnNvdXJjZSwga2FsX3VpbnQ4ICpkZXN0KTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZ2V0X3VzaW1fZWNhbGxfdXJpKGw0X3BoYl91cmlfc3RydWN0ICp1c2ltX3VyaSwga2FsX3VpbnQ4IGVjY19pbmZvKTsKK2V4dGVybiBrYWxfYm9vbCBsNGNfZ2V0X2VjYWxsX2ltc191cmkoa2FsX3VpbnQ4ICpvdXRwdXRfc3RyaW5nLGthbF91aW50OCAqdHlwZSwga2FsX3VpbnQ4IGVjY19pbmZvKTsKKyNlbmRpZiAvKiBfX05HX0VDQUxMX1NVUFBPUlRfXyAqLworCitleHRlcm4gdm9pZCBsNGNfcm9vdF9wb3dlcl9vZmZfcmVxKGthbF91aW50OCByb290X3NyY19pZCk7CitleHRlcm4gdm9pZCBsNGNfcm9vdF9wb3dlcl9vZmZfZG9uZV9pbmQoa2FsX3VpbnQ4IHJvb3Rfc3JjX2lkKTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y19yb290X2NtZF9jb25mbGljdChrYWxfdWludDggc3JjX2lkLCBsNGNfcm9vdF9hY3Rpb25fZW51bSBuZXdfYWN0aW9uKTsKKworZXh0ZXJuIGthbF9pbnQzMiBsNGNfZ2V0X3NpZ25hbF92YWx1ZV9ieV90eXBlKGw0Y19zaWdfdHlwZV9lbnVtIHNpZ25hbF90eXBlKTsKKworZXh0ZXJuIGthbF9pbnQzMiBsNF9zbnByaW50ZihrYWxfY2hhciAqYnVmZmVyLCBrYWxfdWludDMyIHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKKworZXh0ZXJuIHZvaWQgbDRjX3N0YXJ0X3dhaXRfb25fbHRlX3BhZ2luZ190aW1lcih2b2lkKTsKKworZXh0ZXJuIHZvaWQgbDRjX3dhaXRfb25fbHRlX3BhZ2luZ190aW1lb3V0X2hkbHIodm9pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2NoZWNrX3JhdF9jaGFuZ2VfZmVhdHVyZV9lbmFibGUoKTsKK2V4dGVybiB2b2lkIGw0Y19jdXN0b21fY29uZmlnX2ZkX3NldHRpbmcocHJvdG9jb2xfaWRfZW51bSBwc19pZCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX2lzX2VtZXJnZW5jeV9jYWxsX29uZ29pbmcocHJvdG9jb2xfaWRfZW51bSBwc19pZCk7CisKK2V4dGVybiB2b2lkIGw0Y19ud19zZXRfcGNvXzVndXdfYWxsb3coa2FsX2Jvb2wgaXNfNWd1d19hbGxvdyk7CitleHRlcm4gdm9pZCBsNGNfbndfNWd1d19zZXRfaXNfdWx0cmFfd2JfY29uZmlndXJlKGthbF9ib29sIGlzX243N19jb25maWd1cmVkLCAga2FsX2Jvb2wgaXNfZnIyX2NvbmZpZ3VyZWQsIGthbF9ib29sIGlzX25ycmNfZW50ZXJfY29ubik7CitleHRlcm4gdm9pZCBsNGNfbndfdXBkYXRlXzVndXdfc3RhdGVfZXJyY19pZGxlX3RvX2Nvbm4odm9pZCk7CitleHRlcm4gdm9pZCBsNGNfbndfdXBkYXRlXzVndXdfc3RhdGVfZXJyY19jb25uX3RvX2lkbGUodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfbndfdXBkYXRlXzVndXdfc3RhdGVfdWxpX2Rpc2FwcGVhcih2b2lkKTsKK2V4dGVybiB2b2lkIGw0Y19ud19yZV9jYWxjdWxhdGVfYW5kX3VwZGF0ZV81Z3V3X2Rpc3BsYXkodm9pZCk7CitleHRlcm4gdm9pZCBsNGNfbndfc3RvcF90dXdfdGltZXIobDRjX3RpbWVyX2lkX2VudW0gdGltZXJfaWQpOworZXh0ZXJuIHZvaWQgbDRjX253X3N0YXJ0X3R1d190aW1lcihsNGNfdGltZXJfaWRfZW51bSB0aW1lcl9pZCk7CitleHRlcm4gdm9pZCB0dXdfMV90aW1lcl90aW1lb3V0X2hkbHIoKTsKK2V4dGVybiB2b2lkIHR1d18yX3RpbWVyX3RpbWVvdXRfaGRscigpOworZXh0ZXJuIHZvaWQgdHV3XzNfdGltZXJfdGltZW91dF9oZGxyKCk7CitleHRlcm4gdm9pZCBsNGNfbndfcmVzZXRfNWd1d19jb250ZXh0KCk7CisjaWZkZWYgX19FUFNGQl9TVVBQT1JUX18KK2V4dGVybiBrYWxfYm9vbCBsNGNfaXNfZXBzZmJfbmVlZGVkKHByb3RvY29sX2lkX2VudW0gcHNfaWQsIHJhdF90eXBlX2VudW0gc291cmNlX3JhdCwgcmF0X3R5cGVfZW51bSB0YXJnZXRfcmF0LCBpcmF0X3R5cGVfZW51bSBpcl90eXBlKTsKKyNlbmRpZgorZXh0ZXJuIGthbF9ib29sIGw0Y19pc19jYWxsX29uZ29pbmdfb3Zlcl93aWZpKCk7CisjZW5kaWYgLyogX0w0Q19VVElMSVRZX0ggKi8gLyogbDRjX3V0aWxpdHkuaCAqLwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDVfbDRjX2VudW1zLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNV9sNGNfZW51bXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDNkNmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbDVfbDRjX2VudW1zLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBsNV9sNGNfZW51bXMuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICAKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAgCisgKiAgIAorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmICBfTDVfTDRDX0VOVU1TX0gKKyNkZWZpbmUgIF9MNV9MNENfRU5VTVNfSAorCisKKyNpZmRlZiBfX0w1X1NVUFBPUlRfXworCisjaW5jbHVkZSAiYXNfaW50ZXJfY29yZV9lbnVtLmgiCisjaW5jbHVkZSAibXJzX2NvbW1vbl9jYXBhYmlsaXR5LmgiCisKKworLyoqKioqKioqKioqIE1BQ1JPUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lICBMVEVfQkFORF9CSVRNQVNLX01BWF9TVVBQT1JUX1NJWkUgIChTSVpFX0xURV9CQU5EX01BU0tfVEFCTEVfRVhURU5ERUQvNCkgLyogMzIqODogYmFuZCAxIH4gYmFuZCAyNTYgKi8KKyNkZWZpbmUgIE5SX0JBTkRfQklUTUFTS19NQVhfU1VQUE9SVF9TSVpFICAgKE1SU19OUl9CQU5EX0JJVE1BU0tfU0laRS80KSAvKiAzMiozMjogYmFuZCAxIH4gYmFuZCAxMDI0ICovCisjZGVmaW5lICBNQVhfTFRFX1JBTl9DRUxMX0xJU1QgICAgICAgICAgICAgIDMyCisjZGVmaW5lICBNQVhfTlJfUkFOX0NFTExfTElTVCAgICAgICAgICAgICAgIDMyCisKKworLyoqKioqKioqKioqKiAgVFlQRVMgREVGSU5JVElPTlMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmZGVmIF9fTUJJTV9NU19ORVRXT1JLX0JMQUNLTElTVF9fCit0eXBlZGVmIGVudW0geworICAgIE5XX0JMQUNLX0xJU1RfU1RBVEVfTk9UX0FDVFVBVEVELAorICAgIE5XX0JMQUNLX0xJU1RfU0lNX1BST1ZJREVSX0FDVFVBVEVELAorICAgIE5XX0JMQUNLX0xJU1RfTkVUV09SS19QUk9WSURFUl9BQ1RVQVRFRAorfSBud19ibGFja19saXN0X3N0YXRlX2VudW07CisKK3R5cGVkZWYgZW51bXsKKyAgICBOV19CTEFDS19MSVNUX1RZUEVfU0lNLAorICAgIE5XX0JMQUNLX0xJU1RfVFlQRV9ORVRXT1JLCit9bndfYmxhY2tfbGlzdF90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bXsKKyAgICBOV19CTEFDS19MSVNUX0lOSVRfTlVMTCwKKyAgICBOV19CTEFDS19MSVNUX0lOSVRfU0lNLAorICAgIE5XX0JMQUNLX0xJU1RfSU5JVF9OVywKKyAgICBOV19CTEFDS19MSVNUX0lOSVRfRE9ORQorfW53X2JsYWNrX2xpc3RfaW5pdF9zdGF0ZV9lbnVtOworI2VuZGlmCisKKyNlbmRpZgorCisjZW5kaWYgLyogX0w1X0w0Q19FTlVNU19IICovCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNV9sNGNfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sNV9sNGNfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc2ZGY1OQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2w1X2w0Y19zdHJ1Y3QuaApAQCAtMCwwICsxLDE5MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGw1X2w0Y19zdHJ1Y3QuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICoKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKgorICoKKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiAgX0w1X0w0Q19TVFJVQ1RfSAorI2RlZmluZSAgX0w1X0w0Q19TVFJVQ1RfSAorCisjaWZkZWYgX19MNV9TVVBQT1JUX18KKworI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKyNpbmNsdWRlICJsNV9sNGNfZW51bXMuaCIKKyNpbmNsdWRlICJyYWMybDRjX3N0cnVjdC5oIgorI2luY2x1ZGUgIm1tcmZfbXNnX2ludGVyZmFjZS5oIgorCisjaWZkZWYgX19NQklNX01TX05FVFdPUktfQkxBQ0tMSVNUX18KKwordHlwZWRlZiBzdHJ1Y3R7CisgICAga2FsX3VpbnQxNiBtY2M7CisgICAga2FsX2Jvb2wgICBpc18yX2RpZ2l0X21uYzsKKyAgICBrYWxfdWludDE2IG1uYzsKKyAgICBud19ibGFja19saXN0X3R5cGVfZW51bSBsaXN0X3R5cGU7Cit9bndfYmxhY2tfbGlzdF9wcm92aWRlcl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCB0cmFuc2FjdGlvbl9pZDsKKyAgICBrYWxfdWludDggbnVtX29mX2JsYWNrX2xpc3Q7CisgICAgbndfYmxhY2tfbGlzdF9wcm92aWRlcl9zdHJ1Y3QgYmxhY2tfbGlzdFtNQVhfTldfQkxBQ0tfTElTVF07Cit9bDVfbDRjX3NldF9ud19ibGFja19saXN0X3JlcV9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHRyYW5zYWN0aW9uX2lkOworICAgIG53X2JsYWNrX2xpc3Rfb3BlcmF0b3JfcmVzdWx0X2VudW0gcmVzdWx0OworfWw1X2w0Y19zZXRfbndfYmxhY2tfbGlzdF9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggdHJhbnNhY3Rpb25faWQ7Cit9bDVfbDRjX2dldF9ud19ibGFja19saXN0X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCB0cmFuc2FjdGlvbl9pZDsKKyAgICBud19ibGFja19saXN0X29wZXJhdG9yX3Jlc3VsdF9lbnVtIHJlc3VsdDsKKyAgICBrYWxfdWludDggbnVtX29mX2JsYWNrX2xpc3Q7CisgICAgbndfYmxhY2tfbGlzdF9wcm92aWRlcl9zdHJ1Y3QgYmxhY2tfbGlzdFtNQVhfTldfQkxBQ0tfTElTVF07Cit9bDVfbDRjX2dldF9ud19ibGFja19saXN0X2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIG53X2JsYWNrX2xpc3Rfc3RhdGVfZW51bSBibGFja19saXN0X3N0YXRlOworICAgIGthbF91aW50OCBudW1fb2ZfYmxhY2tfbGlzdDsKKyAgICBud19ibGFja19saXN0X3Byb3ZpZGVyX3N0cnVjdCBibGFja19saXN0W01BWF9OV19CTEFDS19MSVNUXTsKK31sNV9sNGNfbndfYmxhY2tfbGlzdF9zdGF0ZV9pbmRfc3RydWN0OworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDE2ICBwY2k7CisgICAga2FsX3VpbnQzMiAgZWFyZmNuOworfWx0ZV9yYW5fY2VsbF9pbmZvX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50MTYgIHBjaTsKKyAgICBrYWxfdWludDMyICBuYXJmY247CisgICAga2FsX3VpbnQxNiAgbnJfYmFuZF9pbmRpY2F0b3I7Cit9bnJfcmFuX2NlbGxfaW5mb19zdHJ1Y3Q7CisKKy8qc3RydWN0IGRlZmluZWQgZm9yIE1TR19JRF9MNV9MNENfQ0VMTF9MSVNUX1JFUSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisJa2FsX3VpbnQ4ICAgdHJhbnNhY3Rpb25faWQ7CisgICAgLyogTHRlIGJhbmQgbGlzdCBiaXRtYXNrIGFycmF5ICovCisgICAga2FsX3VpbnQzMiAgbHRlX2JhbmRfbGlzdFtMVEVfQkFORF9CSVRNQVNLX01BWF9TVVBQT1JUX1NJWkVdOworICAgIC8qIE5SIGJhbmQgbGlzdCBiaXRtYXNrIGFycmF5ICovCisgICAga2FsX3VpbnQzMiAgbnJfYmFuZF9saXN0W05SX0JBTkRfQklUTUFTS19NQVhfU1VQUE9SVF9TSVpFXTsKKyAgICAvKiBpZiBUUlVFIG5yX2VuZGNfYmFuZF9saXN0IGlzIHByZXNlbnQgKi8KKyAgICBrYWxfYm9vbCAgICBucl9lbmRjX2JhbmRfbGlzdF9wcmVzZW50OworICAgIC8qIE5SIEVOREMgYmFuZCBsaXN0IGJpdG1hc2sgYXJyYXkgKi8KKyAgICBrYWxfdWludDMyICBucl9lbmRjX2JhbmRfbGlzdFtOUl9CQU5EX0JJVE1BU0tfTUFYX1NVUFBPUlRfU0laRV07CisgICAgLyogTHRlIGNlbGwgbGlzdCBudW1iZXIqLworICAgIGthbF91aW50OCAgIG51bV9vZl9sdGVfY2VsbDsKKyAgICAvKiBOUiBjZWxsIGxpc3QgbnVtYmVyKi8KKyAgICBrYWxfdWludDggICBudW1fb2ZfbnJfY2VsbDsKKyAgICAvKiBMdGUgY2VsbCBsaXN0ICovCisgICAgbHRlX3Jhbl9jZWxsX2luZm9fc3RydWN0ICAgIGx0ZV9jZWxsX2xpc3RbTUFYX0xURV9SQU5fQ0VMTF9MSVNUXTsKKyAgICAvKiBOUiBjZWxsIGxpc3QgKi8KKyAgICBucl9yYW5fY2VsbF9pbmZvX3N0cnVjdCAgICAgbnJfY2VsbF9saXN0W01BWF9OUl9SQU5fQ0VMTF9MSVNUXTsKKworfWw1X2w0Y19jZWxsX2xpc3RfcmVxX3N0cnVjdDsKKworLypzdHJ1Y3QgZGVmaW5lZCBmb3IgTVNHX0lEX0w1X0w0Q19DRUxMX0xJU1RfQ05GICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICB0cmFuc2FjdGlvbl9pZDsKKyAgICBrYWxfYm9vbCAgICByZXN1bHQ7CisKK31sNV9sNGNfY2VsbF9saXN0X2NuZl9zdHJ1Y3Q7CisKKy8qc3RydWN0IGRlZmluZWQgZm9yIE1TR19JRF9MNV9MNENfR0VUX1JGX1NUQVRVU19SRVEgKi8KK3R5cGVkZWYgbDRjX21tcmZfZ2V0X3JmX3N0YXR1c19yZXFfc3RydWN0IGw1X2w0Y19nZXRfcmZfc3RhdHVzX3JlcV9zdHJ1Y3Q7CisKKy8qc3RydWN0IGRlZmluZWQgZm9yIE1TR19JRF9MNV9MNENfR0VUX1JGX1NUQVRVU19DTkYgKi8KK3R5cGVkZWYgbDRjX21tcmZfZ2V0X3JmX3N0YXR1c19jbmZfc3RydWN0IGw1X2w0Y19nZXRfcmZfc3RhdHVzX2NuZl9zdHJ1Y3Q7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfaW50MTYgIHNyeGxldl9pbl9xZGI7IC8qIHJhbmdlIC0zMjc2OCB+IDMyNzY3LCBpbnZhbGlkIHZhbHVlOjB4N2ZmZiAqLworICAgIGthbF9pbnQxNiAgc3F1YWxfaW5fcWRiOyAgLyogcmFuZ2UgLTMyNzY4IH4gMzI3NjcsIGludmFsaWQgdmFsdWU6MHg3ZmZmICovCit9cHNfY2VsbF9zcnhsZXZfaW5mb19zdHJ1Y3Q7CisKKworLypzdHJ1Y3QgZGVmaW5lZCBmb3IgTVNHX0lEX0w1X0w0Q19DRUxMX1BXUl9TUlhMRVZfSU5EICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgIHJhdF9tb2RlOyAgIC8qIHJlZiByYXRfZW51bSwgbm93IHN1cHBvcnQgUkFUX0xURS9SQVRfTlIgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgIGlzX3NyeGxldl9pbmZvX3ZhbGlkOyAvKiB3aGVydGhlciBvciBub3QgaXMgc3J4bGV2IGluZm8gaXMgdmFsaWQuICovCisgICAgcHNfY2VsbF9zcnhsZXZfaW5mb19zdHJ1Y3QgICAgICBwc19jZWxsX3NyeGxldl9pbmZvOyAvKiBzcnhsZXggaW5mbyovCisKK31sNV9sNGNfY2VsbF9wd3Jfc3J4bGV2X2luZF9zdHJ1Y3Q7CisKKyNpZmRlZiAgX19MNV9TVVBQT1JUX18KK3R5cGVkZWYgbDRjcmFjX3NldF9hbGxvd2VkX21jY19saXN0X3JlcV9zdHJ1Y3QgbDVfbDRjX3NldF9hbGxvd2VkX21jY19saXN0X3JlcV9zdHJ1Y3Q7Cit0eXBlZGVmIGw0Y3JhY19zZXRfYWxsb3dlZF9tY2NfbGlzdF9jbmZfc3RydWN0IGw1X2w0Y19zZXRfYWxsb3dlZF9tY2NfbGlzdF9jbmZfc3RydWN0OwordHlwZWRlZiBsNGNyYWNfc2V0X3ByZWZfbnNzYWlfcmVxX3N0cnVjdCAgICAgICBsNV9sNGNfc2V0X3ByZWZfbnNzYWlfcmVxX3N0cnVjdDsKK3R5cGVkZWYgbDRjcmFjX3NldF9wcmVmX25zc2FpX2NuZl9zdHJ1Y3QgICAgICAgbDVfbDRjX3NldF9wcmVmX25zc2FpX2NuZl9zdHJ1Y3Q7Cit0eXBlZGVmIGw0Y3JhY19zZXRfbnNzYWlfcmVxX3N0cnVjdCAgICAgICAgICAgIGw1X2w0Y19zZXRfbnNzYWlfcmVxX3N0cnVjdDsKK3R5cGVkZWYgbDRjcmFjX3NldF9uc3NhaV9jbmZfc3RydWN0ICAgICAgICAgICAgbDVfbDRjX3NldF9uc3NhaV9jbmZfc3RydWN0OwordHlwZWRlZiBsNGNyYWNfZ2V0X25zc2FpX3JlcV9zdHJ1Y3QgICAgICAgICAgICBsNV9sNGNfZ2V0X25zc2FpX3JlcV9zdHJ1Y3Q7Cit0eXBlZGVmIGw0Y3JhY19nZXRfbnNzYWlfY25mX3N0cnVjdCAgICAgICAgICAgIGw1X2w0Y19nZXRfbnNzYWlfY25mX3N0cnVjdDsKK3R5cGVkZWYgbDRjcmFjX3ZnbW1fbndfcGFyYW1zX2luZF9zdHJ1Y3QgICAgICAgbDVfbDRjX3ZnbW1fbndfcGFyYW1zX2luZF9zdHJ1Y3Q7CisKKyNlbmRpZgorI2VuZGlmIC8qIF9MNV9MNENfU1RSVUNUX0ggKi8KZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL2xheWVyNF9jb250ZXh0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sYXllcjRfY29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMTUyMmIKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9sYXllcjRfY29udGV4dC5oCkBAIC0wLDAgKzEsMTY3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKglsYXllcjRfY29udGV4dC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1BVUkKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBUaGlzIGZpbGUgaXMgaW50ZW5kcyBmb3IgLi4uCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAJCQkJSElTVE9SWQorICogQmVsb3cgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFVwcGVyIHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqICBUaGlzIHByb2R1Y3QgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nIGEgcHJvdG9jb2wgc3RhY2sKKyogIGRldmVsb3BlZCBieSBTYXNrZW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgTGltaXRlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworI2lmbmRlZiBfTEFZRVI0X0NPTlRFWFRfSAorI2RlZmluZSBfTEFZRVI0X0NPTlRFWFRfSAorCisvLyNpbmNsdWRlICJsNGNfY29udGV4dC5oIgorLy8jaW5jbHVkZSAicm1taV9jb250ZXh0LmgiCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiIC8vTVNCQiBjaGFuZ2UgI2luY2x1ZGUgInN0YWNrX2NvbmZpZy5oIgorLy8jaW5jbHVkZSAibDRjX2h6X2NvbnRleHQuaCIKKworI2luY2x1ZGUgImdsb2JhbF9kZWYuaCIKKworI2RlZmluZSBMNF9NQVhfU0lNX05VTSAgICAgIChNQVhfU0lNX05VTSkKKworI2RlZmluZSBMNF9NT0RVTEUoeCx5KSAobW9kdWxlX3R5cGUpKCh4KSArICh5KSkKKworI2RlZmluZSBnZXRfbDRjX3B0cl9ieV9tb2QobW9kX2lkKSAgKCZsNGNfY250eHRfZ1ttb2RfaWQgLSBNT0RfTDRDXSkKKworI2RlZmluZSBMNENfUFRSX1goZmllbGQsIHNpbV9pbnRlcmZhY2UpICgobDRjX2NudHh0X2dbc2ltX2ludGVyZmFjZV0pLmZpZWxkKQorCisjZGVmaW5lIEw0Q19HRVRfU0lNX0lEKG1vZF9pZCkgKChrYWxfdWludDgpKG1vZF9pZC1NT0RfTDRDKSkKKworZXh0ZXJuIHZvaWQgbGF5ZXI0X21vZHVsZV9jb250ZXh0X3NlbGVjdGlvbihtb2R1bGVfdHlwZSBtb2RfaWQpOworCisjZW5kaWYgLyogbGF5ZXI0X2NvbnRleHQuaCAqLworCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL24zYW5zX2w0Ym53X3N0cnVjdC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvbjNhbnNfbDRibndfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQzMGExNQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL24zYW5zX2w0Ym53X3N0cnVjdC5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBuM2Fuc19sNGJud19zdHJ1Y3QuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICAKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAgCisgKiAgIAorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmICBfTjNBTlNfTDRCTldfU1RSVUNUX0gKKyNkZWZpbmUgIF9OM0FOU19MNEJOV19TVFJVQ1RfSAorCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKyNpbmNsdWRlICJsM19pbmNfZW51bXNfcHVibGljLmgiCisjaW5jbHVkZSAibDRibndfcHVibGljX3N0cnVjdC5oIgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBsNGJud19wdWJsaWNfYXR0YWNoZWRfbmV0d29ya19pbmZvX3N0cnVjdCBhdHRhY2hlZF9uZXR3b3JrX2luZm87Cit9IG4zYW5zX2w0Ym53X2F0dGFjaGVkX3JhdF9pbmRfc3RydWN0OworCisjZW5kaWYgLyogX04zQU5TX0w0Qk5XX1NUUlVDVF9IICovCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9waGJfc2FwLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9waGJfc2FwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc1NjhkYgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3BoYl9zYXAuaApAQCAtMCwwICsxLDEwMSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogcGhiX3NhcC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1UNjIwOAorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgaXMgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGZvciBMNENQSEIgU0FQLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZuZGVmIF9QSEJfU0FQX0gKKyNkZWZpbmUgX1BIQl9TQVBfSAorCisjaW5jbHVkZSAia2FsX3B1YmxpY19hcGkuaCIKKyNpbmNsdWRlICJsNGMycGhiX2VudW1zLmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgImw0YzJwaGJfc3RydWN0LmgiCisjaW5jbHVkZSAic2ltX2NvbW1vbl9lbnVtcy5oIgorI2luY2x1ZGUgInBoYl9kYXRhX2Rlc2MuaCIKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8gCisKKy8qIEhlYWRlciBmaWxlcyBzaG91bGQgYmUgaW5jbHVkZSBiZWZvcmUgdGhpcyBvbmUgKi8KKyNpZm5kZWYgX0w0QzJQSEJfRU5VTVNfSAorI2Vycm9yICJsNGMycGhiX2VudW1zLmggc2hvdWxkIGJlIGluY2x1ZGVkIgorI2VuZGlmIAorCisvKiBUaGlzIG1hY3JvIGZldGNoZXMgd29yZCgzMmJpdHMpLWFsaWduZWQgdmFsdWUsIHRoZSBhcmd1bWVudCBzaG91bGQgYmUgdW5zaWduZWQgKi8KKyNkZWZpbmUgZ2V0XzMyYml0c19hbGlnbmVkX3ZhbCh4KSAoKChrYWxfdWludDMyKSh4KSArIDMpICYgKH4oMHgwMykpKQorCitleHRlcm4gcGhiX2Vycm5vX2VudW0gbDRjcGhiX3Bob25lYm9va19zdGF0dXNfcmVxKAorICAgICAgICAgICAgICAgICAgICAgICAgcGhiX3N0b3JhZ2VfZW51bSBzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAga2FsX3VpbnQxNiAqdG90YWwsCisgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2ICphdmFpbGFibGUpOworZXh0ZXJuIHBoYl9lcnJub19lbnVtIGw0Y3BoYl9zdGF0dXNfcmVxKHBoYl90eXBlX2VudW0gdHlwZSwga2FsX3VpbnQxNiAqdG90YWwsIGthbF91aW50MTYgKmF2YWlsYWJsZSk7CitleHRlcm4gcGhiX2Vycm5vX2VudW0gbDRjX3BoYl9nZXRfZmlsZV9pbmZvKGthbF91aW50OCB0eXBlLCBwaGJfc3RvcmFnZV9lbnVtIHN0b3JhZ2UsIGw0Y3BoYl9maWxlX2luZm9fc3RydWN0KiBmaWxlX2luZm8sIGthbF91aW50OCBvY2N1cnJlbmNlKTsKKyNpZmRlZiBfX1NJTV9TRUFSQ0hfUkVDT1JEX1NVUFBPUlRfXworZXh0ZXJuIGthbF9ib29sIGw0Y19waGJfYWRuX2VudHJ5X2lzX2ZyZWUoa2FsX3VpbnQxNiBpbmRleCk7CitleHRlcm4ga2FsX2Jvb2wgbDRjX3BoYl9zdHJvYWdlX2VudHJ5X2lzX29jdXBpZWQoa2FsX3VpbnQxNiBpbmRleCwgZGF0YV9kZXNjX2VudW0gZGVzYyk7CisjZW5kaWYKK2V4dGVybiBrYWxfdWludDggKmw0Y3BoYl9hbGxvY19wZWVyX2J1ZihwZWVyX2J1ZmZfc3RydWN0ICoqcGVlcl9idWZfcHRyLCBrYWxfdWludDE2IGNvdW50KTsKKworZXh0ZXJuIGthbF91aW50MTYgbDRjcGhiX2dldF9pbmRleF9ieV9sb2NhdGlvbihrYWxfdWludDggdHlwZSwga2FsX3VpbnQ4IHN0b3JhZ2UsIGthbF91aW50MTYgcmVjb3JkX2luZGV4KTsKKworZXh0ZXJuIGthbF9ib29sIGw0Y3BoYl9nZXRfYWxwaGFfbGlzdF9yZXEocGhiX3R5cGVfZW51bSB0eXBlLCBrYWxfdWludDE2ICpsaXN0KTsKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZiAKKworI2VuZGlmIC8qIF9QSEJfU0FQX0ggKi8gCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3BoYl91dGlscy5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvcGhiX3V0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE1N2FiNQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3BoYl91dGlscy5oCkBAIC0wLDAgKzEsMjM0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiBwaGJfdXRpbHMuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNVDYyMDgKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBUaGlzIGZpbGUgY29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIFBIQiBtb2R1bGUuCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpZm5kZWYgX1BIQl9VVElMU19ICisjZGVmaW5lIF9QSEJfVVRJTFNfSAorCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfZW51bS5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfYXBpLmgiCisjaW5jbHVkZSAic2ltX3BzX2VudW0uaCIKKyNpbmNsdWRlICJwaGJfZGVmcy5oIgorI2luY2x1ZGUgImw0YzJwaGJfZW51bXMuaCIKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8gCisKKworLyojZGVmaW5lIFBIQl9UUkFDRSh4LHkpICAga2FsX3RyYWNlIHkKKyovCisKKyNkZWZpbmUgUEhCX1VUSUxTX0lOVkFMSURfVkFMVUUgfjAKKworI2lmZGVmIF9fVEMxMF9fCisjZGVmaW5lIE1BWF9LU0M1NjAxX05VTSAxMjE2MAorI2RlZmluZSBLU0M1NjAxX1BSRUZJWCAweDgxCisjZW5kaWYKKy8qKiAKKyAqIE51bWJlciBvZiBieXRlcyBzaG91bGQgYmUgcmV0YWluZWQgZm9yIFNJTSBlbmNvZGluZzoKKyAqIDEuIDB4ODA6IDEgYnl0ZSBjb2RpbmcsIDIgYnl0ZXMgMHhGRi4KKyAqIDIuIDB4ODE6IDEgYnl0ZSBjb2RpbmcsIDEgYnl0ZSBsZW5ndGgsIDEgYnl0ZSBjb2RlIHBhZ2Ugb2Zmc2V0LgorICogMy4gMHg4MjogMSBieXRlIGNvZGluZywgMSBieXRlIGxlbmd0aCwgMiBieXRlcyBjb2QgcGFnZS4KKyAqCisgKiBUaGlzIGNvbnN0YW50IGNvdWxkIGJlIHVzZWQgZm9yIGFsbG9jYXRpbmcgYnVmZmVyIHdoZW4gaW52b2tpbmcgcGhiX2VuY29kZV90b19zaW0oKSAKKyAqIHRvIGVuY29uZGUgY2hhcmFjdGVycyBpbnRvIFNJTS4KKyAqLworI2RlZmluZSBTSU1fRU5DT0RFX01BUkdJTiA0CisKK3R5cGVkZWYgZW51bQoreworICAgIHNoaWZ0X2Rvd24sCisgICAgc2hpZnRfdXAKK30gc2hpZnRfb3BfZW51bTsKKworLyogVGhlIGVudW1lcmF0aW9uIGhlcmUgdXNlcyB2YWx1ZXMgZGVmaW5lZCBpbiAwMy4zOCBkaXJlY3RseS4gKi8KK3R5cGVkZWYgZW51bQoreworICAgIENIQVJTRVRfQVNDSUkgICA9IDB4MDAsCisgICAgQ0hBUlNFVF9LU0M1NjAxID0gMHgwNSwKKyAgICBDSEFSU0VUX1VDUzIgICAgPSAweDA4LAorICAgIENIQVJTRVRfVUNTMl84MSA9IDB4MDksIC8qIEFkZCBmb3IgZXh0cmEgaGFuZGxlIGZvciBVQ1MyIDB4ODEgKi8KKyAgICBDSEFSU0VUX1VDUzJfODIgPSAweDEwICAvKiBBZGQgZm9yIGV4dHJhIGhhbmRsZSBmb3IgVUNTMiAweDgyICovCit9IGlzdHJpbmdfY2hhcnNldF9lbnVtOworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCBsZW5ndGg7CisgICAga2FsX3VpbnQ4IGNoYXJzZXQ7CisgICAga2FsX3VpbnQ4ICpkYXRhOworfSBpc3RyaW5nX3R5cGU7CisKK3R5cGVkZWYgZW51bQoreworICAgIENPRElOR19BVVRPLAorICAgIENPRElOR19ERUZBVUxUXzdCSVRTLAorICAgIENPRElOR19VQ1MyXzgwID0gMHg4MCwKKyAgICBDT0RJTkdfVUNTMl84MSA9IDB4ODEsCisgICAgQ09ESU5HX1VDUzJfODIgPSAweDgyCit9IHNpbV9hbHBoYV9pZF9jb2RpbmdfZW51bTsKKworLyoqCisgKiBTaGFsbCByZXR1cm5zIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuLCBlcXVhbCB0bywgb3IgbGVzcyB0aGFuIDAsIGFjY29yZGluZyB0byBgZmlyc3QnIGlzIAorICogZ3JlYXRlciB0aGFuLCBlcXVhbCB0bywgb3IgbGVzcyB0aGFuIGBzZWNvbmQnLgorICovCit0eXBlZGVmIGludCAoKmJpbl9zZWFyY2hfY21wX2Z1bmNfdHlwZSkgKHZvaWQgKmV4dGVybmFsX2RhdGEsIGludCBleHRlcm5hbF9wb3MsIHZvaWQgKmtleSk7CisKKy8qIEdlbmVyaWMgYXJyYXkgc2hpZnQgZnVuY3Rpb25zICovCitleHRlcm4gdm9pZCB0YWJsZV9zaGlmdCgKKyAgICAgICAgICAgICAgICBrYWxfdWludDE2ICp1c2VkX2NvdW50LAorICAgICAgICAgICAgICAgIGthbF91aW50MTYgKnNsb3RzLAorICAgICAgICAgICAgICAgIHZvaWQgKmFycmF5LAorICAgICAgICAgICAgICAgIGthbF91aW50MTYgZWxlbWVudF9zaXplLAorICAgICAgICAgICAgICAgIHNoaWZ0X29wX2VudW0gb3AsCisgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBmcm9tKTsKK2V4dGVybiB2b2lkIHRhYmxlX3JhbmdlX3NoaWZ0KAorICAgICAgICAgICAgICAgIGthbF91aW50MTYgKnVzZWRfY291bnQsCisgICAgICAgICAgICAgICAga2FsX3VpbnQxNiAqc2xvdHMsCisgICAgICAgICAgICAgICAgdm9pZCAqYXJyYXksCisgICAgICAgICAgICAgICAga2FsX3VpbnQxNiBlbGVtZW50X3NpemUsCisgICAgICAgICAgICAgICAgc2hpZnRfb3BfZW51bSBvcCwKKyAgICAgICAgICAgICAgICBrYWxfdWludDE2IGZyb20sCisgICAgICAgICAgICAgICAga2FsX3VpbnQxNiB0byk7CisKKy8qIGlzdHJpbmcgZnVuY3Rpb25zICovCisjZGVmaW5lIHBoYl9tb3JlX3NpZ25pZmljYW50X2NoYXIoeCkgKHggPj4gOCAmIDB4RkYpCisjZGVmaW5lIHBoYl9sZXNzX3NpZ25pZmljYW50X2NoYXIoeCkgKHggICYgMHhGRikKK2V4dGVybiBrYWxfdWludDggaXN0cmluZ19lbmNvZGVfdG9fc2ltKAorICAgICAgICAgICAgICAgICAgICBzaW1fYWxwaGFfaWRfY29kaW5nX2VudW0gY29kaW5nLAorICAgICAgICAgICAgICAgICAgICBpc3RyaW5nX3R5cGUgKmlzdHIsCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCBidWZmZXJfbGVuLAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmJ1ZmZlcik7CitleHRlcm4ga2FsX3VpbnQ4IGlzdHJpbmdfZGVjb2RlX2Zyb21fc2ltKGthbF91aW50OCByYXdfZGF0YV9sZW4sIGthbF91aW50OCAqcmF3X2RhdGEsIGlzdHJpbmdfdHlwZSAqZGVjb2RlZF9zdHIpOworZXh0ZXJuIGthbF91aW50OCBpc3RyaW5nX2RlY29kZV8weDgxX3RvXzB4ODAoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCByYXdfZGF0YV9sZW4sCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcmF3X2RhdGEsCisgICAgICAgICAgICAgICAgICAgIGlzdHJpbmdfdHlwZSAqZGVjb2RlZF9zdHIpOworZXh0ZXJuIGthbF91aW50OCBpc3RyaW5nX2RlY29kZV8weDgyX3RvXzB4ODAoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCByYXdfZGF0YV9sZW4sCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqcmF3X2RhdGEsCisgICAgICAgICAgICAgICAgICAgIGlzdHJpbmdfdHlwZSAqZGVjb2RlZF9zdHIpOworZXh0ZXJuIGthbF91aW50OCBpc3RyaW5nX2xlbihpc3RyaW5nX3R5cGUgKmlzdHIpOworZXh0ZXJuIGthbF91aW50MTYgaXN0cmluZ19jaGFyX2F0KGlzdHJpbmdfdHlwZSAqaXN0ciwga2FsX3VpbnQ4IG9mZnNldCk7CisKK2V4dGVybiBrYWxfYm9vbCBpc19jaGFyc19lcXVhbChrYWxfdWludDE2IGNoYXIxLCBrYWxfdWludDE2IGNoYXIyKTsKK2V4dGVybiBrYWxfaW50MzIgY29tcGFyZV9jaGFycyhrYWxfdWludDE2IGNoYXIxLCBrYWxfdWludDE2IGNoYXIyKTsKKworLyogQkNEIGZ1bmN0aW9ucyAqLworI2RlZmluZSBwaGJfbW9yZV9zaWduaWZpY2FudF9uaWJibGUoeCkgKHggPj4gNCAmIDB4MEYpCisjZGVmaW5lIHBoYl9sZXNzX3NpZ25pZmljYW50X25pYmJsZSh4KSAoeCAgJiAweDBGKQorCitleHRlcm4ga2FsX3VpbnQxNiBiY2Qyc3RyaW5nKGthbF91aW50OCBsZW5ndGgsIGthbF91aW50OCAqdGVsX251bWJlciwgY2hhciAqYmNkX2FycmF5KTsKK2V4dGVybiBrYWxfdWludDggYmNkMmNoYXIoa2FsX3VpbnQ4IGJjZCk7CitleHRlcm4ga2FsX3VpbnQxNiBnZXRfbmV4dF9iY2RfZGlnaXQoCisgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAqYmNkX2FycmF5LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDE2IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAga2FsX2Jvb2wgKmlzX2ZpcnN0LAorICAgICAgICAgICAgICAgICAgICBrYWxfdWludDggKmRpZ2l0KTsKK2V4dGVybiBrYWxfaW50OCBjb21wYXJlX25fc3RyaW5nX2JjZChjaGFyIGNvbnN0ICpzdHIsIGthbF91aW50OCAqYmNkX2FycmF5LCBrYWxfdWludDE2IGxlbik7CitleHRlcm4ga2FsX2ludDggY29tcGFyZV9uX2JjZChrYWxfdWludDggKmZpcnN0X2JjZF9hcnJheSwga2FsX3VpbnQ4ICpzZWNvbmRfYmNkX2FycmF5LCBrYWxfdWludDE2IG4pOworZXh0ZXJuIGthbF9pbnQ4IGNvbXBhcmVfbl9iY2RfZm9yX3dpbGRfY2hhcihrYWxfdWludDggKmZpcnN0X2JjZF9hcnJheSwga2FsX3VpbnQ4ICpzZWNvbmRfYmNkX2FycmF5LCBrYWxfdWludDE2IG4pOworZXh0ZXJuIGthbF9ib29sIHBoYl9jb21wYXJlX2JjZF9mb3Jfd2lsZF9jaGFyKGthbF91aW50OCBsZW5ndGgxLCBrYWxfdWludDggbGVuZ3RoMiwga2FsX3VpbnQ4ICpiY2QxLCBrYWxfdWludDggKmJjZDIpOworZXh0ZXJuIGthbF9pbnQxNiBiY2RfbGVuKGthbF91aW50OCAqYmNkX2FycmF5LCBrYWxfdWludDE2IG4pOworZXh0ZXJuIGthbF9pbnQxNiBiY2RfZXhhY3RfbGVuKGthbF91aW50OCAqYmNkX2FycmF5LCBrYWxfdWludDE2IG4pOworCisvKiBDaGVjayB3aGV0aGVyIGVhY2ggYnl0ZSBvZiBwdHIgYXJlIGFsbCAweDBGICovCitleHRlcm4ga2FsX2Jvb2wgaXNfZW1wdHkoa2FsX3VpbnQ4ICpwdHIsIGthbF91aW50MTYgbGVuKTsKKworZXh0ZXJuIGthbF91aW50MzIgcGhiX2FicyhrYWxfaW50MzIgdmFsKTsKKworZXh0ZXJuIGludCBiaW5hcnlfc2VhcmNoKHZvaWQgKmNvbGxlY3Rpb25bXSwgaW50IGxvdywgaW50IGhpZ2gsIHZvaWQgKmtleSwgYmluX3NlYXJjaF9jbXBfZnVuY190eXBlIGNvbXBhcmVfZnVuYyk7CisKK2V4dGVybiBjaGFyICpmaW5kX3Bpbnlpbmdfc3RyX2Zvcl91Y3MyKGthbF91aW50MTYgdWNzMl9jb2RlKTsKKworZXh0ZXJuIGthbF9ib29sIGZpbmRfcGlueWluX3N0cl9mb3JfdWNzMl93aXRoX3RvbmUoa2FsX3VpbnQ4ICppbnB1dFN0cmluZywga2FsX3VpbnQ4ICpvdXRwdXRTdHJpbmcpOworCitleHRlcm4ga2FsX2Jvb2wgZmluZF9waW55aW5fc3RyX2Zvcl91Y3MyX3dpdGhvdXRfdG9uZShrYWxfdWludDggKmlucHV0U3RyaW5nLCBrYWxfdWludDggKm91dHB1dFN0cmluZyk7CisvKiBFbmQgTVRLICovCisKK2V4dGVybiBrYWxfYm9vbCBwaGJfaXNfcHJlZml4KGFscGhhX2lkX3R5cGUgKnRhcmdldCwgYWxwaGFfaWRfdHlwZSAqY2FuZGlkYXRlKTsKKworZXh0ZXJuIGthbF91aW50OCBwaGJfd2hpY2hfc2ltX2V4KHZvaWQpOworZXh0ZXJuIHBoYl9zdG9yYWdlX2VudW0gcGhiX3doaWNoX3NpbV9zdG9yYWdlKHZvaWQpOworZXh0ZXJuIGthbF91aW50OCBwaGJfdXRpbF9pc191c2ltKGthbF91aW50OCBzaW1fbnVtKTsKK2V4dGVybiBwaGJfdHlwZV9lbnVtIHBoYl91dGlsX2dldF90eXBlKGthbF91aW50MTYgZmlsZV9pZHgpOworI2lmZGVmIF9fQ0RNQTIwMDBfUkFUX18KK2V4dGVybiBrYWxfYm9vbCBwaGJfdXRpbF9pc19jc2ltKGthbF91aW50OCBzaW1fbnVtKTsKK2V4dGVybiBrYWxfYm9vbCBwaGJfdXRpbF9pc19jZG1hX2NhcmQodm9pZCk7CitleHRlcm4ga2FsX2Jvb2wgcGhiX1VJTV9zZXJ2aWNlX3RhYmxlX1F1ZXJ5KGthbF91aW50OCBzc3RfaWQpOworZXh0ZXJuIGthbF9ib29sIHBoYl9VSU1fc2VydmljZV90YWJsZV9RdWVyeV9ieV9wc19pZChrYWxfdWludDggc3N0X2lkLCBwcm90b2NvbF9pZF9lbnVtIHBzX2lkKTsKK2V4dGVybiBzaW1fZG5fZW51bSBwaGJfVUlNX2dldF9kaWFsX21vZGUodm9pZCk7CitleHRlcm4gc2ltX2RuX2VudW0gcGhiX1VJTV9nZXRfZGlhbF9tb2RlX2J5X3BzX2lkKHByb3RvY29sX2lkX2VudW0gcHNfaWQpOworI2VuZGlmCisKK2thbF91aW50OCBwaGJfbWFwX3NpbShrYWxfdWludDggc2ltKTsKKworICAgIC8qIDAzLjM4IGVuY29kZXMgY2hhcnNldCBpbmZvcm1hdGlvbiBpbnRvIGJpdCAzIGFuZCAyICovCisjZGVmaW5lIGdldF8wMzM4X2NoYXJzZXRfYml0cyh4KSAoeCAmIDB4MUMpCisKK3ZvaWQgcGhiX2dldF9tY2NfbW5jX2Zyb21faW1zaShrYWxfdWludDggKmRlc3RfcHRyLCBrYWxfdWludDggKmltc2kpOworCisjaWYgZGVmaW5lZChfX0NETUEyMDAwX1JBVF9fKQorICAgIGV4dGVybiBrYWxfYm9vbCBwaGJfdHJ5X2NzaW1fZmRuKHNpbV9maWxlX2luZGV4X2VudW0gZmlsZV9pZHgpOy8vLCBrYWxfdWludDggY3RybF9ibG9ja19pZCk7CisgICAgZXh0ZXJuIGthbF9ib29sIHBoYl90cnlfY3NpbV9mZG5fYnlfcHNfaWQoc2ltX2ZpbGVfaW5kZXhfZW51bSBmaWxlX2lkeCwgcHJvdG9jb2xfaWRfZW51bSBwc19pZCk7CisJZXh0ZXJuIGthbF9ib29sIHBoYl91dGlsX2lzX3VzaW1fY3NpbShrYWxfdWludDggc2ltX251bSk7CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYgCisKKyNlbmRpZiAvKiBfUEhCX1VUSUxTX0ggKi8gCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3JtbWlfY29udGV4dC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2Mvcm1taV9jb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU5MzY5NQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3JtbWlfY29udGV4dC5oCkBAIC0wLDAgKzEsMTUyNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiBybW1pX2NvbnRleHQuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNVDYyMDgKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBUaGlzIGZpbGUgaXMgaW50ZW5kcyBmb3Ig77+9Sy4KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqICBUaGlzIHByb2R1Y3QgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nIGEgcHJvdG9jb2wgc3RhY2sKKyogIGRldmVsb3BlZCBieSBTYXNrZW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgTGltaXRlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9STU1JX0NPTlRFWFRfSAorI2RlZmluZSBfUk1NSV9DT05URVhUX0gKKworI2luY2x1ZGUgImw0Y19jb21tb25fZW51bS5oIgorCisKKyNpbmNsdWRlICJwczJzYXRfc3RydWN0LmgiCisjaW5jbHVkZSAicHNfcHVibGljX3N0cnVjdC5oIgorI2luY2x1ZGUgImwzX2luY19lbnVtcy5oIgorI2luY2x1ZGUgImFzMmw0Y19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJybW1pX2NvbW1vbl9lbnVtLmgiCisjaW5jbHVkZSAiZnNfdHlwZS5oIgorCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJjbXV4X3ZwX251bS5oIgorI2luY2x1ZGUgInBzX3B1YmxpY19lbnVtLmgiCisjaW5jbHVkZSAia2FsX3B1YmxpY19hcGkuaCIKKworI2luY2x1ZGUgImw0YzJwaGJfc3RydWN0LmgiCisjaW5jbHVkZSAibDRjX2F1eF9zdHJ1Y3QuaCIKKworI2luY2x1ZGUgIm1lZF9zdHJ1Y3QuaCIKKyNpbmNsdWRlICJsNGNyYWNfZW51bXMuaCIKKworI2luY2x1ZGUgInNpbV9wdWJsaWNfZW51bS5oIgorI2luY2x1ZGUgInJtbWlfc3RydWN0LmgiCisjaW5jbHVkZSAic211X2NvbW1vbl9lbnVtcy5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfZGVmcy5oIgorI2luY2x1ZGUgImMya19pcmF0X21zZ19zdHJ1Y3QuaCIKKworLyogQ09OU1RBTlRTICovCisKKyNkZWZpbmUgTlVMTF9URVJNICdcMCcgIC8qIHN0cmluZyB0ZXJtaW5hdGlvbiAqLworI2RlZmluZSBJTlZBTElEX0VOVU0gMjU1ICAgICAgICAvKiBpbnZhbGlkIGVudW0gdmFsdWUgKi8KKworI2RlZmluZSBSTU1JX1BUUiAgICAgICAgcm1taV9wdHJfZworI2RlZmluZSBSTU1JX0NPTU1fUFRSICAgcm1taV9jb21tb25fcHRyX2cKKworI2RlZmluZSBybW1pX3NraXBfc3BhY2VzKHNvdXJjZV9zdHJpbmdfcHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB3aGlsZSggc291cmNlX3N0cmluZ19wdHItPnN0cmluZ19wdHJbIHNvdXJjZV9zdHJpbmdfcHRyLT5pbmRleCBdICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IFJNTUlfU1BBQ0UgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHNvdXJjZV9zdHJpbmdfcHRyLT5pbmRleCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIH0KKy8vMDMwNjE3IG10azAwNDY4IGFkZCBmb3Igc2tpcCB1bnVzZWQgY2hhcmFjdGVyIGJlZm9yZSBjaGFyYWN0ZXIgYQorI2RlZmluZSBybW1pX3NraXBfbm9uZV9hKHNvdXJjZV9zdHJpbmdfcHRyLCBsZW5ndGgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB3aGlsZSggKHNvdXJjZV9zdHJpbmdfcHRyLT5pbmRleCA8IGxlbmd0aCkgJiYgISgoc291cmNlX3N0cmluZ19wdHItPnN0cmluZ19wdHJbIHNvdXJjZV9zdHJpbmdfcHRyLT5pbmRleCBdID09IFJNTUlfQ0hBUl9BKSB8fFwKKyAgICAgICAgICAgICAoc291cmNlX3N0cmluZ19wdHItPnN0cmluZ19wdHJbIHNvdXJjZV9zdHJpbmdfcHRyLT5pbmRleCBdID09IHJtbWlfY2hhcl9hKSkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHNvdXJjZV9zdHJpbmdfcHRyLT5pbmRleCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIH0KKworI2RlZmluZSBSTU1JX0lTX0xPV0VSKCBhbHBoYV9jaGFyICkgICBcCisgICggKCAoYWxwaGFfY2hhciA+PSBybW1pX2NoYXJfYSkgJiYgKGFscGhhX2NoYXIgPD0gcm1taV9jaGFyX3opICkgPyAgMSA6IDAgKQorCisjZGVmaW5lIFJNTUlfSVNfVVBQRVIoIGFscGhhX2NoYXIgKSAgIFwKKyAgICggKCAoYWxwaGFfY2hhciA+PSBSTU1JX0NIQVJfQSkgJiYgKGFscGhhX2NoYXIgPD0gUk1NSV9DSEFSX1opICkgPyAxIDogMCApCisKKyNkZWZpbmUgUk1NSV9JU19IRVhfQUxQSEEoIGFscGhhX2NoYXIgKSAgIFwKKyAgICggKCAoYWxwaGFfY2hhciA+PSBSTU1JX0NIQVJfQSkgJiYgKGFscGhhX2NoYXIgPD0gUk1NSV9DSEFSX0YpICkgPyAxIDogMCApCisKKyNkZWZpbmUgUk1NSV9JU19IRVhfQUxQSEFfQ0FTRV9JTlNFTlNJVElWRSggYWxwaGFfY2hhciApICAgXAorICAgKCAoICgoYWxwaGFfY2hhciA+PSBSTU1JX0NIQVJfQSkgJiYgKGFscGhhX2NoYXIgPD0gUk1NSV9DSEFSX0YpKSB8fCAoKGFscGhhX2NoYXIgPj0gcm1taV9jaGFyX2EpICYmIChhbHBoYV9jaGFyIDw9IHJtbWlfY2hhcl9mKSkgKSA/IDEgOiAwICkKKworI2RlZmluZSBSTU1JX0lTX05VTUJFUiggYWxwaGFfY2hhciApICAgXAorICAgKCAoIChhbHBoYV9jaGFyID49IFJNTUlfQ0hBUl8wKSAmJiAoYWxwaGFfY2hhciA8PSBSTU1JX0NIQVJfOSkgKSA/IDEgOiAwICkKKworI2RlZmluZSBSTU1JX0lTX0FMUEhBKCBhbHBoYV9jaGFyICkgICBcCisgICAoICggUk1NSV9JU19VUFBFUihhbHBoYV9jaGFyKSB8fCBSTU1JX0lTX0xPV0VSKGFscGhhX2NoYXIpICkgPyAxIDogMCApCisKKyNkZWZpbmUgUk1NSV9JU19TWU1CT0woIGFscGhhX2NoYXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICggKCAoYWxwaGFfY2hhciA9PSBSTU1JX0NIQVJfUExVUykgfHwgKGFscGhhX2NoYXIgPT0gUk1NSV9DSEFSX1NUQVIpIHx8ICAgIFwKKyAgICAgICAoYWxwaGFfY2hhciA9PSBSTU1JX0NIQVJfUE9VTkQpIHx8IChhbHBoYV9jaGFyID09IFJNTUlfQ09NTUEpIHx8ICAgICAgIFwKKyAgICAgICAoYWxwaGFfY2hhciA9PSBSTU1JX0NIQVJfRE9UKSB8fCAoYWxwaGFfY2hhciA9PSBSTU1JX0ZPUldBUkRfU0xBU0gpIHx8IFwKKyAgICAgICAoYWxwaGFfY2hhciA9PSBSTU1JX0NPTE9OKSB8fCAoYWxwaGFfY2hhciA9PSBSTU1JX0hBVCkgfHwgICAgICAgICAgICAgIFwKKyAgICAgICAoYWxwaGFfY2hhciA9PSBSTU1JX0NIQVJfTUlOVVMpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAoYWxwaGFfY2hhciA9PSBSTU1JX0xfU1FfQlJBQ0tFVCkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAoYWxwaGFfY2hhciA9PSBSTU1JX1JfU1FfQlJBQ0tFVCkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAoYWxwaGFfY2hhciA9PSBSTU1JX0xfQU5HTEVfQlJBQ0tFVCkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKGFscGhhX2NoYXIgPT0gUk1NSV9DSEFSX1VMSU5FKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIChhbHBoYV9jaGFyID09IFJNTUlfU1BBQ0UpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKGFscGhhX2NoYXIgPT0gUk1NSV9TRU1JQ09MT04pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAoYWxwaGFfY2hhciA9PSBSTU1JX1JfQU5HTEVfQlJBQ0tFVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKSA/IDEgOiAwICkKKworI2RlZmluZSBSTU1JX0lTX0VYVF9DSEFSKCBhbHBoYV9jaGFyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICgoKGFscGhhX2NoYXIgPT0gUk1NSV9IQVQpfHwoYWxwaGFfY2hhciA9PSBSTU1JX0NIQVJfVElMREUpfHwoYWxwaGFfY2hhciA9PSBSTU1JX0VVUk8pfHxcCisgICAoYWxwaGFfY2hhciA9PSBSTU1JX0xfU1FfQlJBQ0tFVCkgfHwgKGFscGhhX2NoYXIgPT0gUk1NSV9SX1NRX0JSQUNLRVQpIHx8ICAgICAgICAgICAgXAorICAgKGFscGhhX2NoYXIgPT0gUk1NSV9MX0NVUkxZX0JSQUNLRVQpIHx8IChhbHBoYV9jaGFyID09IFJNTUlfUl9DVVJMWV9CUkFDS0VUKSB8fCAgICAgIFwKKyAgIChhbHBoYV9jaGFyID09IFJNTUlfQ0hBUl9SRVZFUlNFX1NPTElEVVMpIHx8KGFscGhhX2NoYXIgPT0gUk1NSV9DSEFSX1ZFUlRJQ0FMX0xJTkUpICBcCisgICApID8gMSA6IDAgKQorCisKKyNkZWZpbmUgUk1NSV9NQVhfQklUX01BU0tfU0laRSAoUk1NSV9NQVhfQ0hBTk5FTF9OVU1CRVIgKyA3KSAvIDgKKyNkZWZpbmUgUk1NSV9NQVhfQklUX01BU0tfU0laRV9DUkxBICgoTUFYX1NPVVJDRV9OVU0gKyA3KSAvIDgpICAvKiByZWZlciB0byBsNGMgdG90YWwgc291cmNlIGlkICovCisKKy8vI2lmICFkZWZpbmVkKF9fTVRLX1RBUkdFVF9fKSAmJiBkZWZpbmVkKF9fUk1NSV9VVF9fKQorLy8jZGVmaW5lIFJNTUlfVUFSVF9HZXRPd25lcklEKHBvcnQpIHJtbWlfY3VycmVudF9tb2RfaWQKKy8vI2VuZGlmCisKKwordHlwZWRlZiBrYWxfYm9vbCgqVUFSVF9UUkFOU19GVU5DX1BUUikgKGthbF91aW50OCk7CisKK3R5cGVkZWYga2FsX3VpbnQ4ICBSTU1JX1VBUlRfRkxBR1tSTU1JX01BWF9CSVRfTUFTS19TSVpFXTsKKworCit0eXBlZGVmIHN0cnVjdCBybW1pX3NpbmdsZV9jbWRfc3RydWN0Cit7CisgICAga2FsX3VpbnQxNiBjbWRfY29kZTsgICAgLyogcm1taV9leHRlbmRlZF9jbWRfaWRfZW51bSAqLworICAgIGthbF91aW50OCBjbWRfbW9kZTsgICAgIC8qIHJtbWlfY21kX21vZGVfZW51bSAqLworfSBybW1pX3NpbmdsZV9jbWRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCBiYXNpY19jbWRfc3RydWN0Cit7CisgICAga2FsX3VpbnQ4IGNtZF9jb2RlOyAvKiBybW1pX2Jhc2ljX2NtZF9pZF9lbnVtICovCisgICAga2FsX3VpbnQ4IGNtZF9tb2RlOyAvKiBybW1pX2NtZF9tb2RlX2VudW0gKi8KKworICAgIGthbF9ib29sIGlzX3RoaXNfbm9kZV91c2VkOworICAgIGthbF91aW50OCB2YWx1ZTsKKworICAgIHN0cnVjdCBiYXNpY19jbWRfc3RydWN0ICpuZXh0X3B0cjsKK30gcm1taV9tdWx0aXBsZV9iYXNpY19jbWRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCBybW1pX2NtZF9zdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggd2hpY2hfcHJlc2VudDsgICAgLyogcm1taV9jbWRfdHlwZV9lbnVtICovCisKKyAgICBybW1pX3NpbmdsZV9jbWRfc3RydWN0IHNpbmdsZV9jbWQ7CisgICAgcm1taV9tdWx0aXBsZV9iYXNpY19jbWRfc3RydWN0IG11bHRpcGxlX2NtZDsgICAgICAgIC8vbm90IHVzZWQgbm93Cit9IHJtbWlfY21kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggczA7ICAgLyogYXV0byBhbnN3ZXIgKi8KKyAgICBrYWxfdWludDggczI7ICAgLyogZXNjYXBlIGNoYXJhY3RlciAoKysrKSAqLworICAgIGthbF91aW50OCBzMzsgICAvKiBDUiAweDBkKi8KKyAgICBrYWxfdWludDggczQ7ICAgLyogTEYgMHgwYSovCisgICAga2FsX3VpbnQ4IHM1OyAgIC8qIGJhY2tzcGFjZSAqLworICAgIGthbF91aW50OCBzNjsgICAvKiBwYXVzZSBiZWZvcmUgZGlhbGluZyAqLworICAgIGthbF91aW50OCBzNzsgICAvKiBjb25uZWN0IHRpbWVvdXQgKi8KKyAgICBrYWxfdWludDggczg7ICAgLyogLCBwYXVzZSB0aW1lICovCisgICAga2FsX3VpbnQ4IHMxMDsgIC8qIGRpc2Nvbm5lY3QgdGltZW91dCAqLworICAgIGthbF91aW50OCBzMzI7ICAvKiBYT04gY2hhcmFjdGVyICovCisgICAga2FsX3VpbnQ4IHMzMzsgIC8qIFhPRkYgY2hhcmFjdGVyICovCisgICAga2FsX3VpbnQ4IHM5NTsKKworfSBybW1pX3NfcmVnaXN0ZXJfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB1YXJ0X3F1ZXVlX3N0cnVjdAoreworICAgIGthbF91aW50MTYgaGVhZDsKKyAgICBrYWxfdWludDE2IGxlbmd0aDsKKyAgICBrYWxfdWludDggZGF0YVtNQVhfREFUQV9RVUVVRV9MRU5HVEhdOworCit9IHJtbWlfdWFydF9xdWV1ZV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQxNiBoZWFkOworICAgIGthbF91aW50MTYgbGVuZ3RoOworICAgIGthbF91aW50OCBkYXRhW01BWF9EQVRBX1FVRVVFX0xFTkdUSF07CisKK30gcm1taV91YXJ0X291dHB1dF9xdWV1ZV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisKKyAgICBrYWxfYm9vbCBzYXRfaW5fbWVudTsKKyAgICBrYWxfYm9vbCBzYXRfaW5fcHJvY2VzczsKKyAgICBrYWxfYm9vbCBzYXRfbm9ybWFsX3N0YW5kYnk7CisgICAga2FsX2Jvb2wgc2F0X3JlYWR5OworICAgIGthbF91aW50OCBzYXRfaW5wdXRfdHlwZTsKKyAgICBrYWxfdWludDggc2F0X2lucHV0X3JldmVhbDsKKyAgICBrYWxfdWludDggc2F0X2lucHV0X21pbl9sZW47CisgICAga2FsX3VpbnQ4IHNhdF9pbnB1dF9tYXhfbGVuOworICAgIGthbF9ib29sIHNhdF9yZWRpYWw7CisgICAga2FsX2Jvb2wgc2F0X3JlZGlhbF9jb3VudDsKKyAgICBrYWxfdWludDMyIHNhdF9kdXJhdGlvbjsKKworfSBybW1pX1NBVF9pbmZvX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3Qgcm1taV9jaW5kX3N0cnVjdAoreworICAgIGthbF91aW50OCBiYXR0Y2hnOworICAgIGthbF91aW50OCBzaWduYWw7CisgICAga2FsX3VpbnQ4IHNlcnZpY2U7CisgICAga2FsX3VpbnQ4IG1lc3NhZ2U7CisgICAga2FsX3VpbnQ4IGNhbGw7CisgICAga2FsX3VpbnQ4IHJvYW07CisgICAga2FsX3VpbnQ4IHNtc2Z1bGw7CisgICAga2FsX3VpbnQ4IGNhbGxzZXR1cDsKKyAgICBrYWxfdWludDggY2FsbGhlbGQ7IC8vZm9yIEJUIEhGIDEuNQorfSBybW1pX2NpbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCBybW1pX3JlZ19zdGF0ZV9zdHJ1Y3QKK3sKKyAgICBrYWxfdWludDY0IGNlbGxfaWQ7ICAgICAvLyBmb3IgK0NSRUcgYW5kICtDR1JFRyBhbmQgK0NFUkVHLCBoaWdoIDE2IGJpdHMgZm9yIFJOQyBpZCwgbG93IDE2IGJpdHMgZm9yIGNlbGxfaWQKKyAgICBrYWxfdWludDMyIGxhY19vcl90YWNfdmFsdWU7ICAgLy8gZm9yICtDUkVHIGFuZCArQ0dSRUcgYW5kICtDRVJFRworICAgIGthbF91aW50OCByYWNfdmFsdWU7ICAgIC8vIGZvciArQ0dSRUcKKyAgICBrYWxfdWludDggYWN0OyAgICAgICAgICAvL1tNQVVJXzAxMzYwMTI5XQorICAgIGthbF91aW50OCBzdGF0ZTsgICAgLy9mb3IgK0NSRUcgYW5kICtDR1JFRyBhbmQgK0NFUkVHCisgICAga2FsX3VpbnQ4IGNhdXNlX3R5cGU7CisgICAga2FsX3VpbnQ4IGNhdXNlOworICAgIGRhdGFfc3BlZWRfc3VwcG9ydF9lbnVtIGNlbGxfZGF0YV9zcGVlZF9zdXBwb3J0OworCisgICAga2FsX3VpbnQ4IHBsbW5faWRbTUFYX1BMTU5fTEVOKzFdOworICAgIGthbF9ib29sICBpc19ocGxtbjsKKworICAgIGthbF9ib29sIGlzX2NzZ19jZWxsOworICAgIGNzZ19pbmZvX3N0cnVjdCBjc2dfaW5mbzsKKyAgICBrYWxfdWludDggY3NnX3N0YXRlOyAgICAvL2ZvciArRUNTRworICAgIGthbF91aW50OCBzY2VsbF9udW1iZXJfZGw7CisgICAga2FsX3VpbnQ4IHNjZWxsX251bWJlcl91bDsKKyAgICBrYWxfdWludDggdmdtbV9hbGxvd2VkX25zc2FpX2xlbmd0aDsgLyogTnVtYmVyIG9mIGJ5dGVzIGluIGFsbG93ZWQgTlNTQUkgKi8KKyAgICBrYWxfdWludDggdmdtbV9hbGxvd2VkX25zc2FpW01BWF9MRU5fT0ZfQUxMX0FMTE9XRURfTlNTQUldOyAvKiBBbGxvd2VkIE5TU0FJICovCit9IHJtbWlfcmVnX3N0YXRlX3N0cnVjdDsKKworI2lmZGVmIF9fVEMwMV9fCit0eXBlZGVmIHN0cnVjdCBybW1pX3JlcG9ydF9yZWdfc3RhdGVfc3RydWN0Cit7CisgICAgcm1taV9yZWdfc3RhdGVfZW51bSByZWdfc3RhdGU7CisgICAga2FsX3VpbnQxNiBsYWNfb3JfdGFjX3ZhbHVlOworICAgIGthbF91aW50MzIgY2VsbF9pZDsKKyAgICBrYWxfdWludDggYWN0OworICAgIGthbF91aW50MTYgY2F1c2U7CisgICAga2FsX3VpbnQ4IHJhYzsKK30gcm1taV9yZXBvcnRfcmVnX3N0YXRlX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3Qgcm1taV9yZXBvcnRfcmVnX3RvX2FwX3N0cnVjdAoreworICAgIHJtbWlfcmVwb3J0X3JlZ19zdGF0ZV9zdHJ1Y3QgY3NfcmVnX3N0YXR1czsKKyAgICBybW1pX3JlcG9ydF9yZWdfc3RhdGVfc3RydWN0IHBzX3JlZ19zdGF0dXM7CisgICAga2FsX2Jvb2wgcmVwb3J0X2NyZWc7CisgICAga2FsX2Jvb2wgcmVwb3J0X2NncmVnOworfSBybW1pX3JlcG9ydF9yZWdfdG9fYXBfc3RydWN0OyAvKiBmb3IgcmVwb3JpbmcgQ1JFRy9DR1JFRy9DRVJFRyByZWplY3QgY2F1c2UgdG8gQVAgKi8KKyNlbmRpZgordHlwZWRlZiBzdHJ1Y3Qgcm1taV9pbXNfcmVnX3N0YXRlX3N0cnVjdAoreworICAgIGthbF91aW50OCByZWdfaW5mbzsKKyAgICBrYWxfdWludDMyIGV4dF9pbmZvOworfSBybW1pX2ltc19yZWdfc3RhdGVfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGw0Y19waGJfZW50cnlfc3RydWN0IGVudHJ5OworICAgIGw0Y19udW1iZXJfc3RydWN0IG51bVszXTsKKyAgICBwaGJfc25lX3N0cnVjdCBzbmU7CisgICAgcGhiX2VtYWlsX3N0cnVjdCBlbWFpbDsKK30gcm1taV9waGJfY3Bid19zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHJtbWlfY2xpcF9pbmZvX3N0cnVjdAoreworICAgIGthbF91aW50OCBudW1iZXJbTUFYX0NDX0FERFJfTEVOXTsgICAgICAgLy9NQVhfQ0NfQUREUl9MRU4KKyAgICBrYWxfdWludDggdHlwZTsKKyAgICBrYWxfdWludDggc3ViYWRkcltNQVhfQ0NfU1VCX0FERFJfTEVOXTsgICAgICAvL01BWF9DQ19TVUJfQUREUl9MRU4KKyAgICBrYWxfdWludDggc2F0eXBlOworICAgIGthbF91aW50OCBjbGlfdmFsaWRpdHk7Cit9IHJtbWlfY2xpcF9pbmZvX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3Qgcm1taV9jbmFwX2luZm9fc3RydWN0Cit7CisgICAga2FsX3VpbnQ4IHZhbGlkOworICAgIGthbF91aW50OCBsZW47CisgICAga2FsX3VpbnQ4IGRjczsKKyAgICBrYWxfdWludDggY25pX3ZhbGlkaXR5OworICAgIGthbF91aW50OCBzdHJbTUFYX0NIQVJfQ05BUCAqIDIrMV07Cit9IHJtbWlfY25hcF9pbmZvX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3Qgcm1taV9jYnN0X3N0cnVjdAoreworICAgIGthbF91aW50OCBzcGVlZDsKKyAgICBrYWxfdWludDggbmFtZTsKKyAgICBrYWxfdWludDggY2U7Cit9IHJtbWlfY2JzdF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHJtbWlfY3JscF9zdHJuY3QKK3sKKyAgICBrYWxfdWludDggaXdzOworICAgIGthbF91aW50OCBtd3M7CisgICAga2FsX3VpbnQ4IFQxOworICAgIGthbF91aW50OCBOMjsKK30gcm1taV9jcmxwX3N0cm5jdDsKKwordHlwZWRlZiBzdHJ1Y3Qgcm1taV9wcm9maWxlX3N0cnVjdAoreworICAgIHJtbWlfc19yZWdpc3Rlcl9zdHJ1Y3Qgc19yZWc7CisgICAgcm1taV9jYnN0X3N0cnVjdCBybW1pX2Nic3Q7CisgICAgcm1taV9jcmxwX3N0cm5jdCBybW1pX2NybHA7CisgICAga2FsX3VpbnQ4IHJtbWlfY2l3ZjsKKyAgICBrYWxfdWludDggcm1taV9hdHY7CisgICAga2FsX3VpbnQ4IHJtbWlfYXRlOworICAgIGthbF91aW50OCBybW1pX2F0cTsKKyAgICBrYWxfdWludDggcm1taV9hdHg7CisgICAga2FsX3VpbnQ4IHJtbWlfYXR3OworICAgIGthbF91aW50OCBybW1pX2F0YW1wQzsKKyAgICBrYWxfdWludDggcm1taV9hdGFtcEQ7CisgICAga2FsX3VpbnQ4IHJtbWlfYXRhbXBLOworfSBybW1pX3Byb2ZpbGVfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAga2FsX3VpbnQ4CXJlYXNvbjsKKyAgIGthbF91aW50OAltb2RlOworICAga2FsX3VpbnQ4CXRpbWVyOworICAgbDRjX251bWJlcl9zdHJ1Y3QgICAgZGVzdF9idWZmZXI7CisgICBsNGNfc3ViX2FkZHJfc3RydWN0ICAgIHN1Yl9kZXN0X2J1ZmZlcjsKKyAgIGthbF9ib29sICAgICBzdWJfYWRkcl9mbGFnOworfSBjY2ZjX3JlcV9wYXJhbV9zdHJ1Y3Q7IC8qIGZvciByZW1lbWJlcmluZyBwYXJhbXMgb2YgQVQrQ0ZDQyAqLworCit0eXBlZGVmIHN0cnVjdAoreworICAga2FsX3VpbnQ4CW1vZGU7Cit9IGNjd2FfcmVxX3BhcmFtX3N0cnVjdDsgLyogZm9yIHJlbWVtYmVyaW5nIHBhcmFtcyBvZiBBVCtDQ1dBICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICBrYWxfdWludDgJcmVhc29uOworICAga2FsX3VpbnQ4CW1vZGU7CisgICBrYWxfdWludDggcGFzc3dkWzRdOworfSBjbGNrX3NzX3JlcV9wYXJhbV9zdHJ1Y3Q7IC8qIGZvciByZW1lbWJlcmluZyBwYXJhbXMgb2YgQVQrQ0xDSyAqLworCit0eXBlZGVmIHN0cnVjdCBybW1pX3RyYW5zZmVyX3N0cnVjdAoreworICAgIG1vZHVsZV90eXBlIGRlc3RfbW9kOworICAgIFVBUlRfUE9SVCBwb3J0OworfSBybW1pX3RyYW5zZmVyX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF9ib29sIHV0cmFuX2ZkZDsKKyAgICBrYWxfYm9vbCB1dHJhbl90ZGRfbGNyOworICAgIGthbF9ib29sIGV1dHJhbl9mZGQ7CisgICAga2FsX2Jvb2wgZXV0cmFuX3RkZDsKKyAgICBrYWxfYm9vbCBucl9mZGQ7CisgICAga2FsX2Jvb2wgbnJfdGRkOworICAgIG1vZGVfc3dpdGNoX2NhdXNlX2VudW0gIGNhdXNlOworfSBybW1pX2Vjc3JhX3NldHRpbmdfc3RydWN0OworCisjaWZkZWYgX19UQzAxX18KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfYm9vbCAgICBpc19leGN1dGVkOworICAgIGthbF9ib29sICAgIGlzX2Fibm9ybWFsOworICAgIGthbF91aW50MTYgIHVzaWRbMTBdOworICAgIGthbF91aW50MTYgIHBpZFsxMF07CisgICAga2FsX3VpbnQxNiAgbWlkWzEwXTsKK30gcm1taV9taXBpX2h3X2luZm9faW5kX3N0cnVjdDsKKyNlbmRpZgorCisKK3R5cGVkZWYgc3RydWN0IHJtbWlfZXR3bW9kZV9zZXR0aW5nX3N0cnVjdAoreworICAgIGthbF91aW50OCBsZ193ZzsKK30gcm1taV9ldHdtb2RlX3NldHRpbmdfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0IHJtbWlfY2FtcGVkX2NlbGxfaWRfc3RydWN0Cit7CisgICAgcmF0X2VudW0gcmF0OworICAgIHJhdF9kdXBsZXhfdHlwZV9lbnVtIGR1cGxleF90eXBlOworICAgIHBsbW5faWRfc3RydWN0IHBsbW5faWQ7CisgICAga2FsX3VpbnQ4IGxhX2NvZGVbMl07CisgICAga2FsX3VpbnQ4IHRhX2NvZGVbM107CisgICAga2FsX3VpbnQ2NCBjZWxsX2lkOworfSBybW1pX2NhbXBlZF9jZWxsX2lkX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3Qgcm1taV9laW5kX2ludmFsaWRfc2ltX2luZm9fc3RydWN0Cit7CisJbDRjX3JhY19yZXNwb25zZV9lbnVtIHByZXZfY3Nfc3RhdHVzOworICAgIGw0Y19yYWNfZ3Byc19zdGF0dXNfZW51bSBwcmV2X3BzX3N0YXR1czsKKwlrYWxfdWludDggcHJldl9jYXVzZTsKKwlrYWxfdWludDggcHJldl9vcGVyW01BWF9QTE1OX0xFTisxXTsKK31ybW1pX2VpbmRfaW52YWxpZF9zaW1faW5mb19zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHJtbWlfaW1zX2VtZXJnZW5jeV9zdXBwb3J0X3N0cnVjdAoreworICAgIGthbF91aW50OCByYXRfdHlwZTsKKwlrYWxfYm9vbCBpbXNfZW1lcmdlbmN5X3N1cHBvcnQ7Cit9IHJtbWlfaW1zX2VtZXJnZW5jeV9zdXBwb3J0X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3Qgcm1taV9yc3BfbW9kZV9zdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggZWNob19mbGFnW1JNTUlfTUFYX0JJVF9NQVNLX1NJWkVdOyAgICAgICAgLyogcm1taV9jbWRfZWNob19lbnVtICovCisgICAga2FsX3VpbnQ4IHN1cHByZXNzX2ZsYWc7ICAgIC8qIHJtbWlfcmVzdWx0X2NvZGVfc3VwcHJlc3NfZW51bSAqLworICAgIGthbF91aW50OCBmb3JtYXQ7ICAgICAgICAgICAvKiBybW1pX3Jlc3VsdF9jb2RlX2Zvcm1hdCAqLworICAgIGthbF91aW50OCBleHRfcmVzdWx0X2NvZGU7Cit9IHJtbWlfcnNwX21vZGVfc3RydWN0OworCisvKiB0aGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIGxldCBjdXN0b20gY29uZmlnIHRoZSBybW1pIGRlZmF1bHQgc2V0dGluZyovCit0eXBlZGVmIHN0cnVjdHsKKyAgICBybW1pX3JzcF9tb2RlX3N0cnVjdCByc3BfbW9kZTsKKyAgICBrYWxfdWludDggZXJyb3JfcmVwb3J0X21vZGU7ICAgICAgICAvLyAgLyogK0NNRUUgPG1vZGU+OiBybW1pX2Vycm9yX3JlcG9ydF9tb2RlX2VudW0gKi8KKyAgICBrYWxfdWludDggY2hhcl9zZXQ7IC8vK0NTQ1MKKyAgICBrYWxfdWludDggcGxtbl9mb3JtYXQ7CisgICAga2FsX3VpbnQ4IGNvcHNfbW9kZTsKKyAgICBrYWxfdWludDggQ1BPTF9wbG1uX2Zvcm1hdDsKKyAgICBrYWxfdWludDggY21lY19rZXlwOworICAgIGthbF91aW50OCBjbWVjX2Rpc3A7CisgICAga2FsX3VpbnQ4IGNtZWNfaW5kOworICAgIGthbF9ib29sIGNsYWVfbW9kZTsgLy8gd2Ugc2F2ZSBjbGFlIG1vZGUgaW4gcm1taSBjb250ZXh0CisgICAga2FsX2Jvb2wgY3NkaF9zaG93OyAvL210azAwNzE0OiBmb3IgK0NTREggLCBoaWRlL3Nob3cgZGV0YWlsIFRleHQgbW9kZSBwYXJhbWV0ZXJzLgorICAgIGthbF91aW50OCBjdmh1X21vZGU7IC8vTUFVSV8wMjg2MjY0MywgbXRrMDIyODUsIHN1cHBvcnQgQ1ZIVT0xIHRvIGlnbm9yZSBBVEgKKyAgICBybW1pX3JlcG9ydF9tb2RlX3N0cnVjdCByZXBvcnRfbW9kZTsKKyAgICBybW1pX29wMDFfcmVwb3J0X21vZGVfc3RydWN0IG9wMDFfcmVwb3J0X21vZGU7CisjaWZkZWYgX19QTE1OX0xJU1RfV0lUSF9MQUNfXworICAgIGthbF9ib29sIGxpc3RfcGxtbl93aXRoX2xhYzsgLy9wcmludCBMQUMgZm9yICtDT1BTPT8gcmVzcG9uc2UKKyNlbmRpZgorfSBybW1pX2N1c3RvbV9jb250ZXh0X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBjYV9zdGF0ZV9lbnVtIGNhX3N0YXRlOworCWthbF91aW50OCBwY2VsbF9idzsKKwlrYWxfdWludDggc2NlbGxfYndbNF07CisgICAga2FsX3VpbnQxNiAgcGNlbGxfYmFuZDsKKyAgICBrYWxfdWludDE2ICBzY2VsbF9iYW5kWzRdOworfSBybW1pX2NhX2luZm9fc3RydWN0OworI2lmZGVmIF9fUkZfU0NBTl9GT1JfREVTRU5TRV9URVNUX18KK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4IHNyY19pZDsKKyAgICBrYWxfdWludDggcmF0X3R5cGU7CisgICAga2FsX3VpbnQ4IHJlcGVhdF90aW1lczsKKyAgICBrYWxfdWludDggbnVtX29mX3Jzc2lfaW5kOworICAgIGthbF9pbnQ2NCBlUnNzaVsyXTsKK30gcm1taV9yZnNjYW5fcmVxX3N0cnVjdDsKKyNlbmRpZiAvKl9fUkZfU0NBTl9GT1JfREVTRU5TRV9URVNUX18qLworCit0eXBlZGVmIHN0cnVjdCBybW1pX253X3Jlal9jYXVzZV9hdHRlbXBfY291bnRlcl9zdHJ1Y3QKK3sKKyAgICBtbV9jYXVzZV9lbnVtIG1tX2x1X3Jlal9jYXVzZTsKKyAgICBtbV9jYXVzZV9lbnVtIGF0dGFjaF9yZWpfY2F1c2U7CisgICAgbW1fY2F1c2VfZW51bSByZWdfdXBkYXRlX3Jlal9jYXVzZTsgIC8vIHRoZSByZWplY3QgY2F1c2Ugb2YgZ21tIHJhdSwgZW1tIHRhdSwgdmdtbSByZWcgdXBkYXRlCisgICAga2FsX3VpbnQ4ICAgICBtbV9sdV9hdHRlbXB0X2NvdW50ZXI7CisgICAga2FsX3VpbnQ4ICAgICBhdHRhY2hfYXR0ZW1wdF9jb3VudGVyOworICAgIGthbF91aW50OCAgICAgcmVnX3VwZGF0ZV9hdHRlbXB0X2NvdW50ZXI7ICAvLyB0aGUgYXR0ZW1wdCBjb3VudGVyIG9mIGdtbSByYXUsIGVtbSB0YXUsIHZnbW0gcmVnIHVwZGF0ZQorICAgIG1tX2NhdXNlX2VudW0gc2VydmljZV9yZWpfY2F1c2U7CisgICAga2FsX3VpbnQ4IGF1dGhfcmVqX2NhdXNlOworICAgIGVzbV9jYXVzZV9lbnVtIGVzbV9yZWpfY2F1c2U7CisgICAgcm1taV9wcm9jX3Jlc3VsdF90eXBlX2VudW0gcHJvY19yZXN1bHQ7CisgICAgbmFzX3Byb2NfZW51bSBuYXNfcHJvYzsKK30gcm1taV9ud19yZWpfY2F1c2VfYXR0ZW1wX2NvdW50ZXJfc3RydWN0OworCisjaWYgZGVmaW5lZChfX0NETUEyMDAwX1JBVF9fKQorCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF9ib29sICAgICBpc19zZXJ2aW5nX2NlbGw7CisgICAga2FsX3VpbnQ4ICAgIG51bV9vZl9jZWxsOyAgIC8qIDE6IHNlcnZpbmcgY2VsbCwgMDogbm8gc2VydmluZyBjZWxsICovCisgICAga2FsX3VpbnQxNiAgIG5pZDsKKyAgICBrYWxfdWludDE2ICAgc2lkOworICAgIGthbF91aW50MTYgICBic19pZDsKKyAgICBrYWxfaW50MzIgICAgYnNfbG9uZzsKKyAgICBrYWxfaW50MzIgICAgYnNfbGF0OworICAgIGthbF9pbnQxNiAgICByc3NpXzF4UlRUOworICAgIGthbF9pbnQxNiAgICBlY2lvXzF4UlRUOworICAgIGthbF91aW50OCAgICByc3NpX0VWRE87CisgICAga2FsX2ludDE2ICAgIGVjaW9fRVZETzsKKyAgICBrYWxfdWludDE2ICAgc2lucl9FVkRPOworfSBybW1pX2Mya19jZWxsX2luZm9fc3RydWN0OworCisjZW5kaWYKKworI2lmZGVmIF9fQVJGQ05fVE9fQ0FNRVJBX1NVUFBPUlRfXworI2lmZGVmIF9fTVRLX1RBUkdFVF9fCitQUkFHTUFfQkVHSU5fUEFDS19TVFJVQ1QKKyNlbmRpZgordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggc2ltaWQ7CisgICAga2FsX3VpbnQ4IHJhdDsKKyAgICBrYWxfdWludDggbnVtX29mX2FyZmNuOyAvKiBNQVggc3VwcG9ydGVkIGlzIDgqLworICAgIC8va2FsX3VpbnQ4IHJlc2VydmVkOyAvKiBGb3IgNCBieXRlIGFsbGlnbm1lbnQqLworICAgIGthbF91aW50MzIgYXJmY25bTDRDX01BWF9BUkZDTl9TVVBQT1JURURdOworICAgIGthbF91aW50MTYgYmFuZFtMNENfTUFYX0FSRkNOX1NVUFBPUlRFRF07CisgICAga2FsX3VpbnQ4IGlzX2Nvbm5lY3RlZDsKKyAgICBrYWxfdWludDggaXNfbWFpbl9zaW07Cit9IHJtbWlfY2FtZXJhX2FyZmNuX2luZm9fc3RydWN0OworI2lmZGVmIF9fTVRLX1RBUkdFVF9fCitQUkFHTUFfRU5EX1BBQ0tfU1RSVUNUCisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgX19FUFNGQl9TVVBQT1JUX18KK3R5cGVkZWYgc3RydWN0Cit7CisJY2FsbF9zdGF0dXNfZW51bSBjYWxsX3N0YXR1czsKKyAgICBybW1pX2Vwc2ZiX3N0YXRlX2VudW0gc3RhdGU7CisJcm1taV9lcHNmYl90eXBlX2VudW0gdHlwZTsKK30gcm1taV9lcHNmYl9pbmZvX3N0cnVjdDsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCBtY2NbNF07CisgICAga2FsX3VpbnQ4IG1uY1s0XTsKKyAgICByYXRfZW51bSByYXQ7Cit9IHJtbWlfZW9wc3VfaW5mb19zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgbDRjX2RhdGFfc3BlZWRfc3VwcG9ydF9lbnVtIGVBY3Q7CisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgIHJsY19sYXRlbmN5X2luX21zOworfSBybW1pX2xhdGVuY3lfaW5mb19zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX2Jvb2wgZGlzcGxheV81Z3V3OworICAgIGthbF9ib29sIG9uX243N19iYW5kOworICAgIGthbF9ib29sIG9uX2ZyMl9iYW5kOworICAgIGthbF9ib29sIGlzXzVndXdfYWxsb3dlZDsKK30gcm1taV9lNWd1d19pbmZvX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3Qgcm1taV9jb21tb25fY29udGV4dF9zdHJ1Y3QKK3sKKyNpZiAwIC8vI2lmZGVmIF9fQ01VWF9TVVBQT1JUX18KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZiAvKiBfX0NNVVhfU1VQUE9SVF9fICovCisKKyNpZmRlZiBfX0JUX1NVUFBPUlRfXworICAgIGthbF91aW50OCBybW1pX2hmX3NyYzsKKyAgICBrYWxfYm9vbCBoZl91cmNfcmVwb3J0X2ZsYWc7CisjZW5kaWYKKworICAgIFJNTUlfVUFSVF9GTEFHIGlzQXRkQWN0aW9uX2ZsYWc7IC8qIG10azAwNzE0IDIwMDQwNDEyIDogcmVtZW1iZXIgQVREIHRoaXMgYWN0aW9uIGFmdGVyIHNldHVwX2NuZiAqLworICAgIFJNTUlfVUFSVF9GTEFHIGlzQXRkQWJvcnRfZmxhZzsgIC8qIG10azAxNjE2IDA3MDMyMyB0byBrbm93IGl0J3MgYSBBdGQgYWJvcnQgYnkgYW55IGNoYXJhY3RlciAgKi8KKworI2lmIGRlZmluZWQoX19DTVVYX01PREVNX1NUQVRVU19TVVBQT1JUX18pCisgICAgUk1NSV9VQVJUX0ZMQUcgaXNEU1JBYm9ydF9mbGFnOworI2VuZGlmCisKKyNpZmRlZiBTWU5DTUxfRE1fU1VQUE9SVAorICAgIGthbF9ib29sIGxvY2tfYXRjaTsKKyNlbmRpZgorI2lmIGRlZmluZWQoX19HRU1JTklfXykKKyAgICBybW1pX3NpbV91YXJ0X3NldHRpbmdfZW51bSBzaW1fdWFydF9zZXR0aW5nOworICAgIHNpbV9pbnRlcmZhY2VfZW51bSBybW1pX3VhcnRfb3duZXJbUk1NSV9NQVhfQ0hBTk5FTF9OVU1CRVJdOworI2VuZGlmCisgICAgUk1NSV9VQVJUX0ZMQUcgdWFydF9wbHVnb3V0OworICAgIFJNTUlfVUFSVF9GTEFHIHVhcnRfc3RvcF9zZW5kX2ZsYWc7CisgICAgUk1NSV9VQVJUX0ZMQUcgaXNfbXVsdGlfY21kOworICAgIFJNTUlfVUFSVF9GTEFHIG11bHRpX2NtZF9lcnJvcjsgIC8vIHRoaXMgZmxhZyB1c2luZyB0byB2ZXJpZnkgaWYgZXJyb3Igb2NjdXIgLCB3ZSBzaG91bGQgYWJvcnQgY29tbWFuZCBwcm9jZXNzb3IKKyAgICBSTU1JX1VBUlRfRkxBRyBpc19zbXNfY21kOyAgICAgICAvL3VzaW5nIHRvIGNlaGNrIHN0cmluZyBpcyBzbXMgY29tbWFuZCBhbmQgc2VuZCAiID4gIiB0byBEVEUKKworICAgIGthbF91aW50OCBzb3VyY2VbUk1NSV9NQVhfQ0hBTk5FTF9OVU1CRVJdOworICAgIGthbF91aW50OCBwb3J0W1JNTUlfTUFYX0NIQU5ORUxfTlVNQkVSXTsKKyAgICBrYWxfdWludDggdWFydF9wb3J0X3ZhbHVlOyAvKiB0aGlzIHZhbHVlIHN0b3JlIHRoZSBkZWZhdWx0IHZhbHVlIGZvcm0gTlZSQU0gKi8KKyAgICBybW1pX3RyYW5zZmVyX3N0cnVjdCB0cmFuc2ZlcjsKKworICAgIC8vIFRPRE86IHJlZHVjZSB1YXJ0IGlucHV0L291dHB1dCBxdWV1ZSBzaXplLCBvbmx5IGtlZXBzIGZvciBhZ3BzIGFuZCBTQ1AgcG9ydAorICAgIHJtbWlfdWFydF9xdWV1ZV9zdHJ1Y3QgdWFydF9pbnB1dF9xdWV1ZVtSTU1JX0NIQU5FRUxfSURfTUFYXTsKKyAgICBybW1pX3VhcnRfcXVldWVfc3RydWN0IHVhcnRfb3V0cHV0X3F1ZXVlW1JNTUlfQ0hBTkVFTF9JRF9NQVhdOworICAgIGthbF91aW50OCBtdWx0aV9jbWRfc3RyaW5nW1JNTUlfTUFYX0NIQU5ORUxfTlVNQkVSXVtNQVhfTVVMVElQTEVfQ01EX0lORk9fTEVOXTsKKworI2lmZGVmIF9fVEMwMV9fCisgICAga2FsX3VpbnQ4IGdrcGRfZmxhZzsKKyAgICBrYWxfdWludDggZ2twZF9idWZmZXJbMjBdOworICAgIGthbF91aW50MTYgZ2twZF9jb3VudDsKKyAgICBrYWxfdWludDggKmdrcGRfd2luZGV4OworICAgIGthbF91aW50OCAqZ2twZF9yaW5kZXg7CisgICAga2FsX3VpbnQzMiBna3BkX2N1cnJlbnRfcmluZGV4OworICAgIGthbF91aW50MTYgZ2twZF9yaW5kZXhfY291bnQ7CisgICAga2FsX3VpbnQ4IG1wdF9mbGFnOworI2VuZGlmCisKKyAgICBrYWxfdWludDggZXRzdGxwX3BvcnRbMl07IC8vZm9yIHRzdF9wb3J0X3BzIGFuZCB0c3RfcG9ydF9sMQorCisgICAga2FsX3VpbnQ4IGdzbV90eF9wd3JfcmVkdWN0aW9uX3RibFs0XVsyXVs0XTsKKyAgICBrYWxfdWludDggdW10c190eF9wd3JfcmVkdWN0aW9uX3RibFsyMF1bMl07CisKKyAgICBrYWxfdWludDggZ3NtX3R4X3B3cl9yZWR1Y3Rpb25fdGJsX3Rhc1s0XVsyXVs0XTsKKyAgICBrYWxfdWludDggdW10c190eF9wd3JfcmVkdWN0aW9uX3RibF90YXNbMjBdWzJdOworCisgICAga2FsX3VpbnQ4IGlzX3JybV90ZXN0OyAvLyB3b3JrIGFyb3VuZCBmb3IgUlJNIHRlc3QsIEVNTSBuZWVkIHNwZWNpYWwgcG93ZXIgb2ZmIHdpdGhvdXQgc2VuZGluZyBkZXRhY2gKKworI2lmbmRlZiBfX01US19UQVJHRVRfXworICAgIGthbF91aW50OCB1dF91YXJ0X2lucHV0W01BWF9VVF9VQVJUX0xFTkdUSF07CisgICAga2FsX3VpbnQxNiB1dF91YXJ0X2lucHV0X2xlbjsKKyNlbmRpZgorICAgIGthbF91aW50OCBybXNfc3RhdGU7CisKKyAgICBrYWxfdWludDggaXNfZG9uZ2xlX21vZGU7CisKKyNpZmRlZiBfX1RDMTBfXyAvLyBDQ0xLCisgICAgcm1taV9uaXR6X3RpbWVfc3RydWN0IG5pdHpfdGltZTsKKyNlbmRpZgorCit9IHJtbWlfY29tbW9uX2NvbnRleHRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCBybW1pX2NvbnRleHRfc3RydWN0Cit7CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIEJlbG93IGNvbnRleHQgYXJlIHBsYWNlZCBpbiB0aGUgZnJvbnQgb2YgUk1NSSBjb250ZXh0ICAgICAgICAgICAgICAgICAqLworLyogdG8gaW5jcmVhc2UgaW1tZWRpYXRlIG9mZnNldCBhY2Nlc3MgLCB0byByZWR1Y2UgUk9NIHNpemUgICAgICAgICAgICAgICovCisvKiBQbGVhc2UgS0VFUCB0aGUgcG9zaXRpb24gZm9yIHRoZSBmb2xsb3dpbmcgZnJlcXVlbnQgdXNlZCB2YXJpYWJsZXMgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIGthbF91aW50OCBjdXJyZW50X3NyYzsKKworICAgIGthbF91aW50OCBjaGFyX3NldDsgLy8rQ1NDUworICAgIGthbF9ib29sIGlzX3VjbV9hY3Rpb247CisgICAga2FsX3VpbnQxNiBjbWVlX2VycjsgICAgICAgIC8vIGVycm9yIHZhbHVlIGZvciArQ01FOjxlcnI+CisgICAga2FsX2Jvb2wgdWFydF9pbl9kYXRhX21vZGU7CisgICAga2FsX3VpbnQ4IG9ubGluZV9jbWRfc3RhdGU7CisKKyAgICBrYWxfYm9vbCBhdHMwX2F1dG9fYW5zd2VyOyAgLy9tdGswMTYxNl8wNzA3MDcgYWRkIHRoaXMgdG8gcHJldmVudCBwcmludCBPSyBmb3IgYXV0byBhbnN3ZXIKKyNpZmRlZiBfX1VDTV9TVVBQT1JUX18KKyAgICBrYWxfYm9vbCBpc19hdGFfYWN0aW9uOyAgICAgLy9tdGswMTYxNl8wNzA3MDcgYWRkIHRoaXMgdG8gaGFuZGxlIEFUQSByZXN1bHQgY29kZQorICAgIGthbF9ib29sIGlzX2NvbXBvdW5kX2FjdGlvbjsgLy9NQVVJXzAyMDE2MjI0CisjZW5kaWYKKworICAgIC8qIHVzZSB0byBjaGVjayBpZiBzaW0gdmVyaWZpZWQgKi8KKyAgICBrYWxfYm9vbCBjb21tYW5kX2FsbG93OyAgICAgLy8gdXNpbmcgdG8ga2VlcCBpZiBwYXNzd29yZCByZXF1aXJlZCwgb25seSBzb21lIEFUIGNvbW1hbmQgY2FuIGFjY2VzcyB3aGVuIHBpbiBwdWsgb3IgcGhfc2ltIHBlbmRpbmcKKyAgICBrYWxfdWludDE2IGNtZF9lcnJvcl9jYXVzZTsgLy8gU01VIHNhdmVzIGNvbW1hbmQgbm90IGFsbG93IGNhdXNlIGZvciArY21lIGVycm9yIHZhbHVlIHRvIFRBCisKKyAgICBybW1pX3NfcmVnaXN0ZXJfc3RydWN0IHNfcmVnOworICAgIHZvaWQgKmFyZ19saXN0W1JNTUlfTUFYX0FSR19OVU1dOworCisgICAgcm1taV9yc3BfbW9kZV9zdHJ1Y3QgcnNwX21vZGU7CisgICAgcm1taV9jaW5kX3N0cnVjdCBpbmRpY2F0b3JzOyAgICAgICAgLy8gZm9yICtDSU5EIGFuZCArQ01FUgorICAgIHJtbWlfcmVwb3J0X21vZGVfc3RydWN0IHJlcG9ydF9tb2RlOworICAgIHJtbWlfcmVnX3N0YXRlX3N0cnVjdCBjc19yZWdpc3Rlcl9zdGF0dXM7IC8vcmVnaXN0cmF0aW9uIHN0YXR1cyBmb3IgK0NSRUcKKyNpZmRlZiBfX01PRF9UQ01fXworICAgIHJtbWlfcmVnX3N0YXRlX3N0cnVjdCBwc19yZWdpc3Rlcl9zdGF0dXM7IC8vcmVnaXN0cmF0aW9uIHN0YXR1cyBmb3IgK0NHUkVHCisgICAgbDRjX2RhdGFfYmVhcmVyX2NhcGFibGlsaXR5X2VudW0gcHNiZWFyZXJfcGFyYW0yOyAvL3RoZSBsYXN0IHJlcG9ydGVkIDxiZWFyZXJfY2FwYWJpbGl0eT4gaW4gK1BTQkVBUkVSCisgICAga2FsX2Jvb2wgbDRjX3BzX2lzX3NlbnRfdG9fY3VycmVudF9zcmMgOyAvLyBJZiBLQUxfRkFMU0UsIHNlbmQgTVNHIHRvIFVSQyBjaGFubmVsCisgICAga2FsX3VpbnQ4IGw0Y19wc19lbWJlZF9tc2dfc3JjOworI2VuZGlmCisKKyAgICBybW1pX2VvcHN1X2luZm9fc3RydWN0IGVvcHN1X2luZm87CisgICAgcm1taV9sYXRlbmN5X2luZm9fc3RydWN0IGxhdGVuY3lfaW5mbzsKKwlybW1pX2U1Z3V3X2luZm9fc3RydWN0IGU1Z3V3X2luZm87CisKKyNpZmRlZiBfX0w0Q19HUFJTX1VUX18KKyAgICBwc19jYXVzZV9lbnVtIGNhdXNlOworI2VuZGlmCisKKyAgICBybW1pX2VjY19udW1iZXJfbGlzdF9zdHJ1Y3QgZWNjX251bWJlcjsgLyogdG8gc3RvcmUgRUNDIG51bWJlciBmcm9tIG5ldHdvcmssIHJlbGF0ZWQgdG8gK0NFTiAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBBYm92ZSBjb250ZXh0IGFyZSBwbGFjZWQgaW4gdGhlIGZyb250IG9mIEw0QyBjb250ZXh0ICAgICAgICAgICAgICAgICovCisvKiB0byBpbmNyZWFzZSBpbW1lZGlhdGUgb2Zmc2V0IGFjY2VzcyAsIHRvIHJlZHVjZSBST00gc2l6ZSAgICAgICAgICAgICovCisvKiBQbGVhc2UgdHJ5IHRvIEtFRVAgdGhlIHBvc2l0aW9uIGZvciB0aGVzZSBmcmVxdWVudCB1c2VkIHZhcmlhYmxlcyAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8vI2lmZGVmIF9fSU1TX1NVUFBPUlRfXworICAgIHJtbWlfaW1zX3JlZ19zdGF0ZV9zdHJ1Y3QgaW1zX3JlZ2lzdGVyX3N0YXR1czsKKyAgICBrYWxfdWludDggaW1zdm9wc19pbmRpY2F0aW9uOyAvLyBJTVMgVm9pY2Ugb3ZlciBQUyBzZXNzaW9uIGluZGljYXRpb24KKyAgICBrYWxfdWludDggZW1iX0l1X3N1cHA7IC8vIEVtZXJnZW5jeSBiZWFyZXIgc2VydmljZXMgc3VwcG9ydCBpbmRpY2F0b3IgZm9yIEl1IG1vZGUKKyAgICBrYWxfdWludDggZW1iX1MxX3N1cHA7IC8vIEVtZXJnZW5jeSBiZWFyZXIgc2VydmljZXMgc3VwcG9ydCBpbmRpY2F0b3IgZm9yIFMxIG1vZGUKKy8vI2VuZGlmCisKKyAgICAvKiBzZXR0aW5ncyAqLworICAgIGthbF91aW50OCBlbV9lbmFibGU7ICAgICAgICAvL210azAwNDY4IGFkZCBmb3IgdXNpbmcgdG8ga2VlcCB0aGUgZW0gZW5hYmxlIG9yIGRpc2FibGUgZW5naW5lZXIgbW9kZSBpbmZvcm1hdGlvbgorICAgIGthbF91aW50OCBkYXRlX2F1eF9tb2RlOyAgICAvLyB0aGlzIHZhcmlhYmxlIHVzaW5nIGZvciArQ1NERiB0byBrZWVwIGluIGxvY2FsCisgICAga2FsX3VpbnQ4IGNyaW5nX3R5cGU7ICAgICAgIC8vbXRrMDA3MTQgYWRkIGZvciArQ1JDIChyZW1lbWJlciBjcmluZ190eXBlIGZvciBybW1pX3JpbmdfcmVwZWF0X2hkbHIpCisgICAga2FsX3VpbnQ4IGVycm9yX3JlcG9ydF9tb2RlOyAgICAgICAgLy8gIC8qICtDTUVFIDxtb2RlPjogcm1taV9lcnJvcl9yZXBvcnRfbW9kZV9lbnVtICovCisgICAga2FsX3VpbnQ4IHBsbW5fZm9ybWF0OworICAgIGthbF91aW50OCBsYXN0X3BsbW5fZm9ybWF0OyAvKiBiZSB1c2VkIHRvIHJlc3RvcmUgZm9ybWF0IGlmIEFUK0NPUFMgcmV0dXJuIGVycm9yICovCisjaWZkZWYgX19QTE1OX0xJU1RfV0lUSF9MQUNfXworICAgIGthbF9ib29sIGxpc3RfcGxtbl93aXRoX2xhYzsgLy9wcmludCBMQUMgZm9yICtDT1BTPT8gcmVzcG9uc2UKKyNlbmRpZgorICAgIGthbF91aW50OCBjb3BzX21vZGU7CisgICAga2FsX3VpbnQ4IGNvcHNfcmF0X21vZGU7CisgICAgZW5kY19zZWFyY2hfZW51bSBjb3BzX2VuZGNfc2VhcmNoX21vZGU7CisgICAga2FsX3VpbnQ4IENQT0xfcGxtbl9mb3JtYXQ7CisgICAga2FsX3VpbnQ4IHNtc2FsX2JmcjsgICAgICAgICAgICAgICAgICAgIC8qICtDTk1JIDogPGJmcj4gKi8KKyAgICBrYWxfdWludDggQ05NSV9tb2RlOyAgICAgICAgLy8gK0NOTUk6IDxtb2RlPjogcmVzdWx0IGNvZGUgbW9kZQorICAgIC8va2FsX3VpbnQxNiBtYXhfcGxtbl9saXN0X2xlbjsgICAgICAgLy8rQ1BPTCA/CisgICAga2FsX2Jvb2wgY2JfbW9kZTsKKyAgICBrYWxfYm9vbCBjc2RoX3Nob3c7IC8vbXRrMDA3MTQ6IGZvciArQ1NESCAsIGhpZGUvc2hvdyBkZXRhaWwgVGV4dCBtb2RlIHBhcmFtZXRlcnMuCisgICAga2FsX2Jvb2wgY2xhZV9tb2RlOyAvLyB3ZSBzYXZlIGNsYWUgbW9kZSBpbiBybW1pIGNvbnRleHQKKyAgICBrYWxfYm9vbCBjbXV0X21vZGU7IC8vIHdlIHNhdmUgY2xhZSBtb2RlIGluIHJtbWkgY29udGV4dAorICAgIGthbF91aW50OCBwcmVmZXJyZWRfbGFuZzsKKyAgICBrYWxfdWludDggcmluZ19jb3VudDsgICAgICAgLy8gZm9yIEFUUzAKKyAgICBybW1pX2NsaXBfaW5mb19zdHJ1Y3QgY2xpcF9pbmZvOworICAgIHJtbWlfY25hcF9pbmZvX3N0cnVjdCBjbmFwX2luZm87CisgICAga2FsX3VpbnQ4IGNhc3Bfc291bmRJRDsgICAgIC8vZm9yICtDQVNQIHByb3ByaWV0YXJ5IGNvbW1hbmQgLCB0aW1lb3V0IGhkbHIgcGFyYW1ldGVyLgorICAgIC8va2FsX2Jvb2wgaXNfZ3Byc19kYXRhX2RpYWxpbmc7ICAvKiBBVEggaXMgbm90IGFsbG93ZWQgdG8gaGFuZ3VwIGV4aXN0ZWQgdm9pY2UgY2FsbCBhZnRlciBkaWFsdXAgZmFpbGVkICovIC8vbXRrMDIyODUsIDIwMTAwMywgNjI1MV9yYW0KKyNpZmRlZiBfX01PRF9UQ01fXworICAgIGthbF91aW50OCBjZ2F0dF9sYXN0X2FjdGlvbjsgICAgLyogbXRrMDA3MTQgMjAwNDA2MTEgYWRkIHRvIGF2b2lkIGNvbnRpbnVvcyBhdCtjZ2F0dD0wIG9yIGF0K2NnYXR0PTEgKi8KKyNlbmRpZiAvL210azAyMjg1LCAyMDEwMDMsIDYyNTFfcmFtCisgICAga2FsX3VpbnQxNiBjcGJyX3JhbmdlWzJdOworICAgIGthbF91aW50MTYgcGhiX2RlbF9pbmRleDsKKyAgICBrYWxfdWludDggcGhiX2RlbF9zdG9yYWdlOworICAgIGthbF91aW50OCBjcGJyX2xuX2Jhc2VfaW5kZXg7CisKKyAgICBrYWxfdWludDggZWNwYnJfbnVtX2luZGV4OworICAgIGthbF91aW50OCBlY3Bicl9lbnRyeV9mb3VuZDsKKyAgICBsNF9uYW1lX3N0cnVjdCBlY3Bicl9hbHBoYUlkOworCisgICAga2FsX3VpbnQ4IGVjcGJ3X251bV9pbmRleDsKKyAgICBrYWxfdWludDggZWNwYndfZW1haWxfd3JpdGU7CisgICAga2FsX3VpbnQxNiBlY3Bid19yZWNvcmRfaW5kZXg7CisgICAga2FsX3VpbnQ4IGVjcGJ3X2lzX2RlbGV0ZTsKKyAgICBybW1pX3BoYl9jcGJ3X3N0cnVjdCAqZWNwYndfZW50cnlfcHRyOworCisgICAgcm1taV9vcDAxX3JlcG9ydF9tb2RlX3N0cnVjdCBvcDAxX3JlcG9ydF9tb2RlOworCisgICAga2FsX2Jvb2wgaXNfY3Bid19waGJfZmRuOworCisJbDRjX3NvdXJjZV9pZF9lbnVtIG9ubGluZV9jbWRfc3RhdGVfc3JjX2lkOyAvL01BVUlfMDE2NTI2NzIsIG10azAyMjg1LCAyMDA5MDMyNAorCisjaWZkZWYgX19JUkRBX1NVUFBPUlRfXworICAgIC8va2FsX3VpbnQ4IHBwcF9uc2FwaTsgLy9tdGswMjI4NSwgMjAxMDAzLCA2MjUxX3JhbQorI2VuZGlmCisKKyNpZmRlZiBfX1NBVF9fCisgICAga2FsX2Jvb2wgc2F0X2ljb25fZGlzcGxheWVkOyAgICAgICAgLy9tdGswMDkyNDogZGlzcGxheSBpY29uIGZvciBTVEsgU01TLCBTUywgVVNTRCwgRFRNRgorI2VuZGlmCisKKyAgICBrYWxfdWludDggZXhjZXB0X3NyYzsgICAgICAgLy9mb3IgdW5zb2xpY2l0ZWQgY29kZSwgYnV0IGRvbid0IHNlbmQgaXQgdG8gdGhpcyBzcmMuIGV4LiBNVCBkYXRhIGNhbGwsIGRvbid0IHNlbmQgUklORyB0byBidCBocworICAgIGthbF91aW50OCBpbWVpX2FjdGlvbjsgICAgICAvL3JtbWlfaW1laV9hY3Rpb25fZW51bQorICAgIGthbF91aW50OCBybW1pX2F0ZF9tZW07ICAgICAgLy9tdGswMTYxNl8wOTAxMTYgOnJtbWlfbWVtX2RpYWxfZW51bQorICAgIGthbF91aW50MTYgYWN0aW9uX2NtZDsgICAgICAvL3JtbWlfZXh0ZW5kZWRfY21kX2lkX2VudW0KKyNpZmRlZiBfX0JUX1NVUFBPUlRfXworICAgIGthbF91aW50OCBsYXN0X3JlcG9ydGVkX2NpZXZfc2lnbmFsOyAvL2hvbmdfcnhfbGV2ZWwKKyAgICBrYWxfYm9vbCBzZW5kX2NpZXZfY2FsbGhlbGQ7IC8vbXRrMDE2MTZfMDkwOTIzOiBleHBsaWN0bHkgdG8gc2VuZCArQ0lFVjo8Y2FsbGhlbGQ+IGV2ZW4gdGhlIHN0YXR1cyBpcyBub3QgY2hhbmdlZAorI2VuZGlmCisgICAga2FsX3VpbnQ4IGF0aF9mb3JfZGlhbHVwOyAgIC8vbXRrMDE2MTZfMDgwOTIzOiBBVEggaXMgZm9yIGRpYWx1cCBmYWlsdXJlLCB3ZSB1c2UgdGhpcyB0byAgcHJldmVudCBBVEggdG8gZGlzY29ubmVjdCBjYWxsCisgICAga2FsX3VpbnQ4IGxhc3RfbnVtYmVyX2RpYWxlZFtNQVhfQ0NfQUREUl9MRU5dOy8vYXRkTCBsYXN0IG51bWJlciBkaWFsZWQKKworI2lmIDAgLy9fX0NUTV9TVVBQT1JUX18KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorCisgICAga2FsX3VpbnQ4IGVtX3ZvbHVtZV9sZXZlbDsKKyAgICBrYWxfdWludDggZW1fdm9sdW1lX3R5cGU7CisgICAga2FsX3VpbnQ4IGVtX2F1ZGlvX3R5cGU7CisgICAga2FsX3VpbnQ4IGVtX2F1ZGlvX2dhaW47CisgICAga2FsX3VpbnQ4IGVtX2F1ZGlvX21vZGU7CisgICAga2FsX3VpbnQ4IGVtX2VhZHBfYWN0aW9uOworCisgICAgLyogQ29udGV4dCBmb3IgQVQrRUFQUyAqLworICAgIGthbF91aW50OCBlYXBzX2FjdGlvbjsKKyAgICBrYWxfdWludDggZWFwc19wYXJhMTsKKyAgICBrYWxfdWludDggZWFwc19wYXJhMjsKKyAgICBrYWxfdWludDggZWFwc19wYXJhMzsKKyAgICB2b2lkKiBlYXBzX2F1ZGlvX3BhcmFtOworCisjaWZkZWYgX19WT0lQX18KKyAgICBrYWxfYm9vbCBjbV9jbWRfYXBwcm92ZTsgICAgLy9TZW5kIENhbGwgTWFuYWdlbWVudCBjb21tYW5kIHRvIE1NSSB0byBnZXQgYXBwcm92YWwKKyAgICB2b2lkICpzdHJpbmdfcHRyOworICAgIHZvaWQgKm5vZGVfcHRyOworICAgIHZvaWQgKmlkOworI2VuZGlmIC8qIF9fVk9JUF9fICovCisgICAga2FsX3VpbnQ4IHBvd2Vyb2ZmX3NyY19pZDsKKyAgICBrYWxfdWludDggaXNfc3BuX3ZhbGlkOworICAgIGthbF91aW50OCBzcG5bTEVOX09GX1NQTl07CisKKyAgICBrYWxfdWludDMyIGVpbmRfcmVhZHlfZmxhZzsKKyAgICBrYWxfdWludDggdmdyX2dhaW47CisgICAga2FsX3VpbnQ4IHZndF9nYWluOworCisgICAga2FsX3VpbnQxNiBsYXN0X2V4ZWN1dGVkX1AyX2ZhaWw7IC8vW01BVUlfMDEyOTIzNDldIG10azAyNDgwbCAyNy4wMDc6ICtDUElOPyByZXR1cm4gIFBJTjIvUFVLMiBpZiBwcmV2aW91cyBjb21tYW5kIGV4ZWN1cmVkIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUsIGkuZS4gY21lZV9lcnI9IDE3LzE4CisKKyNpZiBkZWZpbmVkKF9fTU9ERU1fRU1fTU9ERV9fKQorICAgIGthbF91aW50OCBlbV9zcmNfaWQ7ICAvLyB1c2VkIHRvIHJlbWVtYmVyIEVNIHJlcXVlc3Qgc3JjX2lkCisjZW5kaWYKKworICAgICNpZmRlZiBfX0dBVElfRU5BQkxFX18KKyAgICBnYXRpX21vZF9zcmNfc3RydWN0IGdhdGlfbW9kX3NyY190YWJsZVtHQVRJX01BWF9NT0RVTEVfQ09VTlRdOwkvKiBUaGUgdGFibGUgd2hpY2ggcmVjb3JkIHRoZSByZWxhdGlvbiBvZiBtb2R1bGUgdG8gc3JjX2lkIGFuZCBpdHMgY29udHJvbCBzdGF0dXMgKi8KKyAgICBrYWxfdWludDggZ2F0aV9iaW5hcnlfbW9kZV9tb2R1bGVbTUFYX1NPVVJDRV9OVU1dOwkvKiBUaGUgbW9kdWxlIGlkIHRoYXQgYWN0aXZlIHRoZSBiaW5hcnkgbW9kZSBmb3Igc3BlY2lmaWMgc291cmNlIGlkICovCisgICAga2FsX3VpbnQzMiBnYXRpX3N0b3BfcmVhZF9kYXRhX2Zyb21fdWFydDsJCQkJCQkvKiBUaGUgYml0IG1hcCB0byBzcGVjaWZ5IHdoaWNoIHNyY19pZCBpcyBub3cgc3RvcCByZWNlaXZpbmcgZGF0YSBmcm9tIHRoZSBVQVJUICovCisgICAga2FsX3VpbnQzMiBnYXRpX3BlbmRpbmdfcnRyX2luZDsJCQkJCQkJCS8qIFRoZSBiaXQgbWFwIHRvIHNwZWNpZnkgaWYgdGhlcmUgYXJlIHJ0ciBpbmRpY2F0aW9uIGZyb20gdGhlIFVBUlQgZHVyaW5nIHRoZSBBVENJIHN0b3AgcmVjZWl2aW5nIGRhdGEgZnJvbSB0aGUgVUFSVCAqLworICAgIGdhdGlfYnVmZmVyX3N0cnVjdAlnYXRpX2J1ZmZlcjsJCQkJCQkJCQkJLyogVGhlIGJ1ZmZlciB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgbW9kZSBpcyBpbiB0aGUgYmluYXJ5IG1vZGUgYW5kIHRoZXJlIGlzIHNvbWUgZGF0YSBmcm9tIG90aGVyIG1vZHVsZSB3aGljaCBkb2VzIG5vdCBhY3RpdmUgdGhlIGJpbmFyeSBtb2RlLiAqLworICAgIGthbF91aW50OCBnYXRpX2J1ZmZlcl9jb3VudDsKKyAgICAvKiBUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgdGVtcCBvbmVzIHVzZWQgdG8gdHJhbnNtaXQgaW5mb3JtYXRpb25zIGJldHdlZW4gZnVuY3Rpb25zICovCisgICAga2FsX2Jvb2wJZ2F0aV93cml0ZV9hbGxvd19mbGFnOwkJCQkJLyogVGhpcyBmbGFnIGlzIHVzZWQgdG8gYWxsb3cgdGhlIHdyaXRpbmcgYWN0aW9uIGZvciB0aGUgb3duZXIgb2YgdGhlIGJpbmFyeSBtb2RlICovCisgICAga2FsX3VpbnQxNiBnYXRpX2FjdHVhbF93cml0ZTsJCQkJCQkvKiBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgdG8gZ2V0IHRoZSBhY3R1YWwgd3JpdGUgc2l6ZSB0byB0aGUgb3V0cHV0IHF1ZXVlIGluIHRoZSBybW1pX3VhcnRfd3JpdGVfZGF0YSAqLworICAgIGthbF91aW50OCBnYXRpX2RhdGFfdHlwZTsJCQkJCQkJLyogVGhpcyB2YXJpYWJsZSBpcyB1c2VkIHRvIGtub3cgaWYgdGhlIGRhdGEgdHlwZSBpcyBpbnRlZ3JpdHkgb3Igbm90ICovCisgICAgI2VuZGlmCisKKyAgICBrYWxfdWludDggY21lY19rZXlwOworICAgIGthbF91aW50OCBjbWVjX2Rpc3A7CisgICAga2FsX3VpbnQ4IGNtZWNfaW5kOworCisgICAgbDRjX25icl9jZWxsX2luZm9faW5kX3N0cnVjdCBuYnJfaW5mbzsKKyAgICBsNGNfZW5kY19uYnJfY2VsbF9pbmZvX3N0cnVjdCBlbmRjX25icl9jZWxsX2luZm87CisKKyAgICBrYWxfdWludDggaXNfZW1ncjsKKworI2lmICFkZWZpbmVkKF9fU0xJTV9BVF9fKQorICAga2FsX3VpbnQ4ICAgY2NmY19jb21iaV9jbGFzc3g7IC8vb3JpZ2luYWwgPGNsYXNzeD4gZ2l2ZW4gYnkgQVQrQ0ZDQworCQkJCQkJCS8vIGVhY2ggYml0IGlzIGZvciBlYWNoIGNsYXNzeC4gKFRTIG9yIEJTKQorCQkJCQkJCSAvLyAxOiB3ZSBuZWVkIHRvIG1ha2UgcmVxIGZvciB0aGlzIGJzX2NvZGUgLyAwOiBpZ25vcmVkCisJCQkJCQkJIC8vdXNlIGJpdCBvcGVyYXRpb24KKyAgIGthbF91aW50OCAgIGNjZmNfY3VycmVudF9jbGFzczsgLy90aGUgY2xhc3Mgb2YgY3VycmVudCByZXEKKyAgIGNjZmNfcmVxX3BhcmFtX3N0cnVjdCBjY2ZjX3JlcV9wYXJhbTsgIC8vc3RvcmVzIG90aGVyIHJlcSBwYXJhbWV0ZXIgaW5mb3JtYXRpb24KKyAgIGthbF9ib29sCWNjZmNfcmVzdWx0OworCisgICBrYWxfdWludDggICBjbGNrX3NzX2NvbWJpX2NsYXNzeDsgLy9vcmlnaW5hbCA8Y2xhc3N4PiBnaXZlbiBieSBBVCtDTENLCisJCQkJCQkJLy8gZWFjaCBiaXQgaXMgZm9yIGVhY2ggY2xhc3N4LiAoVFMgb3IgQlMpCisJCQkJCQkJIC8vIDE6IHdlIG5lZWQgdG8gbWFrZSByZXEgZm9yIHRoaXMgYnNfY29kZSAvIDA6IGlnbm9yZWQKKwkJCQkJCQkgLy91c2UgYml0IG9wZXJhdGlvbgorICAga2FsX3VpbnQ4ICAgY2xja19zc19jdXJyZW50X2NsYXNzOyAvL3RoZSBjbGFzcyBvZiBjdXJyZW50IHJlcQorICAgY2xja19zc19yZXFfcGFyYW1fc3RydWN0IGNsY2tfc3NfcmVxX3BhcmFtOyAgLy9zdG9yZXMgb3RoZXIgcmVxIHBhcmFtZXRlciBpbmZvcm1hdGlvbgorICAga2FsX2Jvb2wJY2xja19zc19yZXN1bHQ7CisgICBzbXVfc2VjdXJpdHlfdHlwZV9lbnVtIGNsY2tfc21sX3R5cGU7IC8vZm9yIGF0K2NsY2sgdG8gcXVlcnkgU01MIHN0YXR1cworI2VuZGlmCisKKyAgIGthbF91aW50OCAgIGNjd2FfY29tYmlfY2xhc3N4OyAvL29yaWdpbmFsIDxjbGFzc3g+IGdpdmVuIGJ5IEFUK0NDV0EKKwkJCQkJCQkvLyBlYWNoIGJpdCBpcyBmb3IgZWFjaCBjbGFzc3guIChUUyBvciBCUykKKwkJCQkJCQkgLy8gMTogd2UgbmVlZCB0byBtYWtlIHJlcSBmb3IgdGhpcyBic19jb2RlIC8gMDogaWdub3JlZAorCQkJCQkJCSAvL3VzZSBiaXQgb3BlcmF0aW9uCisgICBrYWxfdWludDggICBjY3dhX2N1cnJlbnRfY2xhc3M7IC8vdGhlIGNsYXNzIG9mIGN1cnJlbnQgcmVxCisgICBjY3dhX3JlcV9wYXJhbV9zdHJ1Y3QgY2N3YV9yZXFfcGFyYW07ICAvL3N0b3JlcyBvdGhlciByZXEgcGFyYW1ldGVyIGluZm9ybWF0aW9uCisgICBrYWxfYm9vbAljY3dhX3Jlc3VsdDsKKyAgIGthbF91aW50OCBjdmh1X21vZGU7IC8vTUFVSV8wMjg2MjY0MywgbXRrMDIyODUsIHN1cHBvcnQgQ1ZIVT0xIHRvIGlnbm9yZSBBVEgKKworI2lmICFkZWZpbmVkKF9fVUxDX0FUX18pCisgICAgcm1taV9wcm9maWxlX3N0cnVjdCBybW1pX2RlZmF1bHRfcHJvZmlsZTsKKyAgICBybW1pX3Byb2ZpbGVfc3RydWN0IHJtbWlfdXNlcl9wcm9maWxlOworICAgIHJtbWlfcHJvZmlsZV9zdHJ1Y3Qgcm1taV9jdXJyZW50X3Byb2ZpbGU7CisjZW5kaWYKKworICAgIHJtbWlfdWFydF9xdWV1ZV9zdHJ1Y3QgQ05NSV9SZXN1bHRDb2RlQnVmZmVyOyAgICAgICAvL2ZvciArQ05NSSwgU01TQUxfT05FX01TR19MRU4gPSAxNjAKKyAgICBrYWxfdWludDggY21kX21vZGU7CisgICAga2FsX3VpbnQ4IGNwYmZfZmluZHRleHRbMzBdOworCisjaWZkZWYgX19TQVRfXworI2lmZGVmIF9fU0FUQ0JfXworICAgIHJtbWlfdWFydF9xdWV1ZV9zdHJ1Y3Qgc2F0X291dHB1dF9xdWV1ZTsgICAgLy9tdGswMDcxNCBhZGQgZm9yIFNBVCB1c2luZworICAgIGthbF9ib29sIElzU0FUY29tbWFuZDsgICAgICAvL2NoZWNrIGlmIFNBVENvbW1hbmQKKyAgICBrYWxfYm9vbCBJc1NBVHJlc3BvbnNlOyAgICAgLy91c2UgdG8gY2hlY2sgaWYgU0FUIHJlc3BvbnNlCisgICAgdm9pZCAqU0FUX3JzcF9wdHI7CisjZW5kaWYKKyNlbmRpZiAvKiBfX1NBVF9fICovCisKKyNpZmRlZiBfX0NNVVhfU1VQUE9SVF9fCisgICAga2FsX3VpbnQ4IHJtbWlfZGF0YV9jaGFubmVsX3NyYzsKKyAgICBrYWxfdWludDggcm1taV91cmNfY2hhbm5lbF9zcmM7CisgICAga2FsX3VpbnQ4IHJtbWlfdXJjXzJfY2hhbm5lbF9zcmM7CisjaWZkZWYgX19UQzAxX0lNU19TVVBQT1JUX18KKwlrYWxfdWludDggcm1taV91cmNfM19jaGFubmVsX3NyYzsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fQVRfSVBSX1dSSVRFX0ZTX1NVUFBPUlRfXykKKyAgIGthbF91aW50MzIgYXRpcHJfcmF0ZTsKKyNlbmRpZgorCisgICAga2FsX3VpbnQ4IGNzcF9wbG1uX21vZGU7CisKKyNpZiBkZWZpbmVkKF9fTUVTU0FHRV9CQVNFRF9BVF9TVVBQT1JUX18pCisgICAga2FsX2Jvb2wgbXNnX2Jhc2VkX2F0X2VuYWJsZTsKKyNlbmRpZgorCisgICAga2FsX3VpbnQ4IGF0czBfc3JjX2lkOyAvL01BVUlfMDI3NDM2NjIgZm9yIHNhdmluZyBBVFMwIGF1dG8gYW5zd2VyIHNvdXJjZSBpZAorCisgICAga2FsX3VpbnQ4IGNwbHNfc2VsZWN0ZWQ7CisKKyNpZiAwIC8vbW92ZSB0byBBVFAKKyNpZiBkZWZpbmVkKF9fRFVBTF9UQUxLX01PREVNX1NVUFBPUlRfXykKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fU1lTU0VMX1NVUFBPUlRfXykKKyAgICBrYWxfdWludDggc3lzc2VsX2JhbmQ7CisjZW5kaWYKKworI2lmZGVmIF9fQUNNVF9TVVBQT1JUX18KKyAgICBrYWxfdWludDggZWFjbXRfbW9kZTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX1JFUE9SVF9BVkFJTEFCTEVfUExNTl9fKQorICAgIGthbF91aW50OCBlY29wc19tb2RlOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fMlNUQUdFX05XX1NFTEVDVElPTl9fKQorICAgIGthbF91aW50OCBlbXNyX21vZGU7CisjZW5kaWYKKworICAgIGthbF91aW50OCBpc19jcmxhW1JNTUlfTUFYX0JJVF9NQVNLX1NJWkVfQ1JMQV07CisKKyNpZm5kZWYgX19VQ01fU1VQUE9SVF9fCisgICAgLyogVGhpcyBmbGFnIGlzIHRvIGluZGljYXRlIEFUSCBpcyByZWRpcmVjdGVkIHRvIGw0Y19jY19leGVfY2hsZF9yZXEoKQorICAgICAqIFRoZSByZXNwb25zZSBpcyBwcmludGVkIGluIGw0Y19jY19leGVfY2hsZF9yZXEoKSBvciBhZnRlciBDUlNTX0NORgorICAgICAqIFNvIHJtbWlfYmFzaWNfY21kX3Byb2Nlc3NvcigpIHNoYWxsIG5vdCBwcmludCBhZ2Fpbi4KKyAgICAgKiBQbGVhc2UgcmVmZXIgdG8gQUxQUzAwNjQ5NTY0LgorICAgICAqLworICAgIGthbF91aW50OCBhdGhfdG9fY2hsZDsKKyNlbmRpZgorCisvL21vdmUgdG8gQVRQX0lPICAgIG1vZHVsZV90eXBlIHRzdF9pbmplY3RfbW9kOyAgLy8gVG8gcmVjb3JkIHdoaWNoIG1vZHVsZSBzZW50IHRoZSB0c3RfaW5qZWN0X3N0cmluZworCisjaWYgMCAvLyNpZmRlZiBfX0lNU19TVVBQT1JUX18KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0NETUEyMDAwX1JBVF9fKQorCisgICAga2FsX3VpbnQ4IGVtZHN0YXR1c19tZF9jb25maWc7CisgICAga2FsX3VpbnQ4IGVtZHN0YXR1c19zaW1fY29uZmlnOworICAgIGthbF91aW50OCBlbWRzdGF0dXNfZnY7ICAgICAgICAgLy8gZmxvdyB2ZXJzaW9uCisgICAga2FsX3VpbnQ4IGVtZHN0YXR1c19zcmNpZDsKKyAgICBybW1pX2Mya19jZWxsX2luZm9fc3RydWN0IGMya19jZWxsX2luZm87CisJa2FsX2Jvb2wgZW5hYmxlX2Mya19lY2VsbDsKKyNlbmRpZgorI2lmIGRlZmluZWQoX19SRVBPUlRfQVZBSUxBQkxFX1BMTU5fXykKKyAgICBrYWxfdWludDggbnVtYmVyX29mX2F2YWlsYWJsZV9wbG1uX2lkOworICAgIGthbF91aW50OCBhdmFpbGFibGVfcGxtbl9pZFtNQVhfUExNTl9MSVNUX0xFTl1bTUFYX1BMTU5fTlVNRVJJQ19OQU1FX0xFTl07CisjZW5kaWYKKworICAgIGthbF9ib29sICBkYXRhX2VuYWJsZWRfc2V0dGluZzsgLy8gc2V0IHRvIDEgaWYgZGF0YSBpcyBlbmFibGVkIGluIEFQCisgICAga2FsX2Jvb2wgIGRhdGFfcm9hbWluZ19zZXR0aW5nOyAvLyBzZXQgdG8gMSBpZiBkYXRhIHJvYW1pbmcgaXMgZW5hYmxlZCBpbiBBUAorICAgIC8qIGNvbnRleHQgdXNlZCBmb3IgK0VDU1JBICovCisgICAgcm1taV9lY3NyYV9zZXR0aW5nX3N0cnVjdCBsYXN0X2Vjc3JhOworCisgICAgLyogY29udGV4dCB1c2VkIGZvciArQ1NDT04gKi8KKwlybW1pX2NzY29uX21vZGVfZW51bSBjc2Nvbl9tb2RlWzRdOworCXJtbWlfY3Njb25fc3RhdGVfZW51bSBjc2Nvbl9zdGF0ZVs0XTsKKwlybW1pX2NzY29uX2FjY2Vzc19lbnVtIGNzY29uX2FjY2Vzc1s0XTsKKwlybW1pX2NzY29uX2NvcmVfbmV0d29ya19lbnVtIGNzY29uX2NvcmVfbmV0d29ya1s0XTsgLy8gb25seSB1c2UgYXJyYXkgZWxlbWVudCAyIGFuZCAzIGZvciBMVEUgYW5kIE5SCisJa2FsX3VpbnQ4IGNzY29uX2xhdGVzdF9yYXRfaW5kZXg7CisKKworI2lmZGVmIF9fSElGX0NDSVNNX1NDUF9TVVBQT1JUX18KKyAgICBrYWxfdWludDMyIHNjcF9wcmV2X2NlbGxfaWQ7CisgICAga2FsX3VpbnQxNiBzY3BfcHJldl9jZWxsX3Jzc2k7CisjZW5kaWYKKyAgICBzaWduYWxfbW9kdWxhdGlvbl9lbnVtIG1vZHVsYXRpb247CisgICAgcm1taV9jYW1wZWRfY2VsbF9pZF9zdHJ1Y3QgY2FtcGVkX2NlbGxfaWRfaW5mbzsgIC8vZm9yICtFQ01QQ0lECisKKyAgICAvKiBjb250ZXh0IGZvciArRVVFRFJYICovCisgICAga2FsX3VpbnQxNiBkcnhfdmFsdWU7CisKKyAgICAvKiBjb250ZXh0IGZvciArRUMyS0NFTEwgKi8KKyAgICBpcmF0X3BzX3R5cGVfZW51bSBhY2Nlc3NfdHlwZTsKKyAgICBrYWxfdWludDE2IHNpZDsKKyAgICBrYWxfdWludDE2IG5pZDsKKyAgICBrYWxfdWludDggcHppZDsKKyAgICBrYWxfdWludDE2IGJhc2VfaWQ7CisgICAga2FsX3VpbnQzMiBzZWN0b3JfaWRbNF07CisgICAga2FsX3VpbnQ4IHN1Ym5ldF9sZW5ndGg7CisgICAga2FsX3VpbnQ4IGNhcnJpZXJfaWRbN107CisjaWZkZWYgX19DU0dfU1VQUE9SVF9fCisgICAga2FsX3VpbnQ4IGhuYl9uYW1lW01BWF9ITkJfTkFNRV9MRU4qMisxXTsKKyAgICBrYWxfdWludDggaG5iX25hbWVfbGVuZ3RoOworI2VuZGlmCisjaWZkZWYgX19UQzAxX18KKwlrYWxfdWludDggcnNzaV9pbmRfc3JjX2lkOworI2VuZGlmCisKKyAgICAvKiBjb250ZXh0IGZvciArRVJBVCAqLworICAgIGthbF91aW50OCBlcmF0X2xvY2s7CisgICAga2FsX3VpbnQ4IGlzX25vX3NhdmVkOyAvLyB3aGlsZSBpdCBpcyB0dXJlLCB0aGUgcmF0IG1vZGUgd2lsbCBubyBiZSBzYXZlZCB0byBOVlJBTS4KKworICAgIGthbF9ib29sIGlzX3NzYWNfYmFycmluZ19mb3Jfdm9pY2U7CisgICAga2FsX3VpbnQ4IGV2endhcGZjaWFfbW9kZTsKKyNpZiBkZWZpbmVkKF9fR0VNSU5JX18pIHx8IGRlZmluZWQoX19MNENfR1BSU19VVF9fKQorICAgIGthbF91aW50OCBlZGFsbG93X21vZGU7CisjZW5kaWYKKyAgICBrYWxfdWludDggaXNfdm9wc19zdXBwb3J0ZWQ7ICAvLyBpbml0IHZhbHVlIHNob3VsZCBiZSAweGZmCisKKyAgICBwbG1uX2lkX3JhdF9zdHJ1Y3Qgc2F2ZWRfcGxtbl9mb3Jfdm9sdGVfaHlzOworCisgICAga2FsX2Jvb2wgaXNfcmVnaXN0ZXJlZF9vbl9lSFJQRDsKKyAgICByYXRfZW51bSBlaW1zcHNfcmF0OworICAgIGthbF91aW50OCBlaW1zcHNfdHlwZTsKKyAgICBybW1pX2VpbmRfaW52YWxpZF9zaW1faW5mb19zdHJ1Y3QgZWluZF9pbnZhbGlkX3NpbV9pbmZvOworCisgICAgcm1taV9ldHdtb2RlX3NldHRpbmdfc3RydWN0IGV0d21vZGVfc2V0dGluZzsKKworICAgIGthbF91aW50OCBlbndiZGluZm9fbW9kZTsKKyAgICBrYWxfdWludDE2IGx0ZV9iYW5kd2lkdGhJbmZvOworCisgICAga2FsX3VpbnQ4IHNjZWxsX251bWJlcl9kbDsKKyAgICAvKiBjb250ZXh0IHVzZWQgZm9yICtFQVBDICovCisgICAga2FsX3VpbnQ4IGN1cnJlbnRfYXBjX2ZlYXR1cmVfdHlwZTsKKyAgICBrYWxfYm9vbCBjdXJyZW50X3JlcG9ydF9tb2RlOworICAgIGthbF91aW50MTYgIGN1cnJlbnRfcmVwb3J0X3BlcmlvZDsKKyAgICBrYWxfdWludDggbmV3X2FwY19mZWF0dXJlX3R5cGU7CisgICAga2FsX2Jvb2wgbmV3X3JlcG9ydF9tb2RlOworICAgIGthbF91aW50MTYgIG5ld19yZXBvcnRfcGVyaW9kOworICAgIGthbF91aW50OCBzY2VsbF9udW1iZXJfdWw7CisgICAga2FsX3VpbnQ4IHBzX2Nvbm5fc3RhdHVzOworICAgIGthbF91aW50MTYgcGNlbGxfYmFuZDsgLy8gZm9yICtFUENFTExJTkZPCisKKyAgICBncHJzX3RyYWZmaWNfY2hhbm5lbF9zdGF0dXNfZW51bSBncHJzX3RyYWZmaWNfY2hhbm5lbF9zdGF0dXM7CisKKyNpZmRlZiBfX0lNU19TVVBQT1JUX18KKwlybW1pX2ltc19lbWVyZ2VuY3lfc3VwcG9ydF9zdHJ1Y3QgZWltc2Vzc19pbmZvOworI2VuZGlmCisKKyAgICBybW1pX2NhX2luZm9fc3RydWN0IGVjYWluZm87IC8vIGZvciArRUNBSU5GTyBVUkMKKyAgICBrYWxfdWludDggY3RtY2FsbF9tb2RlOworCisgICAga2FsX2Jvb2wgZW5hYmxlX2VjZWxsX2V4dDNfZXh0NDsKKyAgICBrYWxfYm9vbCBlbmFibGVfZWNlbGxfc3NiaWRfaW5mbzsKKworICAgIGthbF91aW50OCBlbXJvX2x0ZV9nYW1lX2hvOworCisgICAga2FsX3VpbnQ4IGlzX2RzZGFfYWxsb3dlZDsKKworICAgIGthbF91aW50OCBjaXJlcGlfaW5kOworICAgIGthbF91aW50OCBjbmVtczFfaW5kOworICAgIGthbF91aW50OCBjbmVtaXVfaW5kOworI2lmZGVmIF9fUkZfU0NBTl9GT1JfREVTRU5TRV9URVNUX18KKyAgICBybW1pX3Jmc2Nhbl9yZXFfc3RydWN0IHJmc2Nhbl9yZXE7IC8vIGZvciArRVJGU0NBTiBSU1NJIFVSQworI2VuZGlmIC8qX19SRl9TQ0FOX0ZPUl9ERVNFTlNFX1RFU1RfXyovCisKKyAgICBrYWxfaW50MTYgc2FyX3NjZW5hcmlvX2luZGV4OworICAgIGthbF9pbnQxNiBkYXRfc2NlbmFyaW9faW5kZXg7CisgICAga2FsX2ludDE2IHNhcl9vcGVyYXRvcl9pbmRleDsKKyNpZmRlZiBfX0VQU0ZCX1NVUFBPUlRfXworCXJtbWlfZXBzZmJfaW5mb19zdHJ1Y3QgZXBzZmJfaW5mbzsKKyNlbmRpZgorI2lmIGRlZmluZWQoX19UQzAxX18pICYmIGRlZmluZWQoX19STU1JX0VYVEVORF9DVVNUT01fQ01EX18pCisJa2FsX3VpbnQ4IGN1c3RfY21kX3NyY19pZDsKKyNlbmRpZgorI2lmZGVmIF9fQVJGQ05fVE9fQ0FNRVJBX1NVUFBPUlRfXworICAgIHJtbWlfY2FtZXJhX2FyZmNuX2luZm9fc3RydWN0IGxhc3RfcmVwb3J0ZWRfYXJmY247CisjZW5kaWYKKworI2lmZGVmIF9fVEMwMV9fCisgICAgcm1taV9yZXBvcnRfcmVnX3RvX2FwX3N0cnVjdCByZXBvcnRfcmVnX3N0YXRlOworICAgIGthbF91aW50OCBsdGVjYWxsX2ZsYWc7IC8qIGF0JWx0ZWNhbGwgKi8KKyNlbmRpZgorCisjaWZkZWYgX19UQzAxX0NBTElCUkFUSU9OX18KKyAgICAvKiBNVVNFIC0gQUxQUzAxNTM5MTcwICovCisgICAgLyogQ2hlY2sgdGhlIGZsYWcgZm9yIGNhbGlicmF0aW9uIHZlcmlmaWNhdGlvbiB0byBwcmV2ZW50ICovCisgICAgLyogZnJlcXVlbnQgYWNjZXNzIHRvIE5WUkFNIHdoZW4gdGhlIHVzZXIgaW5wdXQgQVQlQ0FMRFQgICovCisgICAga2FsX3VpbnQ4IGNhbGR0X2NoZWNrOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fVEMwMV9fKSAmJiBkZWZpbmVkKF9fU0lNX0hPVF9TV0FQX1NVUFBPUlRfXykKKyAgICBrYWxfYm9vbCBzaW1fcmVwbGFjZWQ7IC8vIHRvIGluZGljYXRlIFNJTSBpcyByZXBsYWNlZCBmb3IgaG90IHN3YXAKKyAgICBrYWxfYm9vbCBzaW1fcGx1Z291dDsKKyAgICBrYWxfYm9vbCBzaW1fZmlyc3RfaW5zZXJ0ZWQ7CisgICAga2FsX2Jvb2wgc2ltX21hcHBpbmdfaGFwcGVuZWQ7CisjZW5kaWYKKworI2lmZGVmIF9fVEMwMV9fIC8qIGZvciArRVNJTUNFUCAqLworICAgIGthbF91aW50OCBtbmNfbGVuZ3RoOworICAgIGthbF9ib29sIGlzX3ZhbGlkX2dpZDE7CisgICAga2FsX3VpbnQ4IG51bWJlcl9vZl9naWQxOworICAgIGthbF91aW50OCBnaWQxWzIwXTsKKyAgICBrYWxfYm9vbCBpc192YWxpZF9naWQyOworICAgIGthbF91aW50OCBudW1iZXJfb2ZfZ2lkMjsKKyAgICBrYWxfdWludDggZ2lkMlsyMF07CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19UQzAxX18pCisgICAgLypBTFBTMDM3NDY3NjUgJiBBTFBTMDM3NDMxMTYqLworICAgIGthbF91aW50OCBzaW1fc3RhdHVzX2luZDsKKyNlbmRpZgorCisjaWZkZWYgX19UQzAxX18KKyAgICBybW1pX21pcGlfaHdfaW5mb19pbmRfc3RydWN0IG1pcGlfcmVzdWx0OworI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fVlNJTV9fKSAmJiBkZWZpbmVkKF9fVEMwMV9fKSAmJiBkZWZpbmVkKF9fRkVBVFVSRV9UQzAxX1NJTU9GRl9FWFRFTlRJT05fXykgJiYgZGVmaW5lZChfX01EVlNJTV9fKQorICAgIGthbF91aW50OCBzd2l0Y2hfb247CisjZW5kaWYvKiNpZiBkZWZpbmVkKF9fVlNJTV9fKSAmJiBkZWZpbmVkKF9fVEMwMV9fKSAmJiBkZWZpbmVkKF9fRkVBVFVSRV9UQzAxX1NJTU9GRl9FWFRFTlRJT05fXykgJiYgZGVmaW5lZChfX01EVlNJTV9fKSovCisKKyNpZmRlZiBfX1NBUl9TRU5TT1JfVFhfREVURUNUSU9OX1NVUFBPUlRfXworICAgIC8qIFRYIFBvd2VyIFJlZHVjdGlvbiovCisgICAga2FsX3VpbnQ4IHNhcl90eF9wb3dlcl9yZWRfZXZlbnQ7CisgICAga2FsX2ludDE2IHNhcl9zY2VuYXJpbzsKKyNlbmRpZiAvKiBfX1NBUl9TRU5TT1JfVFhfREVURUNUSU9OX1NVUFBPUlRfXyAqLworCWthbF91aW50OCBjaGFubmVsX2xvY2tfbW9kZTsKKworICAgIHJtbWlfbndfcmVqX2NhdXNlX2F0dGVtcF9jb3VudGVyX3N0cnVjdCBud19yZWpfY2F1c2VfYXR0ZW1wX2NvdW50ZXI7CisKKyAgICAvKiBuZXR3b3JrIHB5aHNpY2FsIGNvbmZpZ3VyYXRpb24gaW5mbyovCisgICAga2FsX2Jvb2wgZGwyNTZxYW1fY29uZmlndXJlZDsKKyAgICBrYWxfYm9vbCBtaW1vX2ZvdXJsYXllcl9jb25maWd1cmVkOworCisgICAga2FsX3VpbnQ4ICplY3Bid19zdHJpbmdfcHRyOworICAgIGthbF91aW50MTYgZWNwYndfc3RyaW5nX2luZGV4OworCisgICAga2FsX3VpbnQ4IGNzZ19saXN0X21vZGU7CisKKwlrYWxfdWludDMyIHJtbWlfY3VycmVudF9vcGVyYXRvcjsKKworICAgIGthbF9ib29sIHN0YW5kYXJkX2NzY29uX3N1cHBvcnQ7CisKKyAgICBrYWxfdWludDggaXNfYWNiX3NraXBfZm9yX21tdGVsX3ZvaWNlOworICAgIGthbF9ib29sIGlzX2FjYl9za2lwX2Zvcl9tbXRlbF92aWRlbzsKKworfSBybW1pX2NvbnRleHRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCBybW1pX3N0cmluZ19zdHJ1Y3QKK3sKKyAgICBrYWxfdWludDE2IGluZGV4OworICAgIGthbF91aW50OCAqc3RyaW5nX3B0cjsKKyAgICBrYWxfdWludDggKmlwX3N0cmluZzsKKyAgICBsNGNfc291cmNlX2lkX2VudW0gc3JjX2lkOyAgLy8gREVSRUsKKyAgICBrYWxfdWludDggY21kX21vZGU7CisgICAga2FsX3VpbnQ4IGNtZF9jbGFzczsKKyAgICBrYWxfdWludDE2IGNtZF9pbmRleDsgICAgICAgLy9ybW1pX2V4dGVuZGVkX2NtZF9pZF9lbnVtCisgICAga2FsX3VpbnQxNiBjbWRfcm93X2luZGV4OworICAgIHJtbWlfZXh0ZW5kX3N5bWJvbF9oYXNoX2VudW0gc3ltYm9sX2hhc2g7Cit9IHJtbWlfc3RyaW5nX3N0cnVjdDsKKworI2lmZGVmIF9fU0FUX18KKwordHlwZWRlZiBlbnVtCit7CisgICAgUk1NSV9USU1fTU9EX05PTkUsCisgICAgUk1NSV9USU1fTU9EX1NBVF9EU1BMX1RFWFQsCisgICAgUk1NSV9USU1fTU9EX1NBVF9QTEFZX1RPTkUsCisgICAgUk1NSV9USU1fTU9EX1NBVF9SRURJQUwsCisgICAgUk1NSV9USU1fTU9EX1NBVF9OT1RJQ0UsCisgICAgUk1NSV9USU1fTU9EX1NBVF9NTUlfSU5GTywKKyAgICBSTU1JX05VTV9PRl9USU1FUl9NT0QKK30KK3JtbWlfdGltZXJfbW9kX2VudW07CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgZXZlbnRpZCB0aW1lcl9pZDsKKyAgICBrYWxfdWludDggdGltZTsKKyAgICBrYWxfYm9vbCB0aW1lcl9vbjsKK30gcm1taV9zYXRfdGltZXJfc3RydWN0OworCisvKiBTQVQgKi8KKyNkZWZpbmUgU0FUX1NJR19TRVRVUF9NRU5VX1NIT1cgICAgICAgICAgNzAKKyNkZWZpbmUgU0FUX1NJR19TRUxFQ1RfSVRFTV9TSE9XICAgICAgICAgIDcxCisjZGVmaW5lIFNBVF9TSUdfRFNQTF9UWFRfU0hPVyAgICAgICAgICAgICA3MgorI2RlZmluZSBTQVRfU0lHX0dFVF9JTktFWV9TSE9XICAgICAgICAgICAgNzMKKyNkZWZpbmUgU0FUX1NJR19HRVRfSU5QVVRfU0hPVyAgICAgICAgICAgIDc0CisjZGVmaW5lIFNBVF9TSUdfUExBWV9UT05FX1NIT1cgICAgICAgICAgICA3NQorI2RlZmluZSBTQVRfU0lHX1NFVFVQX0NBTExfU0hPVyAgICAgICAgICAgNzYKKy8vI2RlZmluZSBTQVRfU0lHX1NFVFVQX0NBTExfUkVRX1NIT1cgICAgICA3NworLy8jZGVmaW5lIFNBVF9TSUdfU0VUVVBfQ0FMTF9SRVNfU0hPVyAgICAgIDc4CisvLyNkZWZpbmUgU0FUX1NJR19SRURJQUxfU0hPVyAgICAgICAgICAgICAgICA3OQorI2RlZmluZSBTQVRfU0lHX1NFTkRfU01TX1NIT1cgICAgICAgICAgICA4MAorI2RlZmluZSBTQVRfU0lHX1NFTkRfU1NfU0hPVyAgICAgICAgICAgICAgODEKKyNkZWZpbmUgU0FUX1NJR19TRU5EX1VTU0RfU0hPVyAgICAgICAgICAgODIKKyNkZWZpbmUgU0FUX1NJR19NTUlfSU5GT19TSE9XICAgICAgICAgICAgIDgzCisvLyNkZWZpbmUgU0FUX1NJR19OT1RJQ0VfU0hPVyAgICAgICAgICAgICAgICA4NQorCisjZGVmaW5lIFJNTUlfU0FUX1NJR19TRVRVUF9DQUxMX1JFUSAgICAgICAgICAxNgorI2RlZmluZSBSTU1JX1NBVF9TSUdfU0VORF9TU19SRVEgICAgICAgICAgICAgMTcKKyNkZWZpbmUgUk1NSV9TQVRfU0lHX1NFTkRfVVNTRF9SRVEgICAgICAgICAgIDE4CisjZGVmaW5lIFJNTUlfU0FUX1NJR19TRU5EX1NNU19SRVEgICAgICAgICAgICAxOQorI2RlZmluZSBSTU1JX1NBVF9TSUdfUExBWV9UT05FX1JFUyAgICAgICAgICAgMzIKKyNkZWZpbmUgUk1NSV9TQVRfU0lHX0RTUExfVEVYVF9SRVMgICAgICAgICAgIDMzCisjZGVmaW5lIFJNTUlfU0FUX1NJR19HRVRfSU5LRVlfUkVTICAgICAgICAgICAzNAorI2RlZmluZSBSTU1JX1NBVF9TSUdfR0VUX0lOUFVUX1JFUyAgICAgICAgICAgMzUKKyNkZWZpbmUgUk1NSV9TQVRfU0lHX1NFTEVDVF9JVEVNX1JFUyAgICAgICAgIDM2CisjZGVmaW5lIFJNTUlfU0FUX1NJR19NRU5VX1NFTEVDVF9SRVEgICAgICAgICAzNworI2RlZmluZSBSTU1JX1NBVF9TSUdfU1RBUlRfU0FUICAgICAgICAgICAgICAgODAKKyNkZWZpbmUgUk1NSV9TQVRfU0lHX1NFVFVQX0NBTExfUkVESUFMICAgICAgIDg4CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4IGl0ZW1fbGVuOworICAgIGthbF91aW50OCBpdGVtX2RjczsKKyAgICBrYWxfdWludDggaXRlbV9pZDsKKyAgICBrYWxfdWludDggKml0ZW1fZGF0YTsKK30KK3JtbWlfc2F0X21lbnVfaXRlbV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4IGlzX2hlbHBfaW5mb19hdmFpbGFibGU7CisgICAga2FsX3VpbnQ4IGNtZF9kZXRhaWxbNV07CisgICAga2FsX3VpbnQ4IGFscGhhX2lkX2xlbjsKKyAgICBrYWxfdWludDggKmFscGhhX2lkOworICAgIGthbF91aW50OCBkY3Nfb2ZfYWxwaGFfaWQ7CisgICAga2FsX3VpbnQ4IG51bV9vZl9pdGVtOworICAgIHJtbWlfc2F0X21lbnVfaXRlbV9zdHJ1Y3QgKm1lbnVfaXRlbXM7Cit9CitybW1pX3NhdF9tYWluX21lbnVfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCBjbWRfZGV0YWlsWzVdOworICAgIGthbF91aW50OCBpc19oZWxwX2luZm9fYXZhaWxhYmxlOworICAgIGthbF91aW50OCBpc19pdGVtX2lkX2F2YWlsYWJsZTsKKyAgICBrYWxfdWludDggaXRlbV9pZDsKKyAgICBrYWxfdWludDggYWxwaGFfaWRfbGVuOworICAgIGthbF91aW50OCAqYWxwaGFfaWQ7CisgICAga2FsX3VpbnQ4IGRjc19vZl9hbHBoYV9pZDsKKyAgICBrYWxfdWludDggbnVtX29mX2l0ZW07CisgICAgcm1taV9zYXRfbWVudV9pdGVtX3N0cnVjdCAqbWVudV9pdGVtczsKK30KK3JtbWlfc2F0X3N1Yl9tZW51X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggY21kX2RldGFpbFs1XTsKKyAgICBrYWxfdWludDggcHJpb3JpdHk7CisgICAga2FsX3VpbnQ4IGNsZWFyX3RleHRfdHlwZTsKKyAgICBrYWxfdWludDggaW1tZWRpYXRlX3JlczsKKyAgICBrYWxfdWludDE2IG5vX3RleHRfc3RyaW5nOworICAgIGthbF91aW50OCAqdGV4dF9zdHJpbmc7CisgICAga2FsX3VpbnQ4IGRjc19vZl90ZXh0X3N0cmluZzsKK30KK3JtbWlfc2F0X2RzcGxfdGV4dF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4IGNtZF9kZXRhaWxbNV07CisgICAga2FsX3VpbnQ4IGlzX2hlbHBfaW5mb19hdmFpbGFibGU7CisgICAga2FsX3VpbnQ4IHR5cGVfb2ZfaW5wdXQ7CisgICAga2FsX3VpbnQxNiBub190ZXh0X3N0cmluZzsKKyAgICBrYWxfdWludDggKnRleHRfc3RyaW5nOworICAgIGthbF91aW50OCBkY3Nfb2ZfdGV4dF9zdHJpbmc7Cit9CitybW1pX3NhdF9nZXRfaW5rZXlfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCBjbWRfZGV0YWlsWzVdOworICAgIGthbF91aW50OCBpc19oZWxwX2luZm9fYXZhaWxhYmxlOworICAgIGthbF91aW50OCB0eXBlX29mX2lucHV0OworICAgIGthbF91aW50OCBpc19pbnB1dF9yZXZlYWxlZF90b191c2VyOworICAgIGthbF91aW50OCBsZW5fb2ZfbWluX2lucHV0OworICAgIGthbF91aW50OCBsZW5fb2ZfbWF4X2lucHV0OworCisgICAga2FsX3VpbnQxNiBub190ZXh0X3N0cmluZzsKKyAgICBrYWxfdWludDggKnRleHRfc3RyaW5nOworICAgIGthbF91aW50OCBkY3Nfb2ZfdGV4dF9zdHJpbmc7CisgICAga2FsX3VpbnQxNiBub19kZWZhdWx0X3RleHQ7CisgICAga2FsX3VpbnQ4ICpkZWZhdWx0X3RleHQ7CisgICAga2FsX3VpbnQ4IGRjc19vZl9kZWZhdWx0X3RleHQ7Cit9CitybW1pX3NhdF9nZXRfaW5wdXRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCBjbWRfZGV0YWlsWzVdOworICAgIGthbF91aW50OCB0b25lX2lkOworICAgIGthbF91aW50MzIgZHVyYXRpb247CisgICAga2FsX3VpbnQ4IG5vX2FscGhhX2lkOworICAgIGthbF91aW50OCAqYWxwaGFfaWQ7CisgICAga2FsX3VpbnQ4IGRjc19vZl9hbHBoYV9pZDsKKworfQorcm1taV9zYXRfcGxheV90b25lX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggY21kX2RldGFpbFs1XTsKKyAgICBrYWxfdWludDggbW1pX2luZm9fdHlwZTsKKyAgICBrYWxfdWludDggbm9fYWxwaGFfaWQ7CisgICAga2FsX3VpbnQ4ICphbHBoYV9pZDsKKyAgICBrYWxfdWludDggZGNzX29mX2FscGhhX2lkOworfQorcm1taV9zYXRfbW1pX2luZm9fc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCBjbWRfZGV0YWlsWzVdOworICAgIGthbF91aW50OCBjb25kaXRpb247CisgICAga2FsX3VpbnQzMiBkdXJhdGlvbjsKKworICAgIGthbF91aW50OCBub19hbHBoYV9pZDE7CisgICAga2FsX3VpbnQ4ICphbHBoYV9pZDE7CisgICAga2FsX3VpbnQ4IGRjc19vZl9hbHBoYV9pZDE7CisgICAga2FsX3VpbnQ4IG5vX2FscGhhX2lkMjsKKyAgICBrYWxfdWludDggKmFscGhhX2lkMjsKKyAgICBrYWxfdWludDggZGNzX29mX2FscGhhX2lkMjsKKworICAgIGthbF91aW50OCBzaXplX29mX2NjcDsKKyAgICBrYWxfdWludDggY2NwW01BWF9TQVRfU0laRV9PRl9DQ1BdOworICAgIGthbF91aW50OCBzaXplX29mX3N1YmFkZHI7CisgICAga2FsX3VpbnQ4IHN1YmFkZHJbTUFYX1NJTV9TVUJfQUREUl9CQ0RfTEVOXTsKKworICAgIGthbF91aW50OCBub19hZGRyOworICAgIGthbF91aW50OCAqYWRkcjsKK30KK3JtbWlfc2F0X3NldHVwX2NhbGxfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCBjbWRfZGV0YWlsWzVdOworICAgIGthbF91aW50OCBpc19zbXNfcGFja2VkX3JlcXVpcmVkOworICAgIGthbF91aW50OCBzaXplX29mX2FkZHI7CisgICAga2FsX3VpbnQ4IGFkZHJbTUFYX1NJTV9BRERSX0xFTl07CQkvL210azAyNTE0XzA4MTIxNgorICAgIGthbF91aW50OCBub19hbHBoYV9pZDsKKyAgICBrYWxfdWludDggKmFscGhhX2lkOworICAgIGthbF91aW50OCBkY3Nfb2ZfYWxwaGFfaWQ7CisgICAga2FsX3VpbnQ4IG5vX3Ntc190cGR1OworICAgIGthbF91aW50OCAqc21zX3RwZHU7Cit9CitybW1pX3NhdF9zZW5kX3Ntc19zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4IGNtZF9kZXRhaWxbNV07CisgICAga2FsX3VpbnQ4IG5vX2FscGhhX2lkOworICAgIGthbF91aW50OCAqYWxwaGFfaWQ7CisgICAga2FsX3VpbnQ4IGRjc19vZl9hbHBoYV9pZDsKKyAgICBrYWxfdWludDggbm9fc3Nfc3RyaW5nOworICAgIGthbF91aW50OCAqc3Nfc3RyaW5nOworfQorcm1taV9zYXRfc2VuZF9zc19zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4IGNtZF9kZXRhaWxbNV07CisgICAga2FsX3VpbnQ4IG5vX2FscGhhX2lkOworICAgIGthbF91aW50OCAqYWxwaGFfaWQ7CisgICAga2FsX3VpbnQ4IGRjc19vZl9hbHBoYV9pZDsKKyAgICBrYWxfdWludDggbm9fdXNzZF9zdHJpbmc7CisgICAga2FsX3VpbnQ4ICp1c3NkX3N0cmluZzsKKyAgICBrYWxfdWludDggZGNzX29mX3Vzc2Rfc3RyaW5nOworfQorcm1taV9zYXRfc2VuZF91c3NkX3N0cnVjdDsKKworLyogVFlQRVMgKi8KKwordHlwZWRlZiBlbnVtCit7CisgICAgUk1NSV9WVFNfU1BFRUNIX0lOID0gMCwKKyAgICBSTU1JX1ZUU19TUEVFQ0hfT1VUID0gMSwKKyAgICBSTU1JX1ZUU19LRVlfQkVFUCA9IDIsCisgICAgUk1NSV9WVFNfRFRNRl9UT05FID0gMywKKyAgICBSTU1JX1ZUU19SSU5HRVIgPSA0LAorICAgIFJNTUlfVlRTX01FRElBID0gNSwKKyAgICBSTU1JX05VTV9PRl9WVFNfVFlQRQorfQorcm1taV92dHNfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBSTU1JX1ZUU19QTEFZX0NSRVNDRU5ETyA9IDAsICAgIC8qIFBsYXkgc291bmQgZm9yIGNyZXNjZW5kby4gKi8KKyAgICBSTU1JX1ZUU19QTEFZX0lORklOSVRFID0gMSwgICAgIC8qIFBsYXkgc291bmQgZm9yIGluZmluaXRlLiAqLworICAgIFJNTUlfVlRTX1BMQVlfT05DRSA9IDIsICAgICAgICAgLyogUGxheSBzb3VuZCBmb3Igb25jZS4gKi8KKyAgICBSTU1JX1ZUU19QTEFZX0RFU0NFTkRPID0gMywgICAgIC8qIFBsYXkgc291bmQgZm9yIGRlc2NlbmRvLiAqLworICAgIFJNTUlfVlRTX1BMQVlfT0ZGID0gNCwgICAgICAgICAgLyogc3RvcCBzb3VuZCAqLworICAgIFJNTUlfTlVNX09GX1ZUU19QTEFZX01PREUKK30KK3JtbWlfdnRzX3BsYXlfbW9kZV9lbnVtOworCisjZW5kaWYgLyogX19TQVRfXyAqLworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCBlcnJfc3RyaW5nW1JNTUlfTUFYX0VSUl9TVFJfTEVOXTsKK30gcm1taV9lcnJvcl9tc2dfc3RydWN0OworCisvL1JNTUlfVVQgLS0tCisjZGVmaW5lIEFUQ0lfTUFYX1VUX0lPX0xFTkdUSCAxMDI0CisjZGVmaW5lIEFUQ0lfTUFYX1VUX0NNRF9TVFJJTkdfTEVOR1RIIDEwMAorI2RlZmluZSBBVENJX01BWF9VVF9BVF9QQVJBTUVURVJfTlVNQkVSIDIwCisjZGVmaW5lIEFUQ0lfTUFYX1VUX0FUX1BBUkFNRVRFUl9TVFJJTkdfTEVOR1RIIDEwMAorCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKwlrYWxfdWludDggcG9ydDsKKyAgICBrYWxfdWludDggc3RyaW5nW0FUQ0lfTUFYX1VUX0lPX0xFTkdUSF07CisJa2FsX2Jvb2wgc3R1ZmY7Cit9IGF0Y2lfdXRfcm1taV9pbnB1dF9zdHJpbmdfc3RydWN0OyAvLyBNU0dfSURfQVRDSV9VVF9STU1JX0lOUFVUX1NUUklORworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNyY19pZDsKKwlrYWxfdWludDggcG9ydDsKKyAgICBrYWxfdWludDggc3RyaW5nW0FUQ0lfTUFYX1VUX0lPX0xFTkdUSF07CisJa2FsX2Jvb2wgc3R1ZmY7Cit9IGF0Y2lfdXRfcm1taV9vdXRwdXRfc3RyaW5nX3N0cnVjdDsgLy8gTVNHX0lEX0FUQ0lfVVRfUk1NSV9PVVRQVVRfU1RSSU5HCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4IHBhcmFfc3RyaW5nW0FUQ0lfTUFYX1VUX0FUX1BBUkFNRVRFUl9TVFJJTkdfTEVOR1RIXTsKK30gYXRjaV91dF9ybW1pX2lucHV0X2V4cGFuZGVkX2F0X3BhcmFtZXRlcl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBwb3J0OworICAgIGthbF91aW50OCBjbWRfc3RyaW5nW0FUQ0lfTUFYX1VUX0NNRF9TVFJJTkdfTEVOR1RIXTsKKyAgICBhdGNpX3V0X3JtbWlfaW5wdXRfZXhwYW5kZWRfYXRfcGFyYW1ldGVyX3N0cnVjdCBwYXJhW0FUQ0lfTUFYX1VUX0FUX1BBUkFNRVRFUl9OVU1CRVJdOworfSBhdGNpX3V0X3JtbWlfaW5wdXRfZXhwYW5kZWRfYXRfc3RyaW5nX3N0cnVjdDsgLy9NU0dfSURfQVRDSV9VVF9STU1JX0lOUFVUX0VYUEFOREVEX0FUX1NUUklORworCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggc3JjX2lkOworICAgIGthbF91aW50OCBjaWQ7CisgICAgbDRjX2FjdGlvbl9lbnVtIGFjdGlvbjsKK30gYXRjaV91dF9jaGVja19sNGNfY29udGV4dF9pbmZvX3N0cnVjdDsgLy8gTVNHX0lEX0FUQ0lfVVRfQ0hFQ0tfTDRDX0NPTlRFWFRfSU5GTworCisKKy8vLS0tIFJNTUlfVVQKKwordHlwZWRlZiB2b2lkICgqUk1NSV9FWFRfQ01EX0ZVTkNUSU9OKSAocm1taV9zdHJpbmdfc3RydWN0ICpzb3VyY2Vfc3RyaW5nX3B0cik7CisKK3R5cGVkZWYga2FsX2Jvb2woKlJNTUlfQkFTSUNfQ01EX0ZVTkNUSU9OKQorICAgIChybW1pX3N0cmluZ19zdHJ1Y3QgKnNvdXJjZV9zdHJpbmdfcHRyLCBybW1pX211bHRpcGxlX2Jhc2ljX2NtZF9zdHJ1Y3QgKmhlYWRfbm9kZV9wdHIsIHJtbWlfZXJyX2lkX2VudW0gKmVycl9pZCk7CisKK3R5cGVkZWYgdm9pZCAoKlJNTUlfSU5EX0ZVTkNUSU9OKSAoKTsKKworCitleHRlcm4gcm1taV9jb250ZXh0X3N0cnVjdCAqcm1taV9wdHJfZzsKK2V4dGVybiBybW1pX2NvbW1vbl9jb250ZXh0X3N0cnVjdCAqcm1taV9jb21tb25fcHRyX2c7CitleHRlcm4gbW9kdWxlX3R5cGUgcm1taV9jdXJyZW50X21vZF9pZDsKK2V4dGVybglybW1pX2NvbnRleHRfc3RydWN0IHJtbWlfY250eHRfZ1tSTU1JX01BWF9TSU1fTlVNXTsKKyNpZiBkZWZpbmVkKF9fQVRDTURfT05PRkZfQ0hFQ0tfXykKK2V4dGVybiBrYWxfYm9vbCBybW1pX2NoZWNrX2F0X2VuYWJsZTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0RVQUxfVEFMS19NT0RFTV9TVVBQT1JUX18pCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCBzcGVlY2hfbW9kZTsKKyAgICBrYWxfdWludDggcmF0X21vZGU7Cit9IHJtbWlfc3BjX2VzcGVlY2hfcGFyYW1fc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCBzaWRldG9uZTsKK30gcm1taV9zcGNfZXNzdHZfcGFyYW1fc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCB0b25lX2lkOworfSBybW1pX3NwY19lZHRwX3BhcmFtX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggZXNldGRldl9tb2RlOworICAgIGthbF91aW50OCBzcmNfZGV2OworfSBybW1pX3NwY19lc2V0ZGV2X3BhcmFtX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggdm9sdW1lOworICAgIGthbF91aW50OCBnYWluX2lkOworfSBybW1pX3NwY19lc292X3BhcmFtX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggbWljX3ZvbHVtZTsKK30gcm1taV9zcGNfZXNtdl9wYXJhbV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4IG1vZGU7Cit9IHJtbWlfc3BjX2Vzc21hX3BhcmFtX3N0cnVjdDsKKwordHlwZWRlZiB1bmlvbgoreworICAgIHJtbWlfc3BjX2VzcGVlY2hfcGFyYW1fc3RydWN0ICplc3BlZWNoX3BhcmFtOworICAgIHJtbWlfc3BjX2Vzc3R2X3BhcmFtX3N0cnVjdCAqZXNzdHZfcGFyYW07CisgICAgcm1taV9zcGNfZWR0cF9wYXJhbV9zdHJ1Y3QgKmVkdHBfcGFyYW07CisgICAgcm1taV9zcGNfZXNldGRldl9wYXJhbV9zdHJ1Y3QgKmVzZXRkZXZfcGFyYW07CisgICAgcm1taV9zcGNfZXNvdl9wYXJhbV9zdHJ1Y3QgKmVzb3ZfcGFyYW07CisgICAgcm1taV9zcGNfZXNtdl9wYXJhbV9zdHJ1Y3QgKmVzbXZfcGFyYW07CisgICAgcm1taV9zcGNfZXNzbWFfcGFyYW1fc3RydWN0ICplc3NtYV9wYXJhbTsKK30gcm1taV9zcGNfcGFyYW1fdW5pb247CisjZW5kaWYgLyogX19EVUFMX1RBTEtfTU9ERU1fU1VQUE9SVF9fICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4KiBzZW5zb3JfbmFtZTsKKyAgICBrYWxfdWludDgqIHNlbnNvcl9kYXRhOworfSBybW1pX3R0eV9wb3J0X3JlYWRfZGF0YV9zdHJ1Y3Q7CisKKyNlbmRpZiAvKiBfUk1NSV9DT05URVhUX0ggKi8KKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2Mvc2RtX3Ntc19zdHJ1Y3QuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3NkbV9zbXNfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5MWE3MwotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3NkbV9zbXNfc3RydWN0LmgKQEAgLTAsMCArMSw4MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDA1CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIHNkbV9zbXNfc3RydWN0LmgKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICAgICAgICAgICAgIEhJU1RPUlkKKyAqIEJlbG93IHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogcmVtb3ZlZCEKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVXBwZXIgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworCisjaWZuZGVmIF9TRE1fU01TX1NUUlVDVF9ICisjZGVmaW5lIF9TRE1fU01TX1NUUlVDVF9ICisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorCisKKy8qIE1TR19JRF9TRE1fU01TX1NUQVRVU19JTkQgKi8KK3R5cGVkZWYgc3RydWN0IAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICBzbXNfYXZhaWxhYmxlOyAgICAKKyAgICBrYWxfdWludDggIHNtc19hbGxvd2VkOworfSBzZG1fc21zX3N0YXR1c19pbmRfc3RydWN0OyAKKworCisKKyNlbmRpZiAvKiBfU0RNX1NNU19TVFJVQ1RfSCAqLworCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3Ntc2FsX2w0Y19lbnVtLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9zbXNhbF9sNGNfZW51bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5Y2VhMWMKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy9zbXNhbF9sNGNfZW51bS5oCkBAIC0wLDAgKzEsNDc1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKglzbXNhbF9sNGNfZW51bS5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1BVUkKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGVudW1lcmF0aW9ucyB3aGljaCByZWxhdGVkIHRvIGludGVyZmFjZSBvZgorICogICBTTVNBTCBhbmQgTDRDLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogCQkJCUhJU1RPUlkKKyAqIEJlbG93IHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhIAorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFVwcGVyIHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhIAorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKgorKiAgVGhpcyBwcm9kdWN0IGhhcyBiZWVuIGRldmVsb3BlZCB1c2luZyBhIHByb3RvY29sIHN0YWNrCisqICBkZXZlbG9wZWQgYnkgU2Fza2VuIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIExpbWl0ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfU01TQUxfTDRDX0VOVU1fSAorI2RlZmluZSBfU01TQUxfTDRDX0VOVU1fSAorCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIgLy9tdGswMjU4OSBNUE0KKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorCisvKiBTSU0gZmlsZSBlbnVtIGFuZCBOVlJBTSBmaWxlIGVudW0gYXJlIHVzZWQgdG9nZXRoZXIgd2l0aCBtYXhpbXVtIGVudW0gc2l6ZSovCit0eXBlZGVmIGthbF91aW50MTYgc21zYWxfZmlsZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIFNNU0FMX05PUk1BTF9JTklULAorICAgU01TQUxfUEFSQU1fSU5JVF9PTkxZLAorICAgU01TQUxfUkVTRVRfSU5JVAorfSBzbXNhbF9pbml0X3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAvKiBmb2xsb3dzIGludGVuZGVkIGZvciBBVCBjb21tYW5kcyBhbmQgTU1JICovCisgICBTTVNBTF9ERUxfSU5ERVhFRF9NU0cgPSAwLCAgICAvKiBkZWxldGUgc3BlY2lmaWVkIG1zZyAqLworICAgU01TQUxfREVMX1JFQURfTVNHLCAgICAgICAgICAgLyogZGVsZXRlIGFsbCByZWFkIG1zZyAqLworICAgU01TQUxfREVMX1JFQURfU0VOVF9NU0csICAgICAgLyogZGVsZXRlIGFsbCByZWFkL3NlbnQgbXNnICovCisgICBTTVNBTF9ERUxfUkVBRF9NT19NU0csICAgICAgICAvKiBkZWxldGUgYWxsIHJlYWQvbW9iaWxlLW9yaWdpbmF0ZWQgbXNnICovCisgICBTTVNBTF9ERUxfQUxMX01TRywgICAgICAgICAgICAvKiBkZWxldGUgYWxsIG1zZyAqLworICAgCisgICAvKiBmb2xsb3dzIGludGVuZGVkIG9ubHkgZm9yIE1NSSAqLworI2lmZGVmIF9fREVMX1JFQURfU01TX0VYVEVOU0lPTl9fCisgICBTTVNBTF9ERUxfTkVXX01TRywKKyAgIFNNU0FMX0RFTF9TRU5UX01TRywKKyAgIFNNU0FMX0RFTF9EUkFGVF9NU0csIAorI2VuZGlmICAKKyAgIFNNU0FMX0RFTF9JTkJPWCwKKyAgIFNNU0FMX0RFTF9PVVRCT1gsCisgICBTTVNBTF9ERUxfQklUTUFQICAgICAgICAgICAgIC8qIGRlbGV0ZSBhY2NvcmRpbmcgYml0bWFwICovCit9IHNtc2FsX2RlbF9mbGFnX2VudW07CisKKy8qCisgKiBtZXNzYWdlIHR5cGUgaWRlbnRpZmllciAKKyAqLwordHlwZWRlZiBlbnVtCit7CisgICBTTVNBTF9NVElfREVMSVZFUiAgICAgICAgICA9IDB4MDAsCisgICBTTVNBTF9NVElfREVMSVZFUl9SRVBPUlQgICA9IDB4MDAsCisgICBTTVNBTF9NVElfU1VCTUlUICAgICAgICAgICA9IDB4MDEsCisgICBTTVNBTF9NVElfU1VCTUlUX1JFUE9SVCAgICA9IDB4MDEsCisgICBTTVNBTF9NVElfU1RBVFVTX1JFUE9SVCAgICA9IDB4MDIsCisgICBTTVNBTF9NVElfQ09NTUFORCAgICAgICAgICA9IDB4MDIsCisgICAKKyAgIFNNU0FMX01USV9VTlNQRUNJRklFRCAgICAgID0gMHgwMywgIC8qIE1NSSBzaGFsbCBoYW5kbGUgdGhpcyBjYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZWcsIGRpc3BsYXlpbmcgImRvZXMgbm90IHN1cHBvcnQiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG9yICJjYW5ub3QgZGlzcGxheSIsIGV0YyAqLworICAgU01TQUxfTVRJX0lMTEVHQUwgICAgICAgICAgPSAweDA0Cit9IHNtc2FsX210aV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIFNNU0FMX1ZQRl9OT1RfUFJFU0VOVCAgICA9IDB4MDAsCisgICBTTVNBTF9WUEZfRU5IQU5DRUQgICAgICAgPSAweDAxLAorICAgU01TQUxfVlBGX1JFTEFUSVZFICAgICAgID0gMHgwMiwKKyAgIFNNU0FMX1ZQRl9BQlNPTFVURSAgICAgICA9IDB4MDMKKworfSBzbXNhbF92cF9mb3JtYXRfZW51bTsKKworCisvKgorICogQ05NSSBkZXN0aW5hdGlvbiBjb2RlCisgKi8KK3R5cGVkZWYgZW51bQoreworICAgU01TQUxfSU5WQUxJRF9ERVNUID0gMCwKKyAgIFNNU0FMX1RPX0xNSSwKKyAgIFNNU0FMX1RPX1JNSQorfSBzbXNhbF9ubWlfZGVzdF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIE5PVF9TSE9XX0hFQURFUiA9IDAsCisgICBTSE9XX0hFQURFUgorfSBzbXNhbF9zaG93X2hlYWRlcl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBTTVNBTF9TTV9GSVJTVCA9IDB4MDAsCisgICAgU01TQUxfTUVfRklSU1QgPSAweDAxCit9IHNtc2FsX3Ntc19wcmVmZXJfb3JkZXJfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBTTVNBTF9QRFVfTU9ERSA9IDAsCisgICBTTVNBTF9URVhUX01PREUsCisgICBOVU1fT0ZfU01TQUxfTVNHX0ZPUk1BVAorfSBzbXNhbF9tc2dfZm9ybWF0X2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgU01TQUxfTU1TX0RJU0FCTEUgPTAsCisgICBTTVNBTF9NTVNfRU5BQkxFX1VOVElMX1RJTUVPVVQsCisgICBTTVNBTF9NTVNfRU5BQkxFCit9IHNtc2FsX21vcmVfbXNnX21vZGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBTTVNBTF9TRVJWSUNFMCA9IDAsCisgICBTTVNBTF9TRVJWSUNFMQorfSBzbXNhbF9zZXJ2aWNlX21vZGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBFWEFDVExZX0lOREVYSU5HLAorICAgTkVYVF9JTkRFWElORworfSBzbXNhbF9yZWFkX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBTTVNBTF9TRU5EX01TRywgICAgICAgICAgICAgICAKKyAgIFNNU0FMX1NFTkRfQ01EICAgICAgICAgICAKK30gc21zYWxfc2VuZF90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgQ05NQV9NT0RFX1RFWFRfTU9ERSwKKyAgIENOTUFfTU9ERV9SUF9BQ0ssCisgICBDTk1BX01PREVfUlBfRVJST1IKK30gc21zYWxfY25tYV9tb2RlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgU01TQUxfTVRTTVNfUEFSQV9NTVMgICAgPSAgIDB4MDAwMSwKKyAgIFNNU0FMX01UU01TX1BBUkFfUlAgICAgID0gICAweDAwMDIsCisgICBTTVNBTF9NVFNNU19QQVJBX1NSSSAgICA9ICAgMHgwMDA0Cit9IHNtc2FsX210X3Ntc19wYXJhX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgLyogSW4gY3VycmVudCBwaGFzZSwgb25seSAiUmVsYXRpdmUiIFZQIGlzIHN1cHBvcnRlZCAqLworICAgCisgICAvKiBSZXBseSBQYXRoIE5PVCByZXF1ZXN0LCBTdGF0dXMgUmVwb3J0IE5PVCByZXF1ZXN0ICovCisgICBTTVNBTF9ERUZBVUxUX0ZPICA9IDB4MTEsICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgIAorICAgLyogUmVwbHkgUGF0aCByZXF1ZXN0LCBTdGF0dXMgUmVwb3J0IE5PVCByZXF1ZXN0ICovICAgICAgICAgICAgICAgICAgICAgCisgICBTTVNBTF9SUF9GTyAgICAgICA9IDB4OTEsICAgCisgICAKKyAgIC8qIFJlcGx5IFBhdGggTk9UIHJlcXVlc3QsIFN0YXR1cyBSZXBvcnQgcmVxdWVzdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgIFNNU0FMX1NSX0ZPICAgICAgID0gMHgzMSwgICAKKyAgIAorICAgLyogUmVwbHkgUGF0aCByZXF1ZXN0LCBTdGF0dXMgUmVwb3J0IHJlcXVlc3QgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgIFNNU0FMX1JQX1NSX0ZPICAgID0gMHhiMSAgICAKK30gc21zYWxfZmlyc3Rfb2N0ZXRfZW51bTsgICAKKworLyoKKyAqIFRoaXMgZW51bSBpcyB1c2VkIGluIFNNU0FMIG1vZHVsZSBpbnRlcm5hbGx5CisgKi8KK3R5cGVkZWYgZW51bQoreworICAgU01TQUxfR1NNN19CSVQgPSAwLCAgICAKKyAgIFNNU0FMX0VJR0hUX0JJVCwKKyAgIFNNU0FMX1VDUzIsICAgICAgIAorICAgU01TQUxfQUxQSEFCRVRfVU5TUEVDSUZJRUQgICAgICAgCisKK30gc21zYWxfYWxwaGFiZXRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBTTVNBTF9DTEFTUzAgPSAwLAorICAgU01TQUxfQ0xBU1MxLAorICAgU01TQUxfQ0xBU1MyLAorICAgU01TQUxfQ0xBU1MzLAorICAgU01TQUxfQ0xBU1NfVU5TUEVDSUZJRUQsCisgICAKKyAgIFNNU0FMX01XX0RJU0NBUkQsIC8qIGZvbGxvd3MgYXJlIGZvciBTTVNBTCBpbnRlcm5hbCB1c2UgKi8KKyAgIFNNU0FMX01XX1NUT1JFLAorICAgU01TQUxfUkNNLAorICAgTlVNX09GX05NSV9NU0dfRU5VTQorfSBzbXNhbF9tc2dfY2xhc3NfZW51bTsKKworCit0eXBlZGVmIGVudW0KK3sKKyAgIFNNU0FMX01TR19UWVBFX05PUk1BTCAsCisgICBTTVNBTF9NU0dfVFlQRV9DTEFTUzAgLAorICAgU01TQUxfTVNHX1RZUEVfVVBEQVRFX09OTFkKK30gc21zYWxfZGlzcGxheV90eXBlX2VudW07CisKKworLyogRW51bXMgZm9yIFJlbGF0aXZlIGZvcm1hdCAqLwordHlwZWRlZiBlbnVtCit7CisgICBTTVNBTF9WUF8xX0hSICAgPSAxMSwgICAvKiAxIGhvdXIgKi8KKyAgIFNNU0FMX1ZQXzZfSFIgICA9IDcxLCAgIC8qIDYgaG91cnMgKi8KKyAgIFNNU0FMX1ZQXzEyX0hSICA9IDE0MywgIC8qIDEyIGhvdXJzICovCisgICBTTVNBTF9WUF8yNF9IUiAgPSAxNjcsICAvKiAyNCBob3VycyA9IDEgZGF5ICovCisgICBTTVNBTF9WUF83Ml9IUiAgPSAxNjksICAvKiA3MiBob3VycyA9IDMgZGF5cyAqLworICAgU01TQUxfVlBfMV9XRUVLID0gMTczLCAgLyogMSB3ZWVrICovCisgICBTTVNBTF9WUF9NQVggICAgPSAyNTUgICAvKiA2MyB3ZWVrcyAqLworfSBzbXNhbF92cF9lbnVtOworCisKKy8vIFNNU0FMX01XX09USEVSID09IFNNU0FMX01XX1ZJREVPX01TRyAgIGluIFNJTSBFRm13aXMKKy8vIFNNU0FMX01XX09USEVSICE9IFNNU0FMX01XX1ZJREVPX01TRyAgIGluIChVKVNJTSBFRm13aXMKK3R5cGVkZWYgZW51bQoreworICAgU01TQUxfTVdfVk0gPSAwLAorICAgU01TQUxfTVdfRkFYLAorICAgU01TQUxfTVdfRU1BSUwsIAorICAgU01TQUxfTVdfT1RIRVIsCisgICBTTVNBTF9NV19WSURFT19NU0csICAgICAgIAorICAgTlVNX09GX01TR19XQUlUSU5HX1RZUEUKK30gc21zYWxfbXNnX3dhaXRpbmdfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBTTVNBTF9FVk1JX05PVElGSUNBVElPTiAgICAgICAgPSAweDAwLAorICAgIFNNU0FMX0VWTUlfREVMRVRFX0NPTkZJUk1BVElPTiA9IDB4MDEKK30gc21zYWxfc21zX2V2bWlfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIFNNU0FMX0VOUVVJUllfQ01EID0gMCwgIC8qIGVucXVpcnkgcmVsYXRpbmcgdG8gcHJldmlvdXNseSBzdWJtaXR0ZWQgU00gKi8KKyAgIFNNU0FMX0NBTkNFTF9TUlJfQ01ELCAgIC8qIGNhbmNlbCBzdGF0dXMgcmVwb3J0IHJlcXVlc3QgKi8KKyAgIFNNU0FMX0RFTF9DTUQsICAgICAgICAgIC8qIGRlbGV0ZSBwcmV2aW91c2x5IHN1Ym1pdHRlZCBTTSAqLworICAgU01TQUxfRU5BQkxFX1NSUl9DTUQgICAgLyogZW5hYmxlIHN0YXR1cyByZXBvcnQgcmVxdWVzdCAqLyAgIAorfSBzbXNhbF9jbWRfdHlwZV9lbnVtOworICAgCit0eXBlZGVmIGVudW0KK3sKKyAgIFNNU0FMX01FTV9GVUxMX05PUk1BTCwgLyogYm90aCBTSU0gYW5kIE1FIGFyZSBmdWxsICovCisgICBTTVNBTF9TTV9GVUxMX09OTFksCisgICBTTVNBTF9NRV9GVUxMX09OTFkKK30gc21zYWxfbWVtX2Z1bGxfZW51bTsKKyAKK3R5cGVkZWYgZW51bQoreworICAgU01TQUxfTUVNX0VYQ0VFRF9OT1JNQUwsCisgICBTTVNBTF9TTV9FWENFRURfV0lUSF9DTEFTUzIKK30gc21zYWxfbWVtX2V4Y2VlZF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgIFNNU0FMX01FTV9BVkFJTF9OT1JNQUwsIC8qIGNvcnJlc3BvbmRpbmcgdG8gU01TQUxfTUVNX0ZVTExfTk9STUFMICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvbmUgb2Ygc3RvcmFnZSBpcyBhdmFpbC4gaXQgd2lsbCBiZSBzZW50ICovCisgICBTTVNBTF9TTV9BVkFJTF9PTkxZLCAgICAvKiBjb3JyZXNwb25kaW5nIHRvIFNNU0FMX1NNX0ZVTExfT05MWSAqLworICAgU01TQUxfTUVfQVZBSUxfT05MWSAgICAgLyogY29ycmVzcG9uZGluZyB0byBTTVNBTF9TTV9GVUxMX09OTFkgKi8KK30gc21zYWxfbWVtX2F2YWlsX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgU01TQUxfQ09QWV9NU0csCisgICBTTVNBTF9NT1ZFX01TRworfSBzbXNhbF9jb3B5X2FjdGlvbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBTTVNBTF9MNENfSU1TX01PLAorICAgIFNNU0FMX0w0Q19JTVNfTVQsCisgICAgU01TQUxfTDRDX0lNU19TTU1BLAorICAgIFNNU0FMX0w0Q19JTVNfU1RLU01TLCAgCisgICAgU01TQUxfTDRDX0lNU19DTVNTCit9c21zYWxfbDRjX2ltc19lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBTTVNBTF9JTVNfRE9NQUlOLAorICAgIFNNU0FMX0NTX0RPTUFJTiwKKyAgICBTTVNBTF9VTlNQRUNJRklFRF9ET01BSU4KK31zbXNhbF9kb21haW5fZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgU01TQUxfQVRfQ1NDQiwgLy9BVCtDU0NCCisgICAgU01TQUxfQVRfRUNTQ0JTVywKKyAgICBTTVNBTF9BVF9FQ1NDQkNGRyAKK31zbXNhbF9jYl9jbWRfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTDRDU01TX0NTX0NBTExfTk9UX1BSRVNFTlQsCisgICAgTDRDU01TX0NTX0NBTExfUFJFU0VOVAorfWw0Y3Ntc19jc19jYWxsX3N0YXR1c19lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIFNNU0FMX0VSUk5PX1NVQ0NFU1MsCisgICAgU01TQUxfRVJSTk9fRkFJTCwKKyAgICBTTVNBTF9FUlJOT19TSU1fU1dJVENICit9c21zYWxfZXJybm9fZW51bTsKKworI2VuZGlmIC8qIF9TTVNBTF9MNENfRU5VTV9IICovCisKKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvdGNtMmw0Y19zdHJ1Y3QuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3RjbTJsNGNfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MxMzMzOQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3RjbTJsNGNfc3RydWN0LmgKQEAgLTAsMCArMSw1MzMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAwNQorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogVENNMkw0Q19TVFJVQ1QuSAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNQVVJCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgY29tbW9uIHN0cnVjdCBvZiBUQ00gYW5kIEw0Qy4KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoKKyogIFRoaXMgcHJvZHVjdCBoYXMgYmVlbiBkZXZlbG9wZWQgdXNpbmcgYSBwcm90b2NvbCBzdGFjaworKiAgZGV2ZWxvcGVkIGJ5IFNhc2tlbiBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBMaW1pdGVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1RDTTJMNENfU1RSVUNUX0gKKyNkZWZpbmUgX1RDTTJMNENfU1RSVUNUX0gKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3VnZ2VzdCBBZGQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyNpbmNsdWRlICJrYWxfbm9uX3NwZWNpZmljX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJsNGMydGNtX2Z1bmMuaCIKKyNpbmNsdWRlICJtY2RfbDNfaW5jX2dwcnNfc3RydWN0LmgiCisjaW5jbHVkZSAibDNfaW5jX2xvY2FsLmgiCisvLyNpbmNsdWRlICJhcHBfbHRsY29tLmgiCisvLyNpbmNsdWRlICJsNGNfY29tbW9uX2VudW0uaCIKKyNpbmNsdWRlICJsNGMydGNtX3N0cnVjdC5oIgorI2luY2x1ZGUgIm1taV9sM19lbnVtcy5oIgorI2luY2x1ZGUgInRjbV9jb250ZXh0LmgiCisjaW5jbHVkZSAidGZ0bGliX2NvbW1vbl9zdHJ1Y3QuaCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3VnZ2VzdCBBZGQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJwc19wdWJsaWNfc3RydWN0LmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKworI2lmZGVmIF9fQ0RNQTIwMDBfUkFUX18KKyNpbmNsdWRlICJjMmtfaXJhdF9tc2dfc3RydWN0LmgiCisjZWxzZQorI2RlZmluZSBNQVhfUEROX05VTSAoNSkKKyNlbmRpZgorCisvKiBfX0FQUF9TRUNPTkRBUllfUERQX1NVUFBPUlRfXyAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWQ7Cit9IHRjbV9wZHBfcmVhY3RpdmF0ZV9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsKKyAgICBrYWxfYm9vbCBjYXVzZTJfcHJlc2VudCA7ICAgIC8vIGlmIG5ldHdvcmsgaGFzIGNhdXNlXzIgdmFsdWUgaW4gQUNUSVZBVEVfUERQX0NPTlRFWFRfQUNDRVBUCisgICAgcHNfY2F1c2VfZW51bSBjYXVzZTI7ICAgICAgICAgICAvKiBSZWxheSBjYXVzZV8yIHZhbHVlIGZyb20gU00uICovCisgICAgcGRwX2FkZHJfdHlwZV9lbnVtIHBkcF90eXBlOworICAgIGthbF91aW50OCBwcmltYXJ5X2NvbnRleHRfaWQ7CisgICAga2FsX2Jvb2wgYXJyZWFyYWdlX2ZsYWc7CisgICAgcmF0X2VudW0gcmF0OworfSB0Y21fcGRwX2FjdGl2YXRlX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBjb250ZXh0X2lkOyAKKyAgICBrYWxfYm9vbCBjYXVzZTJfcHJlc2VudDsKKyAgICBwc19jYXVzZV9lbnVtIGNhdXNlMjsgICAgICAgICAgCisgICAgcGRwX2FkZHJfdHlwZV9lbnVtIHBkcF90eXBlOworICAgIGthbF9ib29sIGFycmVhcmFnZV9mbGFnOworfSBsNGNfdGNtX2Vwc19hdHRhY2hfY25mX3N0cnVjdDsgLy8gY29udmVydCBpdCB0byBsNGJwZG5fbDRjX2x0ZV9hdHRhY2hfcGRuX2FjdGl2YXRlX3N1Y2Nlc3NfaW5kX3N0cnVjdAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsKKyAgICBwc19jYXVzZV9lbnVtIGNhdXNlOyAvKiByZWplY3QgY2F1c2UgKGFsc28gdXNlZCBmb3IgY2F1c2VfMikgKi8KKyAgICBrYWxfYm9vbCBpc19jaGFuZ2VfdG9fYXBuX2NsYXNzX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IGNoYW5nZV90b19hcG5fY2xhc3M7Cit9IGw0Y190Y21fZXBzX2F0dGFjaF9yZWpfc3RydWN0OyAvLyBjb252ZXJ0IGl0IHRvIGw0YnBkbl9sNGNfbHRlX2F0dGFjaF9wZG5fYWN0aXZhdGVfZmFpbHVyZV9pbmRfc3RydWN0CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBjb250ZXh0X2lkOworICAgIGthbF9ib29sIGlzX3JlamVjdGVkX2J5X253OyAvLyBpZiB0aGlzIFBEUCBpcyByZWplY3RlZCBieSBOVyB1c2luZyBTTSBwZWVyIG1zZywgS0FMX1RSVUUsIGVsc2UsIEtBTF9GQUxTRQorICAgIHBzX2NhdXNlX2VudW0gY2F1c2U7IC8qIHJlamVjdCBjYXVzZSAoYWxzbyB1c2VkIGZvciBjYXVzZV8yKSAqLworICAgIGthbF9ib29sIGlzX1QzMzk2X3ByZXNlbnQ7IC8qIF9fTVRDX1NVUFBPUlRfXyAqLworICAgIGthbF91aW50MzIgVDMzOTZfdmFsdWVfaW5fc2VjOyAvKiBfX01UQ19TVVBQT1JUX18gKi8KKyAgICBrYWxfYm9vbCBpc19jaGFuZ2VfdG9fYXBuX2NsYXNzX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4IGNoYW5nZV90b19hcG5fY2xhc3M7CisgICAgcmF0X2VudW0gcmF0OworfSB0Y21fcGRwX2FjdGl2YXRlX3Jlal9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBjb250ZXh0X2lkOworICAgIGthbF91aW50OCBwcmltYXJ5X2NvbnRleHRfaWQ7Cit9IHRjbV9wZHBfYWN0aXZhdGVfaW5kX3N0cnVjdDsKKworLy8jaWZkZWYgX19UVVJOX09OX0dFTkVSQUxfU0VDT05EQVJZX1BEUF9fCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsKKyAgICBrYWxfdWludDggcHJpbWFyeV9jb250ZXh0X2lkOworfSB0Y21fc2VjX3BkcF9hY3RpdmF0ZV9pbmRfc3RydWN0OworLy8jZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWQ7CisgICAgcW9zX3N0cnVjdCBuZXdfbmVnX3FvczsgLyogT2Jzb2xldGVkICovCisgICAga2FsX2Jvb2wgdGZ0X2NoYW5nZWQ7CisgICAga2FsX2Jvb2wgcW9zX2NoYW5nZWQ7CisgICAga2FsX3VpbnQ4IHByaW1hcnlfY29udGV4dF9pZDsKK30gdGNtX3BkcF9tb2RpZnlfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWQ7CisgICAgcHNfY2F1c2VfZW51bSBjYXVzZTsgLyogcmVqZWN0IGNhdXNlKi8KKyAgICBrYWxfYm9vbCBpc19UMzM5Nl9wcmVzZW50OyAvKiBfX01UQ19TVVBQT1JUX18gKi8KKyAgICBrYWxfdWludDMyIFQzMzk2X3ZhbHVlX2luX3NlYzsgLyogX19NVENfU1VQUE9SVF9fICovCit9IHRjbV9wZHBfbW9kaWZ5X3Jlal9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBjb250ZXh0X2lkOworICAgIHFvc19zdHJ1Y3QgbmV3X25lZ19xb3M7IC8qIE9ic29sZXRlZCAqLworICAgIGthbF9ib29sIHRmdF9jaGFuZ2VkOworICAgIGthbF9ib29sIHFvc19jaGFuZ2VkOworICAgIGthbF91aW50OCBwcmltYXJ5X2NvbnRleHRfaWQ7CisKKyAgICBrYWxfYm9vbCAgICAgIGlzX2NhdXNlX3ByZXNlbnQ7IAorICAgIHBzX2NhdXNlX2VudW0gY2F1c2U7IAorfSB0Y21fcGRwX21vZGlmeV9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsKKyAgICBrYWxfdWludDggcHJpbWFyeV9jb250ZXh0X2lkOworICAgIGw0Y19yZXN1bHRfZW51bSByZXN1bHQ7CisgICAgcHNfY2F1c2VfZW51bSBjYXVzZTsgLy8gVXNlZCBieSBSQVRfVENNIHdoZW4gdmFsdWUgPT0gUkFUX1RDTV9SRVRSWV9ORUVERURfQUZURVJfSVJBVAorICAgIGthbF9ib29sIGlzX1QzMzk2X3ByZXNlbnQ7IC8qIF9fTVRDX1NVUFBPUlRfXyAqLworICAgIGthbF91aW50MzIgVDMzOTZfdmFsdWVfaW5fc2VjOyAvKiBfX01UQ19TVVBQT1JUX18gKi8KKyAgICByYXRfZW51bSByYXQ7Cit9IHRjbV9wZHBfZGVhY3RpdmF0ZV9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsKKyAgICBwc19jYXVzZV9lbnVtIGNhdXNlOyAvKiBkZWFjdGl2YXRpb24gY2F1c2UqLworICAgIGthbF91aW50OCBwcmltYXJ5X2NvbnRleHRfaWQ7CisgICAga2FsX2Jvb2wgaXNfVDMzOTZfcHJlc2VudDsgLyogX19NVENfU1VQUE9SVF9fICovCisgICAga2FsX3VpbnQzMiBUMzM5Nl92YWx1ZV9pbl9zZWM7IC8qIF9fTVRDX1NVUFBPUlRfXyAqLworICAgIHJhdF9lbnVtIHJhdDsKK30gdGNtX3BkcF9kZWFjdGl2YXRlX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBsNGN0Y21fYmVhcmVyX25vdGlmeV90eXBlX2VudW0gbm90aWZ5X3R5cGU7CisgICAga2FsX3VpbnQ4IGNpZDsKKyAgICBrYWxfdWludDggbnNhcGk7IC8vIGJlYXJlcl9pZAorICAgIGthbF9ib29sIHRmdF9wcmVzZW50OworICAgIHRmdF9pbmZvX3N0cnVjdCB0ZnQ7CisgICAgCit9IGw0Y3RjbV9kZWRpY2F0ZWRfYmVhcmVyX2V2ZW50X3JlcG9ydF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGw0Y3RjbV9wc19ldmVudF9yZXBvcnRfdHlwZV9lbnVtIGV2ZW50X2lkOworCisgICAgdW5pb24KKyAgICB7CisgICAgICAgIGw0Y3RjbV9kZWRpY2F0ZWRfYmVhcmVyX2V2ZW50X3JlcG9ydF9zdHJ1Y3QgZGVkaWNhdGVfZXZlbnQ7CisgICAgfXJlcG9ydF9jb250ZW50OyAKKyAgICAKK30gbDRjdGNtX3BzX2V2ZW50X3JlcG9ydF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggdmFsaWRfY29udGV4dHM7CisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWRbR1BSU19NQVhfUERQX1NVUFBPUlRdOworICAgIGthbF91aW50OCBiZWFyZXJfY2FwYWJpbGl0eVtHUFJTX01BWF9QRFBfU1VQUE9SVF07Cit9IGw0Y3RjbV9iZWFyZXJfY2FwYWJpbGl0eV9pbmRfc3RydWN0OyAvL2hzcGFfbW1pX2gyCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCByZXN1bHQ7CisgICAgcHNfY2F1c2VfZW51bSBlcnJvcl9jYXVzZTsgIC8qIGVyaWNhIDIwMDYwMzIwICovCit9IGw0Y3RjbV9zZXRfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWQ7ICAgICAgIC8vIEplZmZlcnkgTkVXIQorICAgIGthbF91aW50OCByZXN1bHQ7CisgICAgcHNfY2F1c2VfZW51bSBlcnJvcl9jYXVzZTsgIC8qIGVyaWNhIDIwMDYwMzIwICovCit9IGw0Y3RjbV9zZXRfY29udGV4dF9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBsNGN0Y21fbGFkbl9pbmZvX2xpc3Rfc3RydWN0IGxhZG5faW5mb19saXN0OworfSBsNGN0Y21fbGFkbl9pbmZvX3VwZGF0ZV9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX2Jvb2wgcmVzdWx0OworICAgIHBzX2NhdXNlX2VudW0gY2F1c2U7Cit9IGw0Y3RjbV9zZXRfYWNsX21vZGVfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF9ib29sIHJlc3VsdDsKKyAgICBwc19jYXVzZV9lbnVtCWNhdXNlOworICAgIGthbF91aW50MTYJc3RhcnRfaW5kZXg7CisgICAga2FsX3VpbnQxNgludW1fb2ZfZW50cmllczsKKyAgICBrYWxfYm9vbAkgICAgICAgbW9yZV9mbGFnOworICAgIHRjbV9hY2xfZW50cnlfc3RydWN0CWFjbF9saXN0W1RDTV9NQVhfUEVFUl9BQ0xfRU5UUklFU107Cit9IGw0Y3RjbV9nZXRfYWNsX2VudHJpZXNfY25mX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF9ib29sIHJlc3VsdDsKKyAgICBwc19jYXVzZV9lbnVtCWNhdXNlOworfSBsNGN0Y21fYWRkX2FjbF9lbnRyeV9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX2Jvb2wgcmVzdWx0OworICAgIHBzX2NhdXNlX2VudW0JY2F1c2U7Cit9IGw0Y3RjbV9zZXRfYWNsX2VudHJ5X2NuZl9zdHJ1Y3Q7Cit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX2Jvb2wgcmVzdWx0OworICAgIHBzX2NhdXNlX2VudW0JY2F1c2U7Cit9IGw0Y3RjbV9kZWxfYWNsX2VudHJ5X2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgbDRjdGNtX3NldF9jb250ZXh0X2NuZl9zdHJ1Y3QgbDRjdGNtX3NldF9wcmlfcGRwX2luZm9fY25mX3N0cnVjdDsKK3R5cGVkZWYgbDRjdGNtX3NldF9jb250ZXh0X2NuZl9zdHJ1Y3QgbDRjdGNtX3NldF9zZWNfcGRwX2luZm9fY25mX3N0cnVjdDsKK3R5cGVkZWYgbDRjdGNtX3NldF9jb250ZXh0X2NuZl9zdHJ1Y3QgbDRjdGNtX3NldF9leHRlbmRlZF9wZHBfaW5mb19jbmZfc3RydWN0OwordHlwZWRlZiBsNGN0Y21fc2V0X2NvbnRleHRfY25mX3N0cnVjdCBsNGN0Y21fc2V0X3Fvc19pbmZvX2NuZl9zdHJ1Y3Q7Cit0eXBlZGVmIGw0Y3RjbV9zZXRfY29udGV4dF9jbmZfc3RydWN0IGw0Y3RjbV9zZXRfZXFvc19pbmZvX2NuZl9zdHJ1Y3Q7Cit0eXBlZGVmIGw0Y3RjbV9zZXRfY29udGV4dF9jbmZfc3RydWN0IGw0Y3RjbV9zZXRfcHBwX2F1dGhfaW5mb19jbmZfc3RydWN0OworLy90eXBlZGVmIGw0Y3RjbV9zZXRfY29udGV4dF9jbmZfc3RydWN0IGw0Y3RjbV9zZXRfZ3Byc19hY2NvdW50X2luZm9fY25mX3N0cnVjdDsKK3R5cGVkZWYgbDRjdGNtX3NldF9jb250ZXh0X2NuZl9zdHJ1Y3QgbDRjdGNtX3NldF9lcHNfcW9zX2luZm9fY25mX3N0cnVjdDsKK3R5cGVkZWYgbDRjdGNtX3NldF9jb250ZXh0X2NuZl9zdHJ1Y3QgbDRjdGNtX3NldF92Z3Fvc19pbmZvX2NuZl9zdHJ1Y3Q7Cit0eXBlZGVmIGw0Y3RjbV9zZXRfY29udGV4dF9jbmZfc3RydWN0IGw0Y3RjbV91bmRlZmluZV9wZHBfaW5mb19jbmZfc3RydWN0OyAvL210azAwNzE0IHcwNjM3OiBBVCBkZWZpbml0aW9uCit0eXBlZGVmIGw0Y3RjbV9zZXRfY29udGV4dF9jbmZfc3RydWN0IGw0Y3RjbV9zZXRfY2dhdXRoX2luZm9fY25mX3N0cnVjdDsKK3R5cGVkZWYgbDRjdGNtX3NldF9jb250ZXh0X2NuZl9zdHJ1Y3QgbDRjdGNtX3NldF9lZ3Bjb19jbmZfc3RydWN0OworCisvL3R5cGVkZWYgbDRjdGNtX3NldF9jb250ZXh0X2NuZl9zdHJ1Y3QgbDRjdGNtX3NldF9wcHBfYXV0aF9jbmZfc3RydWN0OyAgIC8vIG10azAyMTI2IGRlZmluZSB0aGlzIHN0cnVjdCBmb3IgTVNDIHRvIHJlY29nbml6ZSBNQVVJXzAyNDIwNzIwCisKK3R5cGVkZWYgbDRjdGNtX3NldF9jbmZfc3RydWN0IGw0Y3RjbV9zdGFydF9jbmZfc3RydWN0OwordHlwZWRlZiBsNGN0Y21fc2V0X2NuZl9zdHJ1Y3QgbDRjdGNtX3N5bmNfYXBuX2luZm9fY25mX3N0cnVjdDsKK3R5cGVkZWYgbDRjdGNtX3NldF9jbmZfc3RydWN0IGw0Y3RjbV9zZXRfbXNxX21vZGVfY25mX3N0cnVjdCA7ICAvKiBfX01FRElBVEVLX1NNQVJUX1FPU19fICovCit0eXBlZGVmIGw0Y3RjbV9zZXRfY25mX3N0cnVjdCBsNGN0Y21fc2V0X21zcV9lbnRyeV9jbmZfc3RydWN0IDsgLyogX19NRURJQVRFS19TTUFSVF9RT1NfXyAqLworCisvL3R5cGVkZWYgdGNtX3BkcF9hY3RpdmF0ZV9pbmRfc3RydWN0IHJhdF90Y21fcHJpbnRfZW1iZWRkZWRfYWN0aXZhdGVfaW5kX3N0cnVjdDsKK3R5cGVkZWYgdGNtX3BkcF9kZWFjdGl2YXRlX2luZF9zdHJ1Y3QgcmF0X3RjbV9wcmludF9lbWJlZGRlZF9kZWFjdGl2YXRlX2luZF9tc2dfc3RydWN0OwordHlwZWRlZiB0Y21fcGRwX21vZGlmeV9pbmRfc3RydWN0IHJhdF90Y21fcHJpbnRfZW1iZWRkZWRfbW9kaWZ5X2luZF9tc2dfc3RydWN0OwordHlwZWRlZiB0Y21fc2VjX3BkcF9hY3RpdmF0ZV9pbmRfc3RydWN0IHJhdF90Y21fcHJpbnRfZW1iZWRkZWRfc2VjX2FjdGl2YXRlX2luZF9tc2dfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZDsKKyAgICBrYWxfdWludDggcmVzdWx0OworICAgIHBzX2NhdXNlX2VudW0gZXJyb3JfY2F1c2U7Cit9IGw0Y3RjbV9lbnRlcl9kYXRhX21vZGVfY25mX3N0cnVjdDsgLy9tdGswMjI4NSwgMjAxMTAzMjIKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWQ7CisgICAga2FsX3VpbnQ4IHJlc3VsdDsKKyAgICBwc19jYXVzZV9lbnVtIGVycm9yX2NhdXNlOworfSBsNGN0Y21fbGVhdmVfZGF0YV9tb2RlX2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBwZG5fbnVtOworICAgIGw0Y3RjbV9hdF9yZXBvcnRfc3RydWN0IHBkbltNQVhfUEROX05VTV07Cit9bDRjdGNtX3NldF9tdWx0aXBsZV9wZG5faW5mb19jbmZfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0eworICAgIExPQ0FMX1BBUkFfSERSCisgICAgbDRjdGNtX3NldF9zcGVjaWZpY19jb250ZXh0X3JlcV9zdHJ1Y3QgcGlnZ3liYWNrX3JlcTsKKyAgICBrYWxfdWludDE2IHNldF9zdWNjZXNzX2NvbnRleHRfaWQ7CisgICAgCit9bDRjdGNtX3NldF9zcGVjaWZpY19jb250ZXh0X2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBsNGNfcHJpbV9wZHBfaW5mb19saXN0X3N0cnVjdCBsNGNfcHJpbV9wZHBfaW5mb19saXN0OworfSB0Y21fdXRfY2hlY2tfY2FsbGJhY2tfbDRjdGNtX2dldF9wcmlfcGRwX2luZm9fc3RydWN0OworLy9NU0dfSURfVENNX1VUX0NIRUNLX0NBTExCQUNLX0w0Q1RDTV9HRVRfUFJJX1BEUF9JTkZPLCBsNGNfcHJpbV9wZHBfaW5mb19saXN0X3N0cnVjdAorCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgbDRjX3NlY19wZHBfaW5mb19saXN0X3N0cnVjdCBsNGNfc2VjX3BkcF9pbmZvX2xpc3Q7Cit9IHRjbV91dF9jaGVja19jYWxsYmFja19sNGN0Y21fZ2V0X3NlY19wZHBfaW5mb19zdHJ1Y3Q7CisvL01TR19JRF9UQ01fVVRfQ0hFQ0tfQ0FMTEJBQ0tfTDRDVENNX0dFVF9TRUNfUERQX0lORk8sIGw0Y19zZWNfcGRwX2luZm9fbGlzdF9zdHJ1Y3QKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGw0Y19xb3NfbGlzdF9zdHJ1Y3QgbDRjX3Fvc19saXN0OworfSB0Y21fdXRfY2hlY2tfY2FsbGJhY2tfbDRjdGNtX2dldF9xb3NfaW5mb19zdHJ1Y3Q7CisvL01TR19JRF9UQ01fVVRfQ0hFQ0tfQ0FMTEJBQ0tfTDRDVENNX0dFVF9RT1NfSU5GTywgbDRjX3Fvc19saXN0X3N0cnVjdAorCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgbDRjX2NvbmZpZ19vcHRpb25fbGlzdF9zdHJ1Y3QgbDRjX2NvbmZpZ19vcHRpb25fbGlzdDsKK30gdGNtX3V0X2NoZWNrX2NhbGxiYWNrX2w0Y3RjbV9nZXRfY29uZmlnX29wdGlvbl9pbmZvX3N0cnVjdDsKKy8vTVNHX0lEX1RDTV9VVF9DSEVDS19DQUxMQkFDS19MNENUQ01fR0VUX0NPTkZJR19PUFRJT05fSU5GTywgbDRjX2NvbmZpZ19vcHRpb25fbGlzdF9zdHJ1Y3QKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGw0Y19lcW9zX2xpc3Rfc3RydWN0IGw0Y19lcW9zX2xpc3Q7Cit9IHRjbV91dF9jaGVja19jYWxsYmFja19sNGN0Y21fZ2V0X2Vxb3NfaW5mb19zdHJ1Y3Q7CisvL01TR19JRF9UQ01fVVRfQ0hFQ0tfQ0FMTEJBQ0tfTDRDVENNX0dFVF9FUU9TX0lORk8sIGw0Y19lcW9zX2xpc3Rfc3RydWN0CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDE2IHZhbDsKK30gdGNtX3V0X2NoZWNrX2NhbGxiYWNrX2w0Y3RjbV9lbmNvZGVfc2R1X3NpemVfc3RydWN0OworLy9NU0dfSURfVENNX1VUX0NIRUNLX0NBTExCQUNLX0w0Q1RDTV9FTkNPREVfU0RVX1NJWkUsIGthbF91aW50MTYgdmFsX3B0cgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQxNiB2YWw7Cit9IHRjbV91dF9jaGVja19jYWxsYmFja19sNGN0Y21fZGVjb2RlX3NkdV9zaXplX3N0cnVjdDsKKy8vTVNHX0lEX1RDTV9VVF9DSEVDS19DQUxMQkFDS19MNENUQ01fREVDT0RFX1NEVV9TSVpFLCBrYWxfdWludDE2IHZhbF9wdHIKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50MzIgdmFsOworfSB0Y21fdXRfY2hlY2tfY2FsbGJhY2tfbDRjdGNtX2VuY29kZV9iaXRfcmF0ZV9zdHJ1Y3Q7CisvL01TR19JRF9UQ01fVVRfQ0hFQ0tfQ0FMTEJBQ0tfTDRDVENNX0VOQ09ERV9CSVRfUkFURSwga2FsX3VpbnQxNiB2YWxfcHRyCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDMyIHJhdGU7Cit9IHRjbV91dF9jaGVja19jYWxsYmFja19sNGN0Y21fZGVjb2RlX2JpdF9yYXRlX3N0cnVjdDsKKy8vTVNHX0lEX1RDTV9VVF9DSEVDS19DQUxMQkFDS19MNENUQ01fREVDT0RFX0JJVF9SQVRFLCBrYWxfdWludDMyIHJhdGVfcHRyCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDE2IHZhbDsKK30gdGNtX3V0X2NoZWNrX2NhbGxiYWNrX2w0Y3RjbV9lbmNvZGVfdHJhbnNmZXJfZGVsYXlfc3RydWN0OworLy9NU0dfSURfVENNX1VUX0NIRUNLX0NBTExCQUNLX0w0Q1RDTV9FTkNPREVfVFJBTlNGRVJfREVMQVksIGthbF91aW50MTYgdmFsX3B0cgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQxNiB2YWw7Cit9IHRjbV91dF9jaGVja19jYWxsYmFja19sNGN0Y21fZGVjb2RlX3RyYW5zZmVyX2RlbGF5X3N0cnVjdDsKKy8vTVNHX0lEX1RDTV9VVF9DSEVDS19DQUxMQkFDS19MNENUQ01fREVDT0RFX1RSQU5TRkVSX0RFTEFZLCBrYWxfdWludDE2IGRlbGF5X3B0cgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGxlbmd0aDsKKyAgICBrYWxfdWludDggYWRkclsxMDBdOworfSB0Y21fdXRfY2hlY2tfY2FsbGJhY2tfbDRjdGNtX2dldF9wZHBfYWRkcl9zdHJ1Y3Q7CisvL01TR19JRF9UQ01fVVRfQ0hFQ0tfQ0FMTEJBQ0tfTDRDVENNX0dFVF9QRFBfQUREUiwga2FsX3VpbnQ4IGxlbmd0aCwga2FsX3VpbnQ4IGFkZHJbMTAwXQorCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHRvdGFsX2NvbnRleHRbMTAwXTsKKyAgICBrYWxfdWludDggc3RhdGVfbGlzdFsxMDBdOworfSB0Y21fdXRfY2hlY2tfY2FsbGJhY2tfbDRjdGNtX2dldF9jb250ZXh0X3N0YXRlX3N0cnVjdDsKKy8vTVNHX0lEX1RDTV9VVF9DSEVDS19DQUxMQkFDS19MNENUQ01fR0VUX0NPTlRFWFRfU1RBVEUsIGthbF91aW50OCB0b3RhbF9jb250ZXh0WzEwMF0sIGthbF91aW50OCBzdGF0ZV9saXN0WzEwMF0KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBlbXB0eV9ncHJzX3Byb2ZfZW50cnlbMTAwXTsKK30gdGNtX3V0X2NoZWNrX2NhbGxiYWNrX2w0Y3RjbV9nZXRfZW1wdHlfZ3Byc19wcm9mX3N0cnVjdDsKKy8vTVNHX0lEX1RDTV9VVF9DSEVDS19DQUxMQkFDS19MNENUQ01fR0VUX0VNUFRZX0dQUlNfUFJPRiwga2FsX3VpbnQ4IGVtcHR5X2dwcnNfcHJvZl9lbnRyeVsxMDBdCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCBhdXRoX3R5cGU7Cit9IHRjbV91dF9jaGVja19jYWxsYmFja19sNGN0Y21fZ2V0X3BwcF9hdXRoX3N0cnVjdDsKKy8vTVNHX0lEX1RDTV9VVF9DSEVDS19DQUxMQkFDS19MNENUQ01fR0VUX1BQUF9BVVRILCBrYWxfYm9vbCBpc19jaGFwCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCBjYWxsYmFja19mdW5jX3JldHVybl92YWx1ZTsKK30gdGNtX3V0X2NoZWNrX2NhbGxiYWNrX2NoZWNrX3BkcF9jb250ZXh0X2V4aXN0X29yX2R1cmluZ19hY3RpdmF0aW5nX2Z1bmNfc3RydWN0OworLy8gTVNHX0lEX1RDTV9VVF9DSEVDS19DQUxMQkFDS19DSEVDS19QRFBfQ09OVEVYVF9FWElTVF9PUl9EVVJJTkdfQUNUSVZBVElOR19GVU5DCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCBjYWxsYmFja19mdW5jX3JldHVybl92YWx1ZTsKKyAgICBrYWxfdWludDggdmFsaWRfY29udGV4dHM7CisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWRbR1BSU19NQVhfUERQX1NVUFBPUlRdOworICAgIGthbF91aW50OCBiZWFyZXJfY2FwYWJpbGl0eVtHUFJTX01BWF9QRFBfU1VQUE9SVF07Cit9IHRjbV91dF9jaGVja19jYWxsYmFja19sNGN0Y21fZ2V0X2JlYXJlcl9jYXBhYmlsaXR5X3N0cnVjdDsKKy8vIE1TR19JRF9UQ01fVVRfQ0hFQ0tfQ0FMTEJBQ0tfTDRDVENNX0dFVF9CRUFSRVJfQ0FQQUJJTElUWQorCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCit9IHRjbV91dF9yZXN1bHRfb2tfc3RydWN0OyAKKwordHlwZWRlZiBzdHJ1Y3QgCit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBsNGNfcHJpbV9wZHBfcmRwX2luZm9fc3RydWN0IGluZm8gOyAgICAKK30gdGNtX3V0X2w0Y3RjbV9nZXRfcHJpX3BkcF9yZHBfaW5mb19zdHJ1Y3QgOyAvLyBsNGN0Y21fZ2V0X3ByaV9wZHBfcmRwX2luZm8oKQorCit0eXBlZGVmIHN0cnVjdCAKK3sKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBsNGNfc2VjX3BkcF9yZHBfaW5mb19zdHJ1Y3QgaW5mbyA7ICAgCit9IHRjbV91dF9sNGN0Y21fZ2V0X3NlY19wZHBfcmRwX2luZm9fc3RydWN0IDsgLy8gbDRjdGNtX2dldF9zZWNfcGRwX3JkcF9pbmZvKCkgCisKK3R5cGVkZWYgc3RydWN0IAoreworICAgIExPQ0FMX1BBUkFfSERSIAorICAgIGw0Y19wcmltX3BkcF9pbmZvX3N0cnVjdCBpbmZvIDsKK30gdGNtX3V0X2w0Y3RjbV9nZXRfcHJpX3BkcF9pbmZvX3N0cnVjdCA7IC8vIGw0Y3RjbV9nZXRfcHJpX3BkcF9pbmZvKCkKKwordHlwZWRlZiBzdHJ1Y3QgCit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBsNGNfc2VjX3BkcF9pbmZvX3N0cnVjdCBpbmZvIDsKK30gdGNtX3V0X2w0Y3RjbV9nZXRfc2VjX3BkcF9pbmZvX3N0cnVjdCA7IC8vIGw0Y3RjbV9nZXRfc2VjX3BkcF9pbmZvKCkKKwordHlwZWRlZiBzdHJ1Y3QgCit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggY29udGV4dF9pZCA7CisgICAgcGRwX2FkZHJfdHlwZV9lbnVtIHBkcF90eXBlIDsKKyAgICBwZHBfYWRkcl9sZW5fZW51bSBwZHBfbGVuIDsKKyAgICBrYWxfdWludDggcGRwX2FkZHJbSVBWNFY2X0FERFJfTEVOXSA7Cit9IHRjbV91dF9sNGN0Y21fZ2V0X253X2FwcGxpZWRfcGRwX2luZm9fc3RydWN0IDsgLy8gbDRjdGNtX2dldF9wZHBfYWRkcigpIGFuZCBsNGN0Y21fZ2V0X3BkcF9hZGRyX3R5cGUoKQorCit0eXBlZGVmIHN0cnVjdHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIHNlc3Npb25faW5mb19ibG9ja19zdHJ1Y3Qgc2Vzc2lvbl9pbmZvOworfSB0Y21fdXRfbDRjdGNtX2dldF9zaWJfaW5mb19zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0eworICAgIExPQ0FMX1BBUkFfSERSCisgICAgdGNtZXNtX3Bjb19zdHJ1Y3QgcGNvOworfSB0Y21fdXRfZXRjbV9jaWRfZ2V0X3Bjb19yZXN1bHRfc3RydWN0OyAKKy8vTVNHX0lEX1RDTV9VVF9FVENNX0NJRF9HRVRfUENPX1JFU1VMVAorCit0eXBlZGVmIHN0cnVjdHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIHRjbV9waWNfc3RydWN0IHBpYzsKK30gdGNtX3V0X3BpY19jb250ZXh0X2R1bXBfc3RydWN0OyAKKy8vIE1TR19JRF9UQ01fVVRfUElDX0NPTlRFWFRfRFVNUAorCisvKiBtdGswMzUzNzogZm9yIExURSBjb25jYXRlbmF0ZWQgbWVzc2FnZSBpbiBwZWVyIGJ1ZmZlciAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFBFRVJfQlVGRl9IRFIKKyAgICBrYWxfdWludDggICAgICAgICAgIGVtYmVkX21zZ19udW07CisgICAga2FsX3VpbnQzMiAgICAgICAgICBlbWJlZF9tc2dfaWRbMTBdOyAvLyBhdCBtb3N0IDExIG5zYXBpcyAobnNhcGkgNX4xNSksIHRoZXJlZm9yZSwgZW1iZWRkZWQgYXQgbW9zdCBoYXZlIDEwIGVudHJpZXMKKyAgICBsb2NhbF9wYXJhX3N0cnVjdCAgICplbWJlZF9sb2NhbF9wYXJhbVsxMF07IC8vIGF0IG1vc3QgMTEgbnNhcGlzIChuc2FwaSA1fjE1KSwgdGhlcmVmb3JlLCBlbWJlZGRlZCBhdCBtb3N0IGhhdmUgMTAgZW50cmllcworfSB0Y21fZW1iZWRfc3RydWN0OworCisKKy8qIE1QSDEgRTkxMSovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKK30gbDRjdGNtX2VjY19yZWpfYnlfbndfaW5fYXR0YWNoX2luZF9zdHJ1Y3Q7CisKKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3RjbV9yYXR0Y21fc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy90Y21fcmF0dGNtX3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MzhmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy90Y21fcmF0dGNtX3N0cnVjdC5oCkBAIC0wLDAgKzEsMTI1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqIFRDTV9SQVRUQ01fU1RSVUNULkgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgTU9MWQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBkZXNjcmliZXMgdGhlIGNvbW1vbiBzdHJ1Y3Qgb2YgdWdUQ00vZVRDTSBhbmQgUkFUX1RDTQorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICAgICAgICAgICAgIEhJU1RPUlkKKyAqIEJlbG93IHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVXBwZXIgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqCisqICBUaGlzIHByb2R1Y3QgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nIGEgcHJvdG9jb2wgc3RhY2sKKyogIGRldmVsb3BlZCBieSBTYXNrZW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgTGltaXRlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9UQ01fUkFUVENNX1NUUlVDVF9ICisjZGVmaW5lIF9UQ01fUkFUVENNX1NUUlVDVF9ICisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorCisjaW5jbHVkZSAiaXJhdF9jb21tb25fc3RydWN0LmgiCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBpcmF0X3R5cGVfZW51bSBpcmF0X3R5cGU7CisgICAgcmF0X3R5cGVfZW51bSBzb3VyY2VfcmF0OworICAgIHJhdF90eXBlX2VudW0gdGFyZ2V0X3JhdDsKKyAgICBpcmF0X3Jlc3VsdF9lbnVtIGlyYXRfcmVzdWx0OworfSB0Y21fcmF0X2NoYW5nZV9jb21wbGV0ZV9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGNvbnRleHRfaWQ7CisgICAgdGNtX3BkcF9kZWFjdF9yZWFzb25fZW51bSBkZWFjdF9yZWFzb247CisgICAgLy8gaWYgdGZ0IGNvbmZsaWN0IGFuZCBuZWVkIHRvIGRlYWN0aXZhdGUgYSBjb250ZXh0LCB1Z1RDTS9lVENNIHVzZSB0aGlzIG1lc3NhZ2UgdG8gaW5mb3JtIFJBVF9UQ00uIGlmID4gMSBjb250ZXh0IG5lZWQgdG8gYmUgZGVhY3RpdmF0ZWQsIHVnVENNL2VUQ00gbmVlZCB0byBzZW5kIHNldmVyYWwgbXNncyB0byBSQVRfVENNCit9IHRjbV9yYXRfdGNtX2luaXRfZGVhY3RpdmF0ZV9jb250ZXh0X2luZF9zdHJ1Y3Q7CisKKyNlbmRpZiAvLyBfVENNX1JBVFRDTV9TVFJVQ1RfSApkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvdmRtX2F0cF9lbnVtcy5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9sNG1pc2MvdmRtX2F0cF9lbnVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZDcyYTAKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy92ZG1fYXRwX2VudW1zLmgKQEAgLTAsMCArMSwyMjAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMworKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLiAKKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tLS0tCisgKiAgIHZkbV9hdHBfZW51bXMuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgTU9MWQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBlbnVtIGJldHdlZW4gVkRNIGFuZCBJTVMgUHJveHkuCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDA3IDI3IDIwMjAgeXVsb25nLmNoYW5nCisgKiBbTU9MWTAwNTQ5NDc4XSBbR2VuOTddW0hFMy4wXU4zR1BQIG9mZmxvYWQgb3ZlciBkYXRhIGZlYXR1cmUKKyAqIFZvRGF0YSBWRE0gcGFydAorICoKKyAqIDAzIDA1IDIwMjAgY2hlbi13ZWkubGFuCisgKiBbTU9MWTAwNTAyNDAwXSBbR2VuOTddW1VOSVRFXVs1R11bU0FdW0hFQVRdW1IxNV9TQV9NUkFUX0FGUl8zRzRHNUdfMV1EZWxheSBvYnNlcnZlZCBpbiB0aGUgRXh0ZW5kZWQgU2VydmljZSBSZXF1ZXN0IHRyaWdnZXIKKyAqIHZvbnJfb2ZmL3ZvbHRlX29mZiB3aGVuIE5SIGNhbGwgZmFpbAorICoKKyAqIDA5IDI0IDIwMTkgZGFubnkua3VvCisgKiBbTU9MWTAwNDQwODg2XSBbR2VuOTddIERTREEtbGlrZSBmZWF0dXJlIGNoZWNrIGluCisgKiAuCisgKgorICogMDggMjYgMjAxOSBjaGVuLXdlaS5sYW4KKyAqIFtNT0xZMDA0MzMwNDFdIFtHZW45N11bRVBTRkJdIElUIHJlbGF0ZWQgaXNzdWVzCisgKiB1YWMKKyAqCisgKiAxMSAwMSAyMDE4IGt1YW4td2VpLmNoZW4KKyAqIFtNT0xZMDAzNDY2NDddIFtNVDYyOTddW1ZETS9MNF0gY2hhbmdlcyBmb3IgOTcKKyAqIFtWTU9MWV1bVkRNXVtNUERdCisgKgorICogMDggMTcgMjAxOCBjaGVuLXdlaS5sYW4KKyAqIFtNT0xZMDAzNDY2NDddIFtNVDYyOTddW1ZETS9MNF0gY2hhbmdlcyBmb3IgOTcKKyAqIGw0YyBjYworICoKKyAqIDA0IDE4IDIwMTgga3Vhbi13ZWkuY2hlbgorICogW01PTFkwMDMyMDg0MV0gW0dlbjk3XVtMNC9TSU1dIHBhdGNoIEw0Qy9SQUMvU0lNL0NDIE5BUy1TViByZWxhdGVkIGFuZCByZWZhY3RvciBjb2RlIGJhY2sgdG8gR0VOOTcuREVWCisgKiBbR2VuOTcgREVWXSA6IFZETS9MNCByZWFyY2ggLSBWRE0gcGFydAorICoKKyAqIDA0IDE4IDIwMTgga3Vhbi13ZWkuY2hlbgorICogW01PTFkwMDMyMDg0MV0gW0dlbjk3XVtMNC9TSU1dIHBhdGNoIEw0Qy9SQUMvU0lNL0NDIE5BUy1TViByZWxhdGVkIGFuZCByZWZhY3RvciBjb2RlIGJhY2sgdG8gR0VOOTcuREVWCisgKiBbR2VuOTcgREVWXSA6IFZETS9MNCByZWFyY2ggLSBWRE0gcGFydAorICoKKyAqIDA0IDE4IDIwMTgga3Vhbi13ZWkuY2hlbgorICogW01PTFkwMDMyMDg0MV0gW0dlbjk3XVtMNC9TSU1dIHBhdGNoIEw0Qy9SQUMvU0lNL0NDIE5BUy1TViByZWxhdGVkIGFuZCByZWZhY3RvciBjb2RlIGJhY2sgdG8gR0VOOTcuREVWCisgKiBbR2VuOTcgREVWXSA6IFZETS9MNCByZWFyY2ggLSBWRE0gcGFydAorICoKKyAqIDA0IDE4IDIwMTgga3Vhbi13ZWkuY2hlbgorICogW01PTFkwMDMyMDg0MV0gW0dlbjk3XVtMNC9TSU1dIHBhdGNoIEw0Qy9SQUMvU0lNL0NDIE5BUy1TViByZWxhdGVkIGFuZCByZWZhY3RvciBjb2RlIGJhY2sgdG8gR0VOOTcuREVWCisgKiBbR2VuOTcgREVWXSA6IFZETS9MNCByZWFyY2ggLSBWRE0gcGFydAorICoKKyAqIDA2IDI2IDIwMTcgamVycnkuY2hlbmcKKyAqIFtNT0xZMDAyNTkzNzBdIC5FVkFEU01PRCByZWFyY2gKKyAqIC5FVkFEU01PRCByZWFyY2gKKyAqCisgKiAwNCAwNyAyMDE3IGplcnJ5LmNoZW5nCisgKiBbTU9MWTAwMjQwMzEyXSBbOTNdIENUIFZvTFRFIG1vZGVtIHJlLWFyY2hpdGVjdHVyZQorICogLltDVCBWb0xURV0gIGhWb0xURSAvIEU5MTEgY29uZmlndXJhdGlvbiwgVkRNIHJlLWFyY2gsIGV4dGVuZCBBVCtFVkFETU9ELCBBVCtFTVZTUworICoKKyAqIDA0IDA1IDIwMTcgamVycnkuY2hlbmcKKyAqIFtNT0xZMDAyMjE1NzJdIFtHZW45M11bTDQgaW50ZWdyYXRpb25dW1ZETV0KKyAqIC5bTTNdIENMQ0NTIC5yZW1vdmUgQ0xDQyBjbmYgY2hlY2sgZm9yIHVuc3luYyBjYWxsKEMySykgaW4gb3JkZXIgdG8gZnVsZmlsbCBDMksgY2FsbCB3YWl0aW5nCisgKgorICogMDQgMDUgMjAxNyBqZXJyeS5jaGVuZworICogW01PTFkwMDIyMTU3Ml0gW0dlbjkzXVtMNCBpbnRlZ3JhdGlvbl1bVkRNXQorICogLltNM10gU1RLL1VUSworICoKKyAqIDA5IDAzIDIwMTUgbGV4ZWwueXUKKyAqIFtNT0xZMDAxMzA4NTldIFtWaUxURV0gYWRkIEFUK0VDQ1AvQVQrRUlNU0NDUCBpbiBBRFMKKyAqIAkuCisgKgorICogMDggMjYgMjAxNSBiZW4uY2hpdQorICogW01PTFkwMDEzODIxN10gW1ZpTFRFXSBNMCBtaWdyYXRpb24gVmlMVEUgZmVhdHVyZSBJbnRlcmZhY2UKKyAqIFZpTFRFIGludGVyZmFjZSBwYXRjaCBiYWNrCisgKgorICogMTIgMDUgMjAxNCBsZXhlbC55dQorICogW01PTFkwMDA4NTcwM10gW1ZETV1bTVQ2MjkxXSBTeW5jIE1PTFkgdG8gVU1PTFkKKyAqIAlbTU9MWTAwMDg1NzE3XSBbVm9MVEVdIEFuZHJvaWQgTCByZWxlYXNlIFZvTFRFIHJlZmFjdG9yeSBmb3IgVkRNIGFuZCBBVFAKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfVkRNX0FUUF9FTlVNU19IXworI2RlZmluZSBfVkRNX0FUUF9FTlVNU19IXworCisjZGVmaW5lIFZETV9BVFBfQ0xDQ19DTENDU19FUlJPUiAyNTUKKwordHlwZWRlZiBlbnVtIHsKKyAgICBDT0RFX05PX0NBUlJJRVIgPSAwLAorICAgIENPREVfRVJST1IsCisgICAgQ09ERV9PSworfSB2ZG1fYXRwX2F0X2NtZF9yZXN1bHRfZW51bTsKKwordHlwZWRlZiBlbnVtIAoreworICAgIFZETV9BRFNfTU9ERV9BVVRPTUFUSUMgPSAwLCAgICAgLy8gTFRFKElNUyksIFdHKENTKSwgMXgoQzJLKQorICAgIFZETV9BRFNfTU9ERV9DU19PTkxZLCAgICAgICAgICAgLy8gV0coQ1MpCisgICAgVkRNX0FEU19NT0RFXzNHUFBfT05MWSwgICAgICAgICAvLyBMVEUoSU1TKSwgV0coQ1MpCisgICAgVkRNX0FEU19NT0RFXzNHUFAyX09OTFksICAgICAgICAvLyAxeChDMkspCisgICAgVkRNX0FEU19NT0RFX0lNU18xeENTX09OTFksICAgICAvLyBMVEUoSU1TKSwgMXgoQzJLKQorICAgIFZETV9BRFNfTU9ERV9XR0NTXzF4Q1NfT05MWSAgICAgLy8gV0coQ1MpLCAxeChDMkspCit9IHZkbV9hZHNfbW9kZV9lbnVtOworCit0eXBlZGVmIGVudW0gCit7CisgICAgVkRNX0FEU19FQ0NfUFJFRkVSUkVEX0RPTUFJTl9OT05FID0gMCwgLy8gTm90IHByZWZlcnJlZAorICAgIFZETV9BRFNfRUNDX1BSRUZFUlJFRF9ET01BSU5fV0dDUywgICAgIC8vIFdHKENTKQorICAgIFZETV9BRFNfRUNDX1BSRUZFUlJFRF9ET01BSU5fMXhDUyAgICAgIC8vIDF4KEMySykKK30gdmRtX2Fkc19lY2NfcHJlZmVycmVkX2RvbWFpbl9lbnVtOworCit0eXBlZGVmIGVudW0gCit7CisgICAgVkRNX0FEU19SRVNVTFRfUkVQT1JUX0RJU0FCTEUgPSAwLAorICAgIFZETV9BRFNfUkVTVUxUX1JFUE9SVF9FTkFCTEUsCit9IHZkbV9hZHNfcmVzdWx0X3JlcG9ydF9tb2RlX2VudW07CisKK3R5cGVkZWYgZW51bSAKK3sKKyAgICBWRE1fQURTX1JFU1VMVF9DUyA9IDAsCisgICAgVkRNX0FEU19SRVNVTFRfSU1TX1ZPTFRFLAorICAgIFZETV9BRFNfUkVTVUxUX0lNU19XSUZJLAorICAgIFZETV9BRFNfUkVTVUxUX0lNU19OUiwKKyAgICBWRE1fQURTX1JFU1VMVF9SRUpFQ1QsCisgICAgVkRNX0FEU19SRVNVTFRfSU1TX1ZPREFUQV8xLCAgLy8gVm9EYXRhIG9uIHByb3RvY29sIDEKKyAgICBWRE1fQURTX1JFU1VMVF9JTVNfVk9EQVRBXzIsICAvLyBWb0RhdGEgb24gcHJvdG9jb2wgMgorICAgIFZETV9BRFNfUkVTVUxUX0lNU19WT0RBVEFfMywgIC8vIFZvRGF0YSBvbiBwcm90b2NvbCAzCisgICAgVkRNX0FEU19SRVNVTFRfSU1TX1ZPREFUQV80LCAgLy8gVm9EYXRhIG9uIHByb3RvY29sIDQKK30gdmRtX2Fkc19yZXN1bHRfZW51bTsKKwordHlwZWRlZiBlbnVtIAoreworICAgIFZETV9WSURFT19DQVBBQklMSVRZXzNHVlQgPSAweDAxLAorICAgIFZETV9WSURFT19DQVBBQklMSVRZX1ZJTFRFID0gMHgwMiwKKyAgICBWRE1fVklERU9fQ0FQQUJJTElUWV9WSVdJRkkgPSAweDA0LAorICAgIFZETV9WSURFT19DQVBBQklMSVRZX1ZJTlIgPSAweDA4LAorCisgICAgVkRNX1ZJREVPX0NBUEFCSUxJVFlfTUFYID0gMHhmZiwKK30gdmRtX3ZpZGVvX2NhcGFiaWxpdHlfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgVkRNX1RSS19UUl9UUklHR0VSX01EX1NFRE5fU1RLX0NBTExfU0VUVVAgPSAwLAorICAgIFZETV9UUktfVFJfVFJJR0dFUl9NRF9TRUROX1NUS19DQUxMX1NFVFVQX0JVVF9JQ09OX0NPVUxEX05PVF9EU1BMID0gNAorfSB2ZG1fc3RrX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRU1DU1NfQ0FVU0VfR0xPQkFMX0NIQU5HRV9SRVFVSVJFRCA9IDAsCisgICAgRU1DU1NfQ0FVU0VfVF9XV0FOXzkxMV9USU1FT1VUID0gMSwKKyAgICBFTUNTU19DQVVTRV9NQVggPSAweGZmCit9IHZkbV9lbWNzc19jYXVzZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBWRE1fQVRQX01UX0NBTExfQUxMT1cgPSAwLAorICAgIFZETV9BVFBfTVRfQ0FMTF9SRUpFQ1QgPSAxLAorICAgIFZETV9BVFBfTVRfQ0FMTF9BUFBST1ZBTF9FTkFCTEUgPSAyLAorICAgIFZETV9BVFBfTVRfQ0FMTF9BUFBST1ZBTF9ESVNBQkxFID0gMywKK30gdmRtX2F0cF9tdF9jYWxsX2FwcHJvdmFsX21vZGVfZW51bTsKKworLy9EU0RBLWxpa2UsIEFUK0VWT0xURVNJID0gPG1vZGU+Cit0eXBlZGVmIGVudW0KK3sKKyAgICBWRE1fVFJLX0VOSF9WT0xURV9TSV9PRkYgPSAwLAorICAgIFZETV9UUktfRU5IX1ZPTFRFX1NJX0xFVkVMMSwKKyAgICBWRE1fVFJLX0VOSF9WT0xURV9TSV9MRVZFTDIsCisJVkRNX1RSS19FTkhfVk9MVEVfU0lfTEVWRUwzLAorCVZETV9UUktfRU5IX1ZPTFRFX1NJX05VTQorfSB2ZG1fdHJrX2VuaF92b2x0ZV9zaV9lbnVtOworCisvLytFQUlDOngseCx4LHgseCwsLDxldm9sdGVzaV9mbG93PgordHlwZWRlZiBlbnVtCit7CisgICAgVkRNX0VOSF9WT0xURV9TSV9GTE9XX09GRiA9IDAsCisgICAgVkRNX0VOSF9WT0xURV9TSV9GTE9XX09OCit9IHZkbV9lbmhfdm9sdGVfc2lfZmxvd19lbnVtOworCisjZW5kaWYgLy8gX1ZETV9BVFBfRU5VTVNfSF8KZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3ZkbV9hdHBfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy92ZG1fYXRwX3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExODk3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy92ZG1fYXRwX3N0cnVjdC5oCkBAIC0wLDAgKzEsMTYxMyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEzCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuIAorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgdmRtX2F0cF9zdHJ1Y3QuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgTU9MWQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBpbnRlcmZhY2UgbWVzc2FnZXMgYmV0d2VlbiBWRE0gYW5kIElNUyBQcm94eS4KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICRMb2ckCisgKgorICogMDYgMjEgMjAyMiB2aWpheS5nb3lhbAorICogW01PTFkwMDc2NTA4MV0gW0ZlYXR1cmVEZXZlbG9wbWVudF1bQUxQU0FSMDYzMzYyMzJdIFRNT1VTIDIyUTEgUmVxdWlyZW1lbnQgR2FwIERldmVsb3BtZW50IC0gVUUgTU8gVGltZXIgRjEKKyAqIC4KKyAqCisgKiAwMSAyNyAyMDIyIHRhZmZ5LmNoZW5nCisgKiBbTU9MWTAwODAzMjc4XSBbR2VuOTddW01ENzAwXSBDUiBwYXRjaC1iYWNrIGZyb20gUjMuTVAKKyAqIAkKKyAqIAlbTU9MWTAwNjc4NTUxXVtNT0xZMDA2Nzk1OTJdW01PTFkwMDY4NjM1NV1bTU9MWTAwNjgzMzM0XVtNT0xZMDA3MDEyMjFdW01PTFkwMDcyMTM2NF1bTU9MWTAwNzczNzM4XSBQYXRjaCBCYWNrCisgKgorICogMDEgMTAgMjAyMiBvdF9oaXRlc2guYworICogW01PTFkwMDc3NDE2MV0gW210MjczNV1bQ1MgZUNhbGxdW05HIGVDYWxsXVtwYXRjaCBiYWNrXSBlY2FsbCBwYXRjaCBiYWNrIGZyb20gTlIxNS5SMy5NRDcwMC5NUC5FQ0FsbC5ERVYKKyAqIC4KKyAqCisgKiAxMiAxNiAyMDIxIG90X2hpdGVzaC5jCisgKiBbTU9MWTAwNzc0MTYxXSBbbXQyNzM1XVtDUyBlQ2FsbF1bTkcgZUNhbGxdW3BhdGNoIGJhY2tdIGVjYWxsIHBhdGNoIGJhY2sgZnJvbSBOUjE1LlIzLk1ENzAwLk1QLkVDQWxsLkRFVgorICogLgorICoKKyAqIDEyIDAxIDIwMjAgeXVsb25nLmNoYW5nCisgKiBbTU9MWTAwNTk4ODc1XSBSZXF1ZXN0IGEgU1JWQ0MgQ1MgQ2FsbCBSZXNvdXJjZSBjb250cm9sIGJ5IFZETQorICogCQorICogCUFMUFMwNTQ2MDUwMgorICoKKyAqIDEwIDE0IDIwMjAgY2hlbi13ZWkubGFuCisgKiBbTU9MWTAwNTgwOTk1XSBbVGl0YW45N11JUEMgYzJrIGNhbGwgZmxvdyBjaGFuZ2UgZm9yIFZETSBlbmFibGVkCisgKiB0aXRhbiBjMmsKKyAqCisgKiAwOCAyOCAyMDIwIGNoZW4td2VpLmxhbgorICogW01PTFkwMDU2MjcwOV0gWzVHSFBdW2ZlYXR1cmVdW0RhdGEmQ2FsbF1nYW1lIHNwYWNlIG1vZGUKKyAqIC4KKyAqCisgKiAwOCAxNCAyMDIwIHl1bG9uZy5jaGFuZworICogW01PTFkwMDU0MzIzOV0gW01UNjg4M11bVm9OUl0gcmVxdWVzdCB0byBzdXBwb3J0IEFQSSBmb3IgY2FsbCBwcmVmZXJlbmNlIGNoYW5nZQorICogCQorICogCUFkZCBBdCBjb21tYW5kIEVDTldTCisgKgorICogMDcgMjcgMjAyMCB5dWxvbmcuY2hhbmcKKyAqIFtNT0xZMDA1NDk0NzhdIFtHZW45N11bSEUzLjBdTjNHUFAgb2ZmbG9hZCBvdmVyIGRhdGEgZmVhdHVyZQorICogVm9EYXRhIFZETSBwYXJ0CisgKgorICogMDMgMTYgMjAyMCBjaGVuLXdlaS5sYW4KKyAqIFtNT0xZMDA1MDQxNDZdIFs1Ry1BXVs1RyBNb2RlbbdzZmVhdHVyZV3JrKTGNUextaRKsbGo7gorICogc3NhYyBvcHQKKyAqCisgKiAwMyAxMCAyMDIwIGNoZW4td2VpLmxhbgorICogW01PTFkwMDUwNDE0Nl0gWzVHLUFdWzVHIE1vZGVtt3NmZWF0dXJlXcmspMY1R7G1pEqxsajuCisgKiBzc2FjIG9wdAorICoKKyAqIDEyIDA4IDIwMTkgY2hlbi13ZWkubGFuCisgKiBbTU9MWTAwMzQ2NjQ3XSBbTVQ2Mjk3XVtWRE0vTDRdIGNoYW5nZXMgZm9yIDk3CisgKiBbcGF0Y2ggYmFja102OTk2MjQwLDcxODk5NjcsNzIyMjg0MSw3MjQxMzQ2LDczNjc1NDksODc1NjQzNQorICoKKyAqIDEyIDAyIDIwMTkgY2hlbi13ZWkubGFuCisgKiBbTU9MWTAwMzQ2NjQ3XSBbTVQ2Mjk3XVtWRE0vTDRdIGNoYW5nZXMgZm9yIDk3CisgKiBbcGF0Y2ggYmFja104NTE5OTA4LDg1MTk4MTgsODkxNTI5Niw5MDg2OTg4LDkwODYxNDgsOTA4NTgxNSw5MzE4MjA2LDkzNTcxMDEKKyAqCisgKiAxMSAyMCAyMDE5IGNoZW4td2VpLmxhbgorICogW01PTFkwMDQ2MDYyNl0gW1BldHJ1c11CU1ArXVtRMF1bT3BlcmF0b3IgSU9UXSBFQ0MgY2Fubm90IGJlIGVzdGFibGlzaGVkIGJ5IFJKSUwgYWZ0ZXIgZmxpZ2h0IG1vZGUKKyAqIGZpeCBlWHJlZworICoKKyAqIDExIDEzIDIwMTkgY2hlbi13ZWkubGFuCisgKiBbTU9MWTAwNDU4OTAxXSBbUm9zZV1bUGV0cnVzXUJTUCtdW1EwXVRoZSBDTUNDIHZvbHRlIGNhcmQgd2lsbCByZWdpc3RlciBFIG5ldHdvcmsgYWxsIHRoZSB0aW1lLihPbmNlKQorICogQVQrRU1DST0wCisgKgorICogMTAgMzEgMjAxOSBjaGVuLXdlaS5sYW4KKyAqIFtNT0xZMDA0NTU4MDBdIFtSb3NlXVtQZXRydXNdQlNQK11bUTBdVGhlIERVVCB3aWxsIHBvcHVwIEVDQk0uKE9uY2UpCisgKiBhZGQgK1ZNQ0NNTkMgdXJjIGhhbmRsaW5nIGZvciBWRE0KKyAqCisgKiAxMCAyNSAyMDE5IGNoZW4td2VpLmxhbgorICogW01PTFkwMDQ1NDUyMF0goWlkdW1woWo/P8nzP6VkPz+kVT+ltDEyMKFBbW9kZW0gras/IDEvNQorICogZml4IGVtY3MKKyAqCisgKiAxMCAxNyAyMDE5IGNoZW4td2VpLmxhbgorICogW01PTFkwMDQ0OTU3MV0gW01UNjg4NV1bUGV0cnVzXVtRMF1bTVAxXVtTSTJdW1NRQ11bQ2hpbmFdW1NIXVs0R01NXVtGVF1baFZvTFRFXVtoVm9MVEVfRlRfMi4xXXNpbTEgQzJLIGNhbGwgZmFpbHVyZSBhZnRlciA0RzMKKyAqIGZpeCBBVCtFSU1TQ0ZHLgorICoKKyAqIDA5IDI0IDIwMTkgZGFubnkua3VvCisgKiBbTU9MWTAwNDQwODg2XSBbR2VuOTddIERTREEtbGlrZSBmZWF0dXJlIGNoZWNrIGluCisgKiAuCisgKgorICogMDEgMzAgMjAxOSBrdWFuLXdlaS5jaGVuCisgKiBbTU9MWTAwMzQ2NjQ3XSBbTVQ2Mjk3XVtWRE0vTDRdIGNoYW5nZXMgZm9yIDk3CisgKiBbVk1PTFkuRVZCLlNFUFQuREVWXVtNUERdIHN5bmMgVkRNIENMOiA2OTk1MTc1fjczNDUyNjEKKyAqCisgKiAxMSAwMSAyMDE4IGt1YW4td2VpLmNoZW4KKyAqIFtNT0xZMDAzNDY2NDddIFtNVDYyOTddW1ZETS9MNF0gY2hhbmdlcyBmb3IgOTcKKyAqIFtWTU9MWV1bVkRNXVtNUERdCisgKgorICogMDggMTcgMjAxOCBjaGVuLXdlaS5sYW4KKyAqIFtNT0xZMDAzNDY2NDddIFtNVDYyOTddW1ZETS9MNF0gY2hhbmdlcyBmb3IgOTcKKyAqIGw0YyBjYworICoKKyAqIDA1IDI0IDIwMTggc3p1LWNoaWVoLmNoaXUKKyAqIFtNT0xZMDAzMjgzMTVdIFtJTVNdW0dlbjk1XSBFbWVyZ2VuY3kgUEROIGhhbmRvdmVyCisgKiBFbWVyZ2VuY3kgUEROIGhhbmRvdmVyLgorICoKKyAqIDA1IDIzIDIwMTggeXVsb25nLmNoYW5nCisgKiBbTU9MWTAwMzI3NjcyXSBbVU1PTFlFXVtSb3NlXVtNRVJMT1RdW08xXVtCU1ArXVtJbml0aWFsIFRvb2xdVGhlIGRldmljZSB3YXMgbm90IHJlZ2lzdCBuZXR3b3JrIGFmdGVyIHNvbWUgb3BlcmF0ZS4ob25jZSkKKyAqIFZETSByZWxheSArQ0lFVjoxMDIsWCB0byBBUAorICoKKyAqIDA1IDAzIDIwMTggamVycnkuY2hlbmcKKyAqIFtNT0xZMDAzMjI5MzhdID/vv71I77+9xqVk77+977+977+977+9YD9WT0xURSAtIG5vdGlmeSBDMksgY2FsbCBlbmQgdG8gTDQgKFZETSBwYXJ0KQorICogLltVTU9MWUVdIFNlbmQgQVQrRUhWT0xURT0wLDIgdG8gbm90aWZ5IEw0IEMySyBjYWxsIGVuZCBpbiBvcmRlciBub3QgdG8gYmxvY2sgc3dpdGNoaW5nIHRvIFNSTFRFIG1vZGUKKyAqCisgKiAwMyAyOSAyMDE4IHl1bG9uZy5jaGFuZworICogW01PTFkwMDMxMzk1M10gW1VNT0xZRV1bVkRNXVtWenddW0NETUEtbGVzc11bUENPXSBUcmlnZ2VyIE5XU0VMIHNlYXJjaCBmb3IgVnp3IENETUEgbGVzcyBpZiBVRSBoYXMgcmVjZWl2ZWQgUENPX0ZGMDBIPTUgYW5kIEFQIHJhZGlvIGNvbnRyb2wgb2ZmIGFuZCB0aW1lciBleHBpcmVkIGFuZCBVRSBpcyByb2FtaW5nCisgKiBQQ08gRkYwMEggNSAtIFZETSBtYWluIHBhcnQKKyAqCisgKiAwMyAxMyAyMDE4IHl1bG9uZy5jaGFuZworICogW01PTFkwMDMxMjU5OF0gW0RTQlBdIHBhdGNoIGJhY2sgIkQtU0JQIGVuaGFuY21lbnQgZm9yIGFsbCBtb2RlbSIgdG8gVU1PTFlFIGFuZCBUQzAxLlIzLkRFVgorICogRUZVTi9DRlVOIGNvbnRyb2xsZWQgYnkgTDRCUFdSIChWRE0gcGFydCkKKyAqCisgKiAwMiAyMyAyMDE4IHl1bG9uZy5jaGFuZworICogW01PTFkwMDMwOTM2Ml0gW1Jvc2VdW1N5bHZpYV1bTzFdW0JTUCtdW1RlbGVwaG9ueSBzd2l0Y2hdVGhlIEVDQyBjYWxsIHdpbGwgZGlhbGluZyBhbGwgdGhlIHRpbWUuKE9uY2UpCisgKiAJCisgKiAJaW1wcm92ZSArRU1DU1MgKFZETSBwYXJ0KQorICoKKyAqIDEyIDE4IDIwMTcgeXVsb25nLmNoYW5nCisgKiBbTU9MWTAwMjk2MTc3XSBbTVQ2MjkzXVtHTVNTXSBwcmVmZXIgUkFUIGhhbmRsaW5nIGVuaGFuY2VtZW50CisgKiBBZGQgb25lIHBhcmFtZXRlciBpbiBBVCtFTUNTUy4KKyAqIAkKKyAqIAlBVCtFTUNTUz0xLFs8YXZhaWxhYmxlX3JhdD4sPHByZWZlcl9yYXQ+LDxpc19uZXdfY2FsbD5dCisgKgorICogMTIgMDEgMjAxNyB5dWxvbmcuY2hhbmcKKyAqIFtNT0xZMDAyOTM1MzZdIFtWRE1dW1RNTy1VU11bUlRUXSBSZWRpYWwgdm9pY2Ugb25seSBWb0xURSBFTUNsIHdoZW4gUlRUIFZvTFRFIEVNQyBmYWlsIChWRE0gcGFydCkKKyAqIFRNTyBSVFQgcmVkaWFsCisgKgorICogMTIgMDEgMjAxNyB5dWxvbmcuY2hhbmcKKyAqIFJvbGwgYmFjayBNT0xZMDAyOTExMzAKKyAqCisgKgorICogMTEgMjMgMjAxNyBqZXJyeS5jaGVuZworICogW01PTFkwMDI5MTEzMF0gW1IzXVtWWlcgZmVhdHVyZV0gVlpfUkVRX2U5MTFfMzAyMDMgKEVNQyBjYWxsIHR5cGUpCisgKiAucm9sbGJhY2sgdG8gcmVzb2x2ZSBhdXRvc3luYyBjb25mbGljdAorICoKKyAqIDExIDIxIDIwMTcgamVycnkuY2hlbmcKKyAqIFtNT0xZMDAyODc3NDhdIFs5M11bVE1PXVtWRE1dIERpZ2l0cyBpbXBsZW1lbnRhdGlvbgorICogLltUTU9dW0RpZ2l0c10gbW9kaWZ5IHF1ZXJ5IFRSTiBBVCBjbWQvVVJDIGZvcm1hdAorICoKKyAqIDExIDIxIDIwMTcgeXVsb25nLmNoYW5nCisgKiBbTU9MWTAwMjg4NzY5XSBbWmlvbl1bTjFdW0ZyZWUgVGVzdF1bTUNEXVtURUZUXW1ha2UgYSB2aWx0ZSBjYWxsLHRoZSBwaWN0dXJlIGlzIHVuY2xlYXIoNS81KSAodmRtIHBhcnQpCisgKiBub3RpZnkgRVJSQyBJTVMgY2FsbCBSQVQgKFZETSBwYXJ0KQorICoKKyAqIDExIDA2IDIwMTcgamVycnkuY2hlbmcKKyAqIFtNT0xZMDAyODc3NDhdIFs5M11bVE1PXVtWRE1dIERpZ2l0cyBpbXBsZW1lbnRhdGlvbgorICogLkRpZ2l0cyBpbXBsZW1lbnRhdGlvbiAtIFZETSBwYXJ0CisgKgorICogMDkgMDEgMjAxNyB5dWxvbmcuY2hhbmcKKyAqIFtNT0xZMDAyNzQ4NDNdIFtDRE1BLWxlc3NdW0xSMTJdIG1haW4gQ1IgKFZETSBwYXJ0KQorICogW0xSMTEuTVA1LT5VTU9MWUEgc3luY10gTU9MWTAwMjYyMTcxIFtDRE1BLWxlc3NdW0xSMTJdIG1haW4gQ1IgKFZETSBwYXJ0KQorICoKKyAqIDA4IDMxIDIwMTcgeXVsb25nLmNoYW5nCisgKiBbTU9MWTAwMjc0MTY4XSBbTVQ2MjkzXVtOV1NJTV1bUmVncmVzc2lvbl1bVENfOV8zXzFfM10gVUUgcmV0dXJuIENNRSBlcnJvciBmb3IgQVREMDEyMzQ1Njc4OTA7CisgKiBBTFBTMDM0NjQzNDMgQnVnIGZpeCAoYWxzbyByZWZlcmVuY2UgQXQrQ0ZVTikKKyAqCisgKiAwOCAzMCAyMDE3IHl1bG9uZy5jaGFuZworICogW01PTFkwMDI3NDQxMl0gWzY3NTVdW0U2Nl9EVUdMXVtJVFMjMTE3NF1XaXRob3V0IFNJTSBhbmQgbWFrZSBFbWVyZ2VuY3kgY2FsbDo5MTEsIERVVCB3aWxsIG1ldCBjYWxsIGRyb3AKKyAqIFtMUjExLk1QNS0+VU1PTFlBIHN5bmNdIE1PTFkwMDI1NTY0OSBbNjc1NV1bRTY2X0RVR0xdW0lUUyMxMTc0XVdpdGhvdXQgU0lNIGFuZCBtYWtlIEVtZXJnZW5jeSBjYWxsOjkxMSwgRFVUIHdpbGwgbWV0IGNhbGwgZHJvcAorICoKKyAqIDA4IDI4IDIwMTcgeXVsb25nLmNoYW5nCisgKiBbTU9MWTAwMjc0MDk2XSBbVnpXXSBhZGRsIGNhbGxfZG9tYWluX2NhdXNlIC0gSU1TUC9WRE0vSU1DIHBhcnQKKyAqIFtMUjExLk1QNS0+VU1PTFlBIHN5bmNdIE1PTFkwMDI1NDYxMCBbVnpXXSBhZGRsIGNhbGxfZG9tYWluX2NhdXNlIC0gSU1TUC9WRE0vSU1DIHBhcnQKKyAqCisgKiAwOCAyNCAyMDE3IHl1bG9uZy5jaGFuZworICogW01PTFkwMDI3MjkyM10gW0JpYW5jb11bTjFdW01USyBGVF1bU1JMVEVdW0NUIDZNIENdW0xaXVtSYW5kb21dIGNhbGwgY2FuJ3QgaGFuZyB1cCAoQVRQIHBhcnQpCisgKiAuCisgKgorICogMDggMTcgMjAxNyBqZXJyeS5jaGVuZworICogW01PTFkwMDI3MTIyN10gW1VNT0xZQV0gW1Jvc2VdW1ZpbnNvbl1bTjFdVGhlIEVDQyBjYWxsIHdpbGwgY2FuJ3QgYmUgZGlhbCBvdXQgc3VjY2Vzcy4oNS81KQorICogW0xSMTItPlVNT0xZQSBzeW5jXSBbTU9MWTAwMjU5NzIzXSBzZW5kIGNhbGxfc3RhdHVzX3JlcSB0byBOQVMvQVMgOiBWRE0vQVRQIC0gYWRkIGNhbGxfdHlwZSBpbiBBVCtFVlZTCisgKgorICogMDggMTcgMjAxNyB5dWxvbmcuY2hhbmcKKyAqIFtNT0xZMDAyNzE2NTJdIFtUQ0xdW01JQ0tFWTZUIFRNT10gW0lNUy9Wb0xURV0gLSBMX0lNU19Wb0xURV81MDk0NF8xIC0gZm9yIFZETS9JTVNQIGNoZWNrLWluCisgKiBbTFIxMS5NUDUtPlVNT0xZQSBzeW5jXSBNT0xZMDAyNTA5MTUgW1RDTF1bTUlDS0VZNlQgVE1PXSBbSU1TL1ZvTFRFXSAtIExfSU1TX1ZvTFRFXzUwOTQ0XzEgLSBmb3IgVkRNL0lNU1AgY2hlY2staW4KKyAqCisgKiAwOCAxNSAyMDE3IGplcnJ5LmNoZW5nCisgKiBbTU9MWTAwMjEwMDYxXSBbOTNdW1ZETV0gVU1PTFkgc3luYyB0byBVTU9MWUEKKyAqIC5bTFIxMi0+VU1PTFlBIHN5bmNdIE1PTFkwMDI2NDAwNltMUjEyXSBwYXRjaCBiYWNrIFNraXAgQUNCIGZlYXR1cmUvVkRNIHBhcnQgdG8gTFIxMgorICoKKyAqIDA3IDI1IDIwMTcgamVycnkuY2hlbmcKKyAqIFtNT0xZMDAyNjI5OTJdIFs5M11bVkRNXSBJTVMgcGFyYW1ldGVyIE9UQSB1cGRhdGUKKyAqIC5PUFBPIElNUyBwYXJhbWV0ZXIgT1RBIHVwZGF0ZQorICoKKyAqIDA3IDE5IDIwMTcgamVycnkuY2hlbmcKKyAqIFtNT0xZMDAyMTAwNjFdIFs5M11bVkRNXSBVTU9MWSBzeW5jIHRvIFVNT0xZQQorICogLltMUjExLk1QNSB0byBVTU9MWUFdLiAKKyAqIAlwb3J0aW5nIFtNT0xZMDAyMTUyNjhdIFtWRE1dW0FUVF0gQUNCIGVuYWJsZSwgc2VsZWN0IENTIGRvbWFpbiB0byBkaWFsIHVwIGNhbGwuIFZETSBwYXJ0LgorICogCXBvcnRpbmcgW01PTFkwMDIxNTI3Nl0gW1ZETV1bQVRUXSBBQ0IgZW5hYmxlLCBzZWxlY3QgQ1MgZG9tYWluIHRvIGRpYWwgdXAgY2FsbC4gTlZSQU0gcGFydAorICoKKyAqIDA3IDE5IDIwMTcgamVycnkuY2hlbmcKKyAqIFtNT0xZMDAyMTAwNjFdIFs5M11bVkRNXSBVTU9MWSBzeW5jIHRvIFVNT0xZQQorICogLltMUjExLk1QNSB0byBVTU9MWUFdIHBvcnRpbmcgW01PTFkwMDIwNjM1N10gW1Z6V10gQ2FsbCBQdWxsICYgVklDRSBGZWF0dXJlCisgKgorICogMDYgMjYgMjAxNyBqZXJyeS5jaGVuZworICogW01PTFkwMDI1OTM3MF0gLkVWQURTTU9EIHJlYXJjaAorICogLkVWQURTTU9EIHJlYXJjaAorICoKKyAqIDA0IDI1IDIwMTcgamVycnkuY2hlbmcKKyAqIFtNT0xZMDAyNDIxNDZdIFs5M11bVkRNXSBidWcgZml4CisgKiAucmVuYW1lIEVWQURTTU9EIHBhcmFtZXRlcgorICoKKyAqIDA0IDE5IDIwMTcgamVycnkuY2hlbmcKKyAqIFtNT0xZMDAyNDIxNDZdIFs5M11bVkRNXSBidWcgZml4CisgKiAuZml4IEMySyBFQ1BJCisgKgorICogMDQgMDcgMjAxNyBqZXJyeS5jaGVuZworICogW01PTFkwMDI0MDMxMl0gWzkzXSBDVCBWb0xURSBtb2RlbSByZS1hcmNoaXRlY3R1cmUKKyAqIC5bQ1QgVm9MVEVdICtDSUVWOiAxMDIsMiBmb3IgRUNCTSBtb2RlIG5vIG5lZWQKKyAqCisgKiAwNCAwNyAyMDE3IGplcnJ5LmNoZW5nCisgKiBbTU9MWTAwMjQwMzEyXSBbOTNdIENUIFZvTFRFIG1vZGVtIHJlLWFyY2hpdGVjdHVyZQorICogLltDVCBWb0xURV0gIGhWb0xURSAvIEU5MTEgY29uZmlndXJhdGlvbiwgVkRNIHJlLWFyY2gsIGV4dGVuZCBBVCtFVkFETU9ELCBBVCtFTVZTUworICoKKyAqIDA0IDA1IDIwMTcgamVycnkuY2hlbmcKKyAqIFtNT0xZMDAyMjE1NzJdIFtHZW45M11bTDQgaW50ZWdyYXRpb25dW1ZETV0KKyAqIAkKKyAqIAkuQVQrRVZJVlMgc3VwcG9ydCBmb3IgaW5kaWNhdGluZyBFUlJDIHRvIG9jY3VweSBDUyBzZW1hcGhvcmUgaW4gVm9MVEUvVmlUTEUvVm9XaWZGSS9WaVdpRkkgcGVyaW9kCisgKgorICogMDQgMDUgMjAxNyBqZXJyeS5jaGVuZworICogW01PTFkwMDIyMTU3Ml0gW0dlbjkzXVtMNCBpbnRlZ3JhdGlvbl1bVkRNXQorICogLltNM10gcmVsYXkgY29uZmVyZW5jZSBjYWxsIG51bWJlciBmcm9tIFVBIHRvIENTQ0MKKyAqCisgKiAwNCAwNSAyMDE3IGplcnJ5LmNoZW5nCisgKiBbTU9MWTAwMjIxNTcyXSBbR2VuOTNdW0w0IGludGVncmF0aW9uXVtWRE1dCisgKiAuW00zXSBDTENDUyAucmVtb3ZlIENMQ0MgY25mIGNoZWNrIGZvciB1bnN5bmMgY2FsbChDMkspIGluIG9yZGVyIHRvIGZ1bGZpbGwgQzJLIGNhbGwgd2FpdGluZworICoKKyAqIDA0IDA1IDIwMTcgamVycnkuY2hlbmcKKyAqIFtNT0xZMDAyMjE1NzJdIFtHZW45M11bTDQgaW50ZWdyYXRpb25dW1ZETV0KKyAqIC5bTTNdIFNUSy9VVEsKKyAqCisgKiAwNCAwNSAyMDE3IGplcnJ5LmNoZW5nCisgKiBbTU9MWTAwMjIxNTcyXSBbR2VuOTNdW0w0IGludGVncmF0aW9uXVtWRE1dCisgKiAuW00zXSBFSU1TQ0ZHIC0gVkRNIHBhcnQKKyAqCisgKiAwNCAwNSAyMDE3IGplcnJ5LmNoZW5nCisgKiBbTU9MWTAwMjIxNTcyXSBbR2VuOTNdW0w0IGludGVncmF0aW9uXVtWRE1dCisgKiAuW00zXSAzODAgcmVkaWFsIGFzIEVDQyBieSBWRE0KKyAqCisgKiAwMiAyMCAyMDE3IGplcnJ5LmNoZW5nCisgKiBbTU9MWTAwMjIxNTcyXSBbR2VuOTNdW0w0IGludGVncmF0aW9uXVtWRE1dCisgKiAuK0VWUEMySy4KKyAqCisgKiAwMSAwNiAyMDE3IGplcnJ5LmNoZW5nCisgKiBbTU9MWTAwMjIwNTEwXSBbOTMgUFJFSVRfREVWXVtVTU9MWUFdIFJlbmFtZSBJTVNQIGludGVyZmFjZS9jb250ZXh0L0FQSSB0byBBVFAgYW5kIHJlb3JnIGZvbGRlciBsYXlvdXQKKyAqIHJlbmFtZSBJTVNQIHRvIEFUUCwgQVRQIHJlbGF0ZWQgZmlsZXMuCisgKgorICogMDEgMDUgMjAxNyBqZXJyeS5jaGVuZworICogW01PTFkwMDIyMDUxMF0gWzkzIFBSRUlUX0RFVl1bVU1PTFlBXSBSZW5hbWUgSU1TUCBpbnRlcmZhY2UvY29udGV4dC9BUEkgdG8gQVRQIGFuZCByZW9yZyBmb2xkZXIgbGF5b3V0CisgKiByZW5hbWUgSU1TUCB0byBBVFAuCisgKgorICogMDEgMDUgMjAxNyBjaGludGUuY2hlbgorICogW01PTFkwMDIyMDUxMF0gWzkzIFBSRUlUX0RFVl1bVU1PTFlBXSBSZW5hbWUgSU1TUCBpbnRlcmZhY2UvY29udGV4dC9BUEkgdG8gQVRQIGFuZCByZW9yZyBmb2xkZXIgbGF5b3V0CisgKiBmaXhlZCBWRE0gY29kZWdlbiBmYWlsdXJlCisgKgorICogMTEgMDIgMjAxNiBqZXJyeS5jaGVuZworICogW01PTFkwMDIxMTA3NV0gWzkzXVtWRE1dW0w0IEludGVncmF0aW9uXSBDQyBBVCBjbWQgbWVyZ2UKKyAqIHN5bmMgW01PTFkwMDIwNDE1MF0gVEsgdnp3IGhWb0xURS9FOTExIGltcGxlbWVudGF0aW9uCisgKiAJCisgKiAJLiBBVFAgcGFydC4KKyAqCisgKiAxMSAwMiAyMDE2IGplcnJ5LmNoZW5nCisgKiBbTU9MWTAwMjExMDc1XSBbOTNdW1ZETV1bTDQgSW50ZWdyYXRpb25dIENDIEFUIGNtZCBtZXJnZQorICogc3luYyBbTU9MWTAwMjA0MTUwXSBUSyB2encgaFZvTFRFL0U5MTEgaW1wbGVtZW50YXRpb24KKyAqIAkKKyAqIAlUSyBoVm9MVEU6IEw0L0FUUC9WRE0uCisgKgorICogMTAgMTMgMjAxNiB0aW1vLmtvcnBlbGEKKyAqIFtNT0xZMDAyMDY5MDZdIFtGVF1bTkxdW1ZvTFRFXWhlIGhpZGRlbiBjYWxsZXIgSUQgZG9lcyBub3Qgd29yayB3aGVuIG1ha2UgY2FsbCB0byBhbHBoYW51bWVyaWMgU0lQLVVSSS4KKyAqIEltcGxlbWVudGVkIGhhbmRsaW5nIGZvciBDTElSIHBhcmFtZXRlciByZWNlaXZlZCBpbiBBVCtDRFUgY29tbWFuZC4KKyAqCisgKiAwOCAxMSAyMDE2IGt1YW4td2VpLmNoZW4KKyAqIFtNT0xZMDAxOTY0OTldIFtKYWRlIE4wXVtUS11XYWl0aW5nIGNhbGwgc2NyZWVuIHNob3cgIlVua25vd24iIHdoZW4gcmVjZWl2ZSBhIHdhaXRpbmcgY2FsbCBmcm9tIGhpZGVuIG51bWJlciAtIHZkbS9hdHAgc291cmNlIGZpbGUKKyAqIC4KKyAqCisgKiAwNiAyNyAyMDE2IGxleGVsLnl1CisgKiBbTU9MWTAwMTgzNjExXSBbVlpXX0xDX0lPVF1bUEgxX1ZaV11bUmFkaW9fUHJvdG9jb2xdW05ERVRfTGFiXSBoVm9MVEUgMi4yLjQwX09wdGlvbi1BIGZhaWwKKyAqIEFkZCBBVCtFSUNFPTMgd29ya2Fyb3VuZCBmb3Igc2lsZW50IHJlZGlhbAorICoKKyAqIDA2IDA2IDIwMTYgeWluZ2Z1aS5odW5nCisgKiBbTU9MWTAwMTcxNTEzXSBbUEgxX1ZaV11bam9pbnQtY2FtcF1bR1BTXVtQcml2YWN5IFRlc3RdIFdoZW4gRGV2aWNlJ3MgTG9jYXRpb24gU2V0dGluZyBpcyAnTG9jYXRpb24gT0ZGJywgR1BTIHdvcmsuCisgKiAJCisgKiAJLgorICoKKyAqIDA2IDAxIDIwMTYga3Vhbi13ZWkuY2hlbgorICogW01PTFkwMDE0NjMyN10gW1Z6V10gaFZvTFRFIGltcGxlbWVudGF0aW9uCisgKiB2encgcGF0Y2hiYWNrIC0gTDQsIFZETQorICoKKyAqIDAzIDIzIDIwMTYgeWluZ2Z1aS5odW5nCisgKiBbTU9MWTAwMTY4NTg3XSBbTVQ2NzU1XVtKYWRlIE02XVtNUDNdW0wrV11bSW4taG91c2UgRlRBXVtDYXNlIEZhaWxdW1ZvTFRFXSBUQ18xMS4yLjIgRkFJTAorICogCQorICogCS4KKyAqCisgKiAwMyAwOCAyMDE2IHlpbmdmdWkuaHVuZworICogW01PTFkwMDE2NzkyNF0gW0w0XVtSMTJdIEhhbmRsaW5nIG9mIFNDTSBhdCBWRE0vU0RNL0w0IHBhcnQKKyAqIAkKKyAqIAkuCisgKgorICogMTIgMTYgMjAxNSB4aW53ZWkuY3VpCisgKiBbTU9MWTAwMTUzMjk5XSBbVklMVEVdW0FuaXRlXVt2MzddW0U0MF1bMTIuMjFdRkFJTAorICogLgorICoKKyAqIDEyIDE1IDIwMTUga3Vhbi13ZWkuY2hlbgorICogW01PTFkwMDE1MzE0MF0gW0QxXVtXRkNdW00wXSBXRkMgcHJlZmVyZW5jZSBpZiB3aWZpIG9ubHksIGRpc2FibGUgV0ZDLCBwcm9tcHQgInNlcnZlciB1bnJlYWNoYWJsZSIgd2hlbiBtYWtlIGEgY2FsbC4gLSBWRE0gcGFydAorICogd2lmaSBvbmx5IG1vZGUgaXMgYWN0aXZlIG9ubHkgd2hlbiBBVCtFSU1TV0ZDPTEKKyAqCisgKiAxMiAxNCAyMDE1IGt1YW4td2VpLmNoZW4KKyAqIFtNT0xZMDAxNTAxMDldIFtJTVMgRmVhdHVyZV0gTm9uLVVFIGRldGVjdGFibGUgZW1lcmdlbmN5IGNhbGwgUjEyIGZlYXR1cmUKKyAqIC4KKyAqCisgKiAxMiAwMSAyMDE1IGt1YW4td2VpLmNoZW4KKyAqIFtNT0xZMDAxMzMyNzJdIFtOVFQgRE9DT01PXVtWb0xURV1bSU8wMzAxNDNdIFVFIHNlbmRzIFNNX19BQ1RJVkFURV9QRFBfQ09OVEVYVF9SRVFVRVNUIHVuZXhwZWN0ZWRseQorICogRENNLCAxNTA0OTI5CisgKgorICogMTEgMjYgMjAxNSB5aW5nZnVpLmh1bmcKKyAqIFtNT0xZMDAxMTY5MzhdIFtWT0xURV1bTlRUIERPQ09NT10gcmVxdWlyZW1lbnQgNUEuNy4xLjEgU2VydmljZSBjYXRlZ29yeQorICogCQorICogCS4KKyAqCisgKiAxMSAxMyAyMDE1IGxleGVsLnl1CisgKiBbTU9MWTAwMTQ5MTEyXSBbVkRNXSBOQVMgc2hvdWxkIGtlZXAgc2VhcmNoIG5ldHdvcmsgd2hlbiBJTVMgY2FsbCBvdmVyIFdpRmkgb25nb2luZworICogCQorICogCS4KKyAqCisgKiAwOSAxNCAyMDE1IGxleGVsLnl1CisgKiBbTU9MWTAwMTQxNTczXSBbVU1PTFldW0xSMTFdW1RNT11bSU1TXSBiQ1NGQgorICogCS4KKyAqCisgKiAwOCAyNiAyMDE1IGJlbi5jaGl1CisgKiBbTU9MWTAwMTM4MjE3XSBbVmlMVEVdIE0wIG1pZ3JhdGlvbiBWaUxURSBmZWF0dXJlIEludGVyZmFjZQorICogVmlMVEUgaW50ZXJmYWNlIHBhdGNoIGJhY2sKKyAqCisgKiAwNyAwOSAyMDE1IG5pY2sud2FuZworICogW01PTFkwMDEyNzAwOV0gV0ZDIFBhdGNoIGJhY2sgdG8gVU1PTFktIGludGVyZmFjZSBwYXJ0CisgKiAubW9seSB3ZmMgaW50ZXJmYWNlIHBhdGNoCisgKgorICogMDcgMDkgMjAxNSBuaWNrLndhbmcKKyAqIFtNT0xZMDAxMjcwMDldIFdGQyBQYXRjaCBiYWNrIHRvIFVNT0xZLSBpbnRlcmZhY2UgcGFydAorICogCS5qYWRlIGludGVyZmFjZSBzeW5jCisgKgorICogMDYgMTEgMjAxNSBsZXhlbC55dQorICogW01PTFkwMDA4NTcwM10gW1ZETV1bTVQ2MjkxXSBTeW5jIE1PTFkgdG8gVU1PTFkKKyAqIAlbTU9MWTAwMTE0NzE4XSBbVkRNXVtWb2x1bnRlZXIgUGF0Y2hdIFBhdGNoIGJhY2sgZm9yIE1PTFkgdHJ1bmsKKyAqIAlBVERDIGZvciBjb25mZXJlbmNlIGNhbGwKKyAqCisgKiAwNiAxMCAyMDE1IGVkd2luLmxpdQorICogW01PTFkwMDEyMDIxOV0gTWVyZ2UgTU9MWSBBVFAgY2hhbmdlcyB0byBVTU9MWQorICogCS4KKyAqCisgKiAwNiAwNSAyMDE1IGVkd2luLmxpdQorICogQVRQIHRvIFVNT0xZLgorICoKKyAqIDA0IDA5IDIwMTUgbGV4ZWwueXUKKyAqIFtNT0xZMDAxMDY0NTldIFtNVDYyOTFdW0lNU10gVm9MVEUgY2FsbCBldmVudCBkb3dubG9hZAorICogCUlNUyBDYWxsIEV2ZW50IERvd25sb2FkCisgKgorICogMDMgMTYgMjAxNSBsZXhlbC55dQorICogW01PTFkwMDA4NTcwM10gW1ZETV1bTVQ2MjkxXSBTeW5jIE1PTFkgdG8gVU1PTFkKKyAqIAlbTU9MWTAwMDgwODYwXSBmaXggdHlwbzogcmVwbGFjZSB2ZG1fYXRwX3NuZF9hZHNfc3RhdXNfcmVxX3N0cnVjdCBieSB2ZG1fYXRwX3NuZF9hZHNfc3RhdHVzX3JlcV9zdHJ1Y3QKKyAqIAlbTU9MWTAwMDkzNjQzXSBbSzJdW0NNQ0NdW1ZvTFRFXVtOUy1JT1RdW1ImU11bVEMgNS4yLjkuMl1bQjMtRTM4XVVFIEdTTT8/Pz8/P15MVEU/Pz8/Pz8/Pz9gPyBmYWlsCisgKgorICogMDIgMjQgMjAxNSBsZXhlbC55dQorICogW01PTFkwMDA4NTcwM10gW1ZETV1bTVQ2MjkxXSBTeW5jIE1PTFkgdG8gVU1PTFkKKyAqIAlbTU9MWTAwMDk1OTcyXSBbQ01DQyBWb0xURV1bVkRNXSBBZGQgIjQgdG8gMjNHIiBhbmQgIjIzRyB0byA0IiBmb3IgSVJBVCBldmVudC4KKyAqCisgKiAxMiAwNSAyMDE0IGxleGVsLnl1CisgKiBbTU9MWTAwMDg1NzAzXSBbVkRNXVtNVDYyOTFdIFN5bmMgTU9MWSB0byBVTU9MWQorICogCVtNT0xZMDAwODU3MTddIFtWb0xURV0gQW5kcm9pZCBMIHJlbGVhc2UgVm9MVEUgcmVmYWN0b3J5IGZvciBWRE0gYW5kIEFUUAorICoKKyAqIDExIDI2IDIwMTQgbGV4ZWwueXUKKyAqIFtNT0xZMDAwODU3MDNdIFtWRE1dW01UNjI5MV0gU3luYyBNT0xZIHRvIFVNT0xZCisgKiAJW01PTFkwMDA4MzU0Ml0gW0w0XWFkZCBhIG5ldyBpbnRlcm5hbCBVUkMgdG8gbm90aWZ5IFZETSBTVEsgY2FsbCBudW1iZXIgKCtFU1RLQ05VTSkKKyAqIAlWRE0gcGFydAorICoKKyAqIDExIDA1IDIwMTQgbGV4ZWwueXUKKyAqIFtNT0xZMDAwODMwMzVdIFtWRE1dIElNUyBjYWxsIGluZm9ybWF0aW9uCisgKiAJLgorICoKKyAqIDA5IDAyIDIwMTQgYWxsYW4ua2UKKyAqIFtNT0xZMDAwNzUyNDVdIENoYW5nZSB0aGUgYWxnb3JpdGhtIG9mIEFEUyBTU0FDIHRpbWVyIGNvbnRyb2wgYW5kIGluY2x1ZGUgSU1TVm9QUyBhcyB0aGUgY29uZGl0aW9ucyBmb3IgZG9tYWluIHNlbGVjdGlvbiB3aGVuIGRpYWxpbmcgZW1lcmdlbmN5IGNhbGwKKyAqCisgKiAwNCAyNSAyMDE0IHRlaHVhbmcubGl1CisgKiBbTU9MWTAwMDYzNTM4XSBbNjI5MEUyXVtWb0xURV1bVkRNXSBTdXBwb3J0IFZvTFRFIEdlbWluaSBhcmNoaXRlY3R1cmUKKyAqIG5vdCB1c2UgY29tcGlsZSBvcHRpb25zIGZvciBWb0xURSBHZW1pbmkgaW50ZXJmYWNlIHN0cnVjdHVyZXMgZGVmaW5pdGlvbgorICoKKyAqIDA0IDIzIDIwMTQgdGVodWFuZy5saXUKKyAqIFtNT0xZMDAwNjM1MzhdIFs2MjkwRTJdW1ZvTFRFXVtWRE1dIFN1cHBvcnQgVm9MVEUgR2VtaW5pIGFyY2hpdGVjdHVyZQorICogQ2hlY2sgaW4gVm9MVEUrR2VtaW5pIHJlbGF0ZWQgaW50ZXJmYWNlcyBmb3IgVkRNLCBBVFAsIEw0QywgRVZBTCwgYW5kIEVSUkMKKyAqCisgKiAwNCAxMSAyMDE0IHRlaHVhbmcubGl1CisgKiBbTU9MWTAwMDYyMzI3XSBbNjI5MEUyXVtWb0xURV1bVkRNXSBTdXBwb3J0IFNUS0NBTEwgaW4gQ1MgZG9tYWluCisgKiAuCisgKgorICogMDQgMDkgMjAxNCBqaW5naGFuLndhbmcKKyAqIFtNT0xZMDAwNjIwOTFdIFtJTVNdW1ZvTFRFXSBDaGVjayBpbiBTVEtDQUxMIHBhcnQgZm9yIFZETSBUUksKKyAqIC4KKyAqCisgKiAwMiAyMCAyMDE0IGJlbmphbWluLmt1bworICogW01PTFkwMDA1NjQ0MV0gVXNlIHN0cmluZyBpbnN0ZWFkIGVudW0gZm9yIGNhbGwgdHlwZSBpbiBDUklORworICogLgorICoKKyAqIDAyIDE3IDIwMTQgYmVuamFtaW4ua3VvCisgKiBbTU9MWTAwMDU2MjUzXSBNZXJnZSBTUlZDQyBpbXBsZW1lbnRhdGlvbiBmcm9tIHBlcnNvbmFsIENCciB0byBNT0xZIHRydW5rCisgKiBTUlZDQworICoKKyAqIDAyIDE0IDIwMTQgYmVuamFtaW4ua3VvCisgKiBbTU9MWTAwMDU1ODg1XSBbNjI5MEUyXVtWb0xURV1bTVdDXSBpbmNvcnJlY3QgVVJDIG9kZXIgb2YgVkRNIGFuZCBBVFAKKyAqICtDUklORworICoKKyAqIDEyIDEwIDIwMTMgdmVuZF9lZHdpbi5saXUKKyAqIEFUUC4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfVkRNX0FUUF9TVFJVQ1RfSF8KKyNkZWZpbmUgX1ZETV9BVFBfU1RSVUNUX0hfCisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfZGVmcy5oIgorI2luY2x1ZGUgImltc19jb21tb25fZGVmLmgiCisjaW5jbHVkZSAidmRtX2ltY19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJ2ZG1fYXRwX2VudW1zLmgiCisjaW5jbHVkZSAicHNfcHVibGljX2VudW0uaCIKKyNpbmNsdWRlICJsM19pbmNfZW51bXMuaCIKKyNpbmNsdWRlICJzaW1fcHVibGljX2VudW0uaCIKKyNpbmNsdWRlICJtY2RfbDNfaW5jX3N0cnVjdC5oIgorI2luY2x1ZGUgImMya19pcmF0X21zZ19zdHJ1Y3QuaCIKKyNpbmNsdWRlICJsNGJfdmRtX3N0cnVjdC5oIgorI2luY2x1ZGUgImw0X3ZkbV9lbnVtLmgiCisKKyNkZWZpbmUgVkRNX0FUX0NNRF9UT19NRF9OQU1FX0xFTiAzMgorI2RlZmluZSBWRE1fQVRfQ01EX1RPX01EX1ZBTFVFX0xFTiA1MTIKKwordHlwZWRlZiBlbnVtIAoreworICAgIFZETV9JUkFUX1NUQVRVU19JRExFID0gMCwKKyAgICBWRE1fSVJBVF9TVEFUVVNfT05HT0lORworfSB2ZG1faXJhdF9zdGF0dXNfZW51bTsKKworCit0eXBlZGVmIGVudW0KK3sKKyAgICBBRFNfUFJPR1JFU1NfQVRURU1QVCA9IDAsCisgICAgQURTX1BST0dSRVNTX1NVQ0NFU1MKK30gYWRzX2luZGljYXRpb25fcHJvZ3Jlc3NfZW51bTsKKworCit0eXBlZGVmIGVudW0KK3sKKyAgICBBRFNfRE9NQUlOX0NTID0gMCwKKyAgICBBRFNfRE9NQUlOX0lNUworfSBhZHNfaW5kaWNhdGlvbl9kb21haW5fZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgVkRNX0FEU19DQUxMX1RZUEVfSU5WQUxJRCA9IDAsCisgICAgVkRNX0FEU19WT0lDRV9PVkVSX0NTLAorICAgIFZETV9BRFNfVk9JQ0VfT1ZFUl9MVEUsCisgICAgVkRNX0FEU19WSURFT19PVkVSX0xURQorfXZkbV9hZHNfY2FsbF90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEFQX0NBTExfU1RBVEVfSURMRSA9IDAsCisgICAgQVBfQ0FMTF9TVEFURV9SSU5HUklOR19GT1JfTVRfT05MWSwKKyAgICBBUF9DQUxMX1NUQVRFX09GRkhPT0ssCit9IGFwX2NhbGxfc3RhdGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgQVBfQ0FMTF9SRUFTT05fTk9STUFMID0gMCwKKyAgICBBUF9DQUxMX1JFQVNPTl9TSUxFTlRfUkVESUFMLAorfSBhcF9jYWxsX3JlYXNvbl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBBUF9DQUxMX1RZUEVfVk9JQ0UgPSAwLAorICAgIEFQX0NBTExfVFlQRV9WSURFTywKK30gYXBfY2FsbF90eXBlX2VudW07CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvbW1vbiBBVCBjb21tYW5kIHN0cnVjdHVyZQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogIHRlbXAuIGZvciBVVCBieSBNU0MKKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgIGF0X2NtZF9zdHJpbmdbMTI4XTsKKyAgICAKK30gYXRfY21kX2J1Zl9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QgCit7ICAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBpbXNfcmVzdWx0X2NvZGVfZW51bSAgICAgICAgICAgIHJlc3VsdDsKKyAgICBpbXNfZXJyX2lkX2VudW0gICAgICAgICAgICAgICAgIGVycl9pZDsKK30gdmRtX2F0cF9jb21tb25fYXRfcnNwX3N0cnVjdDsKKworCit0eXBlZGVmIHZkbV9hdHBfY29tbW9uX2F0X3JzcF9zdHJ1Y3QgdmRtX2F0cF9jb21tb25fYXRfY25mX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBjYWxsX2lkOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgIGVjcGlfdHlwZTsKKyAgICBpbXNfZWNwaV9pbmZvX3N0cnVjdCAgICBlY3BpX2luZm87Cit9IHZkbV9hdHBfY29tbW9uX2NzX2NjX2VwY2lfaW5kX3N0cnVjdDsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVEQ8bnVtPiBvciBBVEQ8bnVtPjsKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBkaWFsX251bVtNQVhfQ0NfQVREX05VTV9MRU5dOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgIGlzX3ZpZGVvX2NhbGw7Cit9IHZkbV9hdHBfY21kX2RpYWxfaW5kX3N0cnVjdDsKKwordHlwZWRlZiB2ZG1fYXRwX2NvbW1vbl9hdF9yc3Bfc3RydWN0IHZkbV9hdHBfY21kX2RpYWxfcnNwX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrQ0RWPTxkaWFsX251bT4sLCwsLCxzbworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7ICAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBkaWFsX251bVtNQVhfQ0NfQVREX05VTV9MRU5dOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgIHNvOworfSB2ZG1fYXRwX2NtZF9jZHZfaW5kX3N0cnVjdDsKKwordHlwZWRlZiB2ZG1fYXRwX2NvbW1vbl9hdF9yc3Bfc3RydWN0IHZkbV9hdHBfY21kX2Nkdl9yc3Bfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtDRFU9MSw8dXJpPgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgICAgICAgICAgICAgIGRpYWxfdXJpW01BWF9DQ19DRFVfVVJJX0xFTl07CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgdmlkZW9fY2FsbDsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBjbGlyOworfSB2ZG1fYXRwX2NtZF9kaWFsX3VyaV9pbmRfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0IAoreyAgCisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAgaW1zX3Jlc3VsdF9jb2RlX2VudW0gICAgICAgICAgICByZXN1bHQ7CisgICAgaW1zX2Vycl9pZF9lbnVtICAgICAgICAgICAgICAgICBlcnJfaWQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICBjYWxsX2lkOworfSB2ZG1fYXRwX2NtZF9kaWFsX3VyaV9yc3Bfc3RydWN0OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK1NUS0NBTEw9MCAKKyAqIE5PVEU6IFRoaXMgQVQgY29tbWFuZCBpcyBmb3J3YXJkZWQgZnJvbSBBVFAgdG8gVkRNLgorICogTk9URTogRm9yIEFUX1NUS0NBTEw9eCB3aGVyZSB4IT0wLCB0aGlzIEFUIGNvbW1hbmQgaXMgbm90IGZvcndhcmRlZCB0byBWRE0uCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBzYXRfdGVybWluYWxfcmVzX2VudW0gdHI7IC8vIG8gb3IgNAorICAgIGthbF91aW50OCBhZGRpdGlvbmFsX2luZm87Cit9IHZkbV9hdHBfY21kX3N0a19jYWxsX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7ICAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBwcm94eV9jbWRfcmVzdWx0X2VudW0gICAgICAgICAgICByZXN1bHQ7CisgICAgYXRwX2Vycl9pZF9lbnVtICAgICAgICAgICAgICAgICAgZXJyX2lkOworfSB2ZG1fYXRwX2NtZF9zdGtfY2FsbF9yc3Bfc3RydWN0OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK0VWQURTTU9EPTxtb2RlPiw8ZWNjX3ByZWZlcnJlZF9kb21haW4+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIHZkbV9hZHNfbW9kZV9lbnVtICAgICAgICAgICAgICAgICAgIGFkc19tb2RlOworICAgIHZkbV9hZHNfZWNjX3ByZWZlcnJlZF9kb21haW5fZW51bSAgIGFkc19lY2NfcHJlZmVycmVkX2RvbWFpbjsKK30gdmRtX2F0cF9jbWRfYWRzX21vZGVfaW5kX3N0cnVjdDsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtFVkFEU1JFUD08bW9kZT4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreyAgCisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAgdmRtX2Fkc19yZXN1bHRfcmVwb3J0X21vZGVfZW51bSAgIGFkc19yZXN1bHRfcmVwb3J0X21vZGU7Cit9IHZkbV9hdHBfY21kX2Fkc19yZXN1bHRfcmVwb3J0X2luZF9zdHJ1Y3Q7CisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUREU8bnVtPjsKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBkaWFsX251bVtNQVhfQ0NfQVREX05VTV9MRU5dOworfSB2ZG1fYXRwX2NtZF9kaWFsX2VtZXJnX2luZF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUREVSPTxudW0+LDxjYWxsX2lkPgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgICAgICAgICAgICAgIGRpYWxfbnVtW01BWF9DQ19BVERfTlVNX0xFTl07CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgY2FsbF9pZDsKK30gdmRtX2F0cF9jbWRfZGlhbF9lbWVyZ19yZXRyeV9pbmRfc3RydWN0OworCit0eXBlZGVmIHZkbV9hdHBfY29tbW9uX2F0X3JzcF9zdHJ1Y3QgdmRtX2F0cF9jbWRfZGlhbF9lbWVyZ19yc3Bfc3RydWN0OworCit0eXBlZGVmIHZkbV9hdHBfY29tbW9uX2F0X2NuZl9zdHJ1Y3QgdmRtX2F0cF9jc19jY19lbWVyZ19jYWxsX2NuZl9zdHJ1Y3Q7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVRERjxkaWFsX3N0cmluZz4sPGZyb21fbGluZT5bO10KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBkaWFsX251bVtNQVhfQ0NfQVREX05VTV9MRU5dOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgIGZyb21fbGluZVtJTUNfTUFYX1VSSV9MRU5HVEhdOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgIGlzX3ZpZGVvX2NhbGw7Cit9IHZkbV9hdHBfY21kX2RpYWxfZnJvbV9saW5lX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgdmRtX2F0cF9jb21tb25fYXRfcnNwX3N0cnVjdCB2ZG1fYXRwX2NtZF9kaWFsX2Zyb21fbGluZV9yc3Bfc3RydWN0OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK0VDQUxMUFVMTAorICogVGhpcyBjb21tYW5kIGlzIHVzZWQgdG8gZGlhbCB3aXRoIGNhbGwgcHVsbAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgICAgICAgICAgICAgIGRpYWxfdXJpW01BWF9DQ19DRFVfVVJJX0xFTl07CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgdmlkZW9fY2FsbDsKK30gdmRtX2F0cF9jbWRfZGlhbF9jYWxsX3B1bGxfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgCit7ICAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBpbXNfcmVzdWx0X2NvZGVfZW51bSAgICAgICAgICAgIHJlc3VsdDsKKyAgICBpbXNfZXJyX2lkX2VudW0gICAgICAgICAgICAgICAgIGVycl9pZDsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgIGNhbGxfaWQ7Cit9IHZkbV9hdHBfY21kX2RpYWxfY2FsbF9wdWxsX3JzcF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK0VXRkNQPTxwcm9maWxlPjsKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICB3ZmNfcHJvZmlsZV9lbnVtIHdmY19wcm9maWxlOworfSB2ZG1fYXRwX2NtZF93ZmNfcHJvZmlsZV9pbmRfc3RydWN0OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK0VWUEMySz08aXNfdm9pY2VfcHJlZmVyX2Myaz4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfYm9vbCBpc192b2ljZV9wcmVmZXJfYzJrOworfSB2ZG1fYXRwX2NtZF92b2ljZV9jYWxsX3ByZWZlcl9jMmtfaW5kX3N0cnVjdDsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiArRUNQSTo8Y2FsbF9pZD4sPG1zZ190eXBlPTEzMD4sPGlzX2lidD4sPGlzX3RjaD4sPGRpcj4sCisgKiAgICAgICA8Y2FsbF9tb2RlPixbPG51bWJlcj4sPHR5cGU+XSwiPHBhdSI+LFs8ZGlzY19jYXVzZT5dCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBjYWxsX2lkOworICAgIGltc19lY3BpX2luZm9fc3RydWN0ICAgIGVjcGlfaW5mbzsKK30gdmRtX2F0cF9zbmRfZWNwaV9tb19jYWxsX2lkX2FsbG9jX3JlcV9zdHJ1Y3Q7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogK0VDUEk6PGNhbGxfaWQ+LDxtc2dfdHlwZT0wPiw8aXNfaWJ0Piw8aXNfdGNoPiw8ZGlyPiwKKyAqICAgICAgIDxjYWxsX21vZGU+LFs8bnVtYmVyPiw8dHlwZT5dLCI8cGF1PiIsWzxkaXNjX2NhdXNlPl0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreyAgCisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgY2FsbF9pZDsKKyAgICBpbXNfZWNwaV9pbmZvX3N0cnVjdCAgICBlY3BpX2luZm87Cit9IHZkbV9hdHBfc25kX2VjcGlfbXRfY2FsbF9zZXR1cF9yZXFfc3RydWN0OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICtFQ1BJOjxjYWxsX2lkPiw8bXNnX3R5cGU9MTMzPiw8aXNfaWJ0Piw8aXNfdGNoPiw8ZGlyPiwKKyAqICAgICAgIDxjYWxsX21vZGU+LFs8bnVtYmVyPiw8dHlwZT5dLCI8cGF1PiIsWzxkaXNjX2NhdXNlPl0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreyAgCisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGNhbGxfaWQ7CisgICAgaW1zX2VjcGlfaW5mb19zdHJ1Y3QgICAgICAgIGVjcGlfaW5mbzsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgaXNfZmFyX2VuZDsKK30gdmRtX2F0cF9zbmRfZWNwaV9jYWxsX3JlbGVhc2VfcmVxX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogK0VDUEk6PGNhbGxfaWQ+LDxtc2dfdHlwZT0xMzc+LDxpc19pYnQ+LDxpc190Y2g+LDxkaXI+LAorICogICAgICAgPGNhbGxfbW9kZT4sWzxudW1iZXI+LDx0eXBlPl0sIjxwYXU+IixbPGRpc2NfY2F1c2U+XQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7ICAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgY2FsbF9pZDsKKyAgICBpbXNfZWNwaV9pbmZvX3N0cnVjdCAgICAgICAgZWNwaV9pbmZvOworfSB2ZG1fYXRwX3NuZF9lY3BpX3J0dF9yZWRpYWxfcmVxX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogK0VDUEk6PGNhbGxfaWQ+LDxtc2dfdHlwZSE9MCwxMzAsMTMzPiw8aXNfaWJ0Piw8aXNfdGNoPiw8ZGlyPiwKKyAqICAgICAgIDxjYWxsX21vZGU+LFs8bnVtYmVyPiw8dHlwZT5dLCI8cGF1PiIsWzxkaXNjX2NhdXNlPl0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgdmRtX2F0cF9jb21tb25fY3NfY2NfZXBjaV9pbmRfc3RydWN0IHZkbV9hdHBfY3NfY2NfZWNwaV90cmFuc2xhdGVfaW5kX3N0cnVjdDsKKwordHlwZWRlZiB2ZG1fYXRwX2NzX2NjX2VjcGlfdHJhbnNsYXRlX2luZF9zdHJ1Y3QgdmRtX2F0cF9jc19jY19lY3BpX3RyYW5zbGF0ZV9yc3Bfc3RydWN0OwordHlwZWRlZiB2ZG1fYXRwX2NzX2NjX2VjcGlfdHJhbnNsYXRlX2luZF9zdHJ1Y3QgdmRtX2F0cF9jMmtfY2NfZWNwaV90cmFuc2xhdGVfcnNwX3N0cnVjdDsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtDSExEPVs8bj5dCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9pZDsKKyAgICBpbXNfY2FsbF9yZWxhdGVkX3NzX3R5cGVfZW51bSAgIG9wY29kZTsKKyAgICBpbXNfY2NfbW9fZGlzY29ubmVjdF9jYXVzZV9lbnVtIGNhdXNlOworfSB2ZG1fYXRwX2NtZF9jYWxsX3JlbGF0ZWRfc3NfaW5kX3N0cnVjdDsKKwordHlwZWRlZiB2ZG1fYXRwX2NvbW1vbl9hdF9yc3Bfc3RydWN0IHZkbV9hdHBfY21kX2NhbGxfcmVsYXRlZF9zc19yc3Bfc3RydWN0OworCit0eXBlZGVmIHZkbV9hdHBfY21kX2NhbGxfcmVsYXRlZF9zc19pbmRfc3RydWN0IHZkbV9hdHBfY3NfY2NfY2FsbF9yZWxhdGVkX3NzX3JlcV9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUSAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7ICAKKyAgICBMT0NBTF9QQVJBX0hEUiAKK30gdmRtX2F0cF9jbWRfaGFuZ3VwX2FsbF9pbmRfc3RydWN0OworCit0eXBlZGVmIHZkbV9hdHBfY29tbW9uX2F0X3JzcF9zdHJ1Y3QgdmRtX2F0cF9jbWRfaGFuZ3VwX2FsbF9yc3Bfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtFQ0hVUD08Y2FsbF9pZD4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreyAgCisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAga2FsX3VpbnQ4IGNhbGxfaWQ7Cit9IHZkbV9hdHBfY21kX2ZvcmNlX2hhbmd1cF9pbmRfc3RydWN0OworCit0eXBlZGVmIHZkbV9hdHBfY29tbW9uX2F0X3JzcF9zdHJ1Y3QgdmRtX2F0cF9jbWRfZm9yY2VfaGFuZ3VwX3JzcF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvbWJpbmUgaW1zX2NjX2VhaWNfaW5mb19zdHJ1Y3Qgd2l0aCBsNGJfY2NfZWFpY19pbmZvX3N0cnVjdAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggbnVtYmVyW01BWF9DQ19FQ1BJX05VTV9MRU5dOworICAgIGltc19jYWxsX3R5cGVfZW51bSBjYWxsX3R5cGU7CisgICAgaW1zX2NhbGxfbW9kZV9lbnVtIGNhbGxfbW9kZTsKKyAgICBrYWxfdWludDggcmVkaXJlY3RfbnVtW01BWF9DQ19FQ1BJX05VTV9MRU5dOyAgICAgICAgLy8gQ1MgQ0MKKyAgICBrYWxfdWludDggZGlnaXRfdG9fbGluZV9udW1iZXJbSU1DX01BWF9VUklfTEVOR1RIXTsgLy8gSU1TIENDCit9IHZkbV9hdHBfY2NfZWFpY19pbmZvX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogK0VBSUM6IDxjYWxsX2lkPiw8bnVtYmVyPiw8dHlwZT4sPGNhbGxfbW9kZT4sPHNlcV9ubz5bLDxyZWRpcmVjdF9udW0+Wyw8ZGlnaXRfdG9fbGluZV9udW0+XV0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreyAgCisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICBjYWxsX2lkOworICAgIHZkbV9hdHBfY2NfZWFpY19pbmZvX3N0cnVjdCBlYWljX2luZm87CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICBzZXFfbm87CisgICAgdmRtX2VuaF92b2x0ZV9zaV9mbG93X2VudW0gICAgICBldm9sdGVzaV9mbG93OworfSB2ZG1fYXRwX3NuZF9tdF9jYWxsX2FwcHJvdmVfcmVxX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrRUFJQz08bW9kZT4sPGNhbGxfaWQ+LDxzZXFfbm8+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9pZDsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcV9ubzsKKyAgICB2ZG1fYXRwX210X2NhbGxfYXBwcm92YWxfbW9kZV9lbnVtICAgICAgICAgICAgICAgICAgICAgIGVhaWNfbW9kZTsKKyAgICBpbXNfY2NfZWFpY19yZXN1bHRfZW51bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhaWNfcmVzdWx0OworICAgIGF0cF9jbWRfbW9kZV9lbnVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kX21vZGU7CisgICAga2FsX3VpbnQxNiByZWplY3RfY2F1c2U7Cit9IHZkbV9hdHBfY21kX210X2NhbGxfYXBwcm92ZV9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSCisgICAgYXRwX2NtZF9tb2RlX2VudW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRfbW9kZTsKKyAgICBpbXNfcmVzdWx0X2NvZGVfZW51bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAgICBpbXNfZXJyX2lkX2VudW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycl9pZDsKKyAgICB2ZG1fYXRwX210X2NhbGxfYXBwcm92YWxfbW9kZV9lbnVtICAgICAgICAgICAgICAgICAgICAgIGVhaWNfbW9kZTsKK30gdmRtX2F0cF9jbWRfbXRfY2FsbF9hcHByb3ZlX3JzcF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUQQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7ICAKKyAgICBMT0NBTF9QQVJBX0hEUiAKK30gdmRtX2F0cF9jbWRfbXRfY2FsbF9hY2NlcHRfaW5kX3N0cnVjdDsKKwordHlwZWRlZiB2ZG1fYXRwX2NvbW1vbl9hdF9yc3Bfc3RydWN0IHZkbV9hdHBfY21kX210X2NhbGxfYWNjZXB0X3JzcF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFZUUz08ZHRtZj4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreyAgCisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAga2FsX3VpbnQ4ICAgZGlnaXQ7Cit9IHZkbV9hdHBfY21kX2R0bWZfaW5kX3N0cnVjdDsKKwordHlwZWRlZiB2ZG1fYXRwX2NvbW1vbl9hdF9yc3Bfc3RydWN0IHZkbV9hdHBfY21kX2R0bWZfcnNwX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrRVZUUz08YWN0aW9uPiw8ZGlnaXQ+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIGltc19kdG1mX2FjdGlvbl9lbnVtICAgICAgICAgICAgYWN0aW9uOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgZGlnaXQ7Cit9IHZkbV9hdHBfY21kX2V4dF9kdG1mX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgdmRtX2F0cF9jb21tb25fYXRfcnNwX3N0cnVjdCB2ZG1fYXRwX2NtZF9leHRfZHRtZl9yc3Bfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtDRUVSCisgKiArQ0VFUjo8Y2F1c2U+LDxyZXBvcnQ+CisgKiBOT1RFOiBBVFAgbWFwcyA8Y2Vlcl9jYXVzZT4gKGludCkgdG8gPHJlcG9ydD4gKGNoYXIgc3RyaW5nKQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7ICAKKyAgICBMT0NBTF9QQVJBX0hEUiAKK30gdmRtX2F0cF9jbWRfZXh0X2Vycm9yX3JlcG9ydF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCAKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGltc19leHRfZXJyb3JfcmVwb3J0X2VudW0gICAgICAgY2Vlcl9jYXVzZTsKKyAgICBpbXNfcmVzdWx0X2NvZGVfZW51bSAgICAgICAgICAgIHJlc3VsdDsKKyAgICBpbXNfZXJyX2lkX2VudW0gICAgICAgICAgICAgICAgIGVycl9pZDsKKyAgICBrYWxfdWludDE2ICAgICAgICAgICAgICAgICAgICAgIGVjY19jYXRlZ29yeTsKK30gdmRtX2F0cF9jbWRfZXh0X2Vycm9yX3JlcG9ydF9yc3Bfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtDU1RBOjx0eXBlPgorICogTk9URTogQVRQIG11bHRpY2FzdHMgdGhpcyBjb21tYW5kIHRvIFZETSAod2l0aG91dCByc3ApIGFuZCBBVENJIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgICAgICB0eXBlOworfSB2ZG1fYXRwX2NtZF9zZWxlY3RfdHlwZV9vZl9hZGRyX2luZF9zdHJ1Y3Q7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrQ0xDQworICogK0NMQ0M6PGlkeD4sPGRpcj4sPHN0YXQ+LDxtb2RlPiw8bXB0eT4sWzxudW1iZXI+LDx0eXBlPlssPGFscGhhPlssPHByaW9yaXR5PlssPENMSV92YWxpZGl0eT5dXV1dLi4uIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiB2ZG1faW1jX2ltc19jY19saXN0X2N1cnJlbnRfY2FsbHNfcmVxX3N0cnVjdCAKKyAgICAgICAgdmRtX2F0cF9jbWRfbGlzdF9jdXJyZW50X2NhbGxzX2luZF9zdHJ1Y3Q7CisKKy8vYXZvaWQgbW9kaWZ5aW5nIGltc19pbnRlcmZhY2VfbWQuaCwgZGVjbGFyZSBuZXcgc3RydWN0dXJlIGZvciBDUyBDTENDCit0eXBlZGVmIHN0cnVjdCB7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgY2FsbF9pZDsKKyAgICBpbXNfY2FsbF9kaXJfZW51bSAgICAgICBkaXI7CisgICAgaW1zX2NhbGxfc3RhdGVfZW51bSAgICAgY2FsbF9zdGF0ZTsKKyAgICBpbXNfY2FsbF9tb2RlX2VudW0gICAgICBjYWxsX21vZGU7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgbXB0eTsgIC8vIEZBTFNFOiBpcyBOT1QgY29uZmVyZW5jZSBjYWxsLCBUUlVFOiBpcyBjb25mZXJlbmNlIGNhbGwKKyAgICBpbXNfY2FsbF90eXBlX2VudW0gICAgICBjYWxsX3R5cGU7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgbnVtYmVyW01BWF9DQ19BVERfTlVNX0xFTl07CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgY2xpX3ZhbGlkaXR5OworfSB2ZG1fYXRwX2NhbGxfbGlzdF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgdG90YWxfY2FsbDsKKyAgICB2ZG1fYXRwX2NhbGxfbGlzdF9zdHJ1Y3QgICBjYWxsX2xpc3RbSU1TX01BWF9DQUxMX05VTV07Cit9IHZkbV9hdHBfY21kX2xpc3RfY3VycmVudF9jYWxsc19yc3Bfc3RydWN0OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK0NMQ0NTCisgKiArQ0xDQ1M6IDxjY2lkMT4sPGRpcj4sPG5lZ19zdGF0dXNfcHJlc2VudD4sPG5lZ19zdGF0dXM+LDxTRFBfbWQ+LDxjc19tb2RlPiw8Y2NzdGF0dXM+LDxtcHR5PixbLDxudW1iZXJ0eXBlPiw8dG9uPiw8bnVtYmVyPlssPHByaW9yaXR5X3ByZXNlbnQ+LDxwcmlvcml0eT5bLDxDTElfdmFsaWRpdHlfcHJlc2VudD4sPENMSV92YWxpZGl0eT5dXV0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgdmRtX2F0cF9jbWRfbGlzdF9jdXJyZW50X2NhbGxzX2luZF9zdHJ1Y3QgCisgICAgICAgIHZkbV9hdHBfY21kX2xpc3RfY3VycmVudF9jYWxsc19leHRfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBjYWxsX2lkOworICAgIGw0X2NhbGxfZGlyX2VudW0gICAgICAgICAgICBkaXI7CisgICAgbDRfY2xjY3NfY2FsbF9tb2RlX2VudW0gICAgIGNsY2NzX2NzX21vZGU7CisgICAgbDRfY2FsbF9jY3N0YXR1c19lbnVtICAgICAgIGNjc3RhdHVzOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICBtcHR5OyAgLy8gRkFMU0U6IGlzIE5PVCBjb25mZXJlbmNlIGNhbGwsIFRSVUU6IGlzIGNvbmZlcmVuY2UgY2FsbAorICAgIGw0X2NhbGxfbnVtYmVyX3R5cGVfZW51bSAgICBudW1iZXJfdHlwZTsKKyAgICBsNF9jYWxsX3R5cGVfZW51bSAgICAgICAgICAgY2FsbF90eXBlOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBudW1iZXJbTUFYX1NJUF9VUklfTEVOXTsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgY2xpX3ByZXNlbnQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGNsaV92YWxpZGl0eTsKK30gdmRtX2F0cF9jYWxsX2xpc3RfZXh0X3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICB0b3RhbF9jYWxsOworICAgIHZkbV9hdHBfY2FsbF9saXN0X2V4dF9zdHJ1Y3QgICBjYWxsX2xpc3RbSU1TX01BWF9DQUxMX05VTV07Cit9IHZkbV9hdHBfY21kX2xpc3RfY3VycmVudF9jYWxsc19leHRfcnNwX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogK0VBRFM6IDxwcm9ncmVzcz4sPGRvbWFpbj4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBhZHNfaW5kaWNhdGlvbl9wcm9ncmVzc19lbnVtICAgIHByb2dyZXNzOworICAgIGFkc19pbmRpY2F0aW9uX2RvbWFpbl9lbnVtICAgICAgZG9tYWluOworfSB2ZG1fYXRwX3NuZF9hZHNfc3RhdHVzX3JlcV9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICtFSU1TSU5GTzogPHJhdD4sPGNlbGxfaWQ+LDxjZWxsX3NlcnZpY2U+LCA8cGxtbl9pZD4sPHBsbW5fdHlwZT4sCisgKiAgICAgICAgICAgIDxsYWM+LDx0YWM+LDxzdXBwb3J0X2VtYz4sPGx0ZV91bmRlcmx5X2NzX3BsbW5faWQ+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIHJhdF9lbnVtICAgICAgICAgICAgICAgICAgICAgICAgcmF0OworICAgIGNlbGxfc2VydmljZV9lbnVtICAgICAgICAgICAgICAgY2VsbF9zZXJ2aWNlOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgaXNfbGltaXRlZF9zZXJ2aWNlX2VtY19zdXBwb3J0OworICAgIGthbF91aW50MzIgICAgICAgICAgICAgICAgICAgICAgY2VsbF9pZDsKKyAgICBwbG1uX2lkX3N0cnVjdCAgICAgICAgICAgICAgICAgIHBsbW5faWQ7CisgICAgZG9tYWluX2lkX2VudW0gICAgICAgICAgICAgICAgICBkb21haW5faWQ7CisgICAgcGxtbl9pZF9zdHJ1Y3QgICAgICAgICAgICAgICAgICBsdGVfY3NfcGxtbl9pZDsvL0xURSB1bmRlcmx5aW5nIENTIFBMTU4gSUQsIG9ubHkgYXZhaWxhYmxlIGZvciBMVEUgY29tYmluZWQgYXR0YWNoIFVFCisjaWYgZGVmaW5lZChfX05HX0VDQUxMX1NVUFBPUlRfXykgICAgCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICBpc19lY2FsbF9zdXBwb3J0OworI2VuZGlmCit9IHZkbV9hdHBfY2VsbF9pbmZvX3VwZGF0ZV9pbmRfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiArVk1DQ01OQzogPG1jYz4sPG1uYz4gKHNvdXJjZSBQU1cpCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIHBsbW5faWRfc3RydWN0ICAgICAgICAgICAgICAgICAgcGxtbl9pZDsKK30gdmRtX2F0cF9jMmtfbWNjbW5jX2luZF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIElNUyBSZWdpc3RyYXRpb24gcmVsYXllZCBieSBBVFAgKHNvdXJjZTogSU1DKQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGltc19yZWdfc3RhdGVfZW51bSAgICAgICAgICAgICAgcmVnX3N0YXRlOworICAgIGltc19yZWdfdHlwZV9lbnVtICAgICAgICAgICAgICAgcmVnX3R5cGU7CisgICAgaW1zX2FjY2Vzc19yYXRfZW51bSAgICAgICAgICAgICByYXQ7CisgICAgaW1zX3JlZ19zZXJ2aWNlX2VudW0gICAgICAgICAgICByZWdfc2VydmljZTsKKwlpbXNfcmVnX2V2ZW50X2VudW0gICAgICAgICAgICAgIHJlZ19ldmVudDsKKyAgICBpbWNiX2ltY19zaXBfY2F1c2VfZW51bSAgICAgICAgIHNpcF9jYXVzZTsKKyAgICBpbXNfcmVnX3N1Yl9zdGF0ZV9lbnVtICAgICAgICAgIHJlZ19zdWJfc3RhdGU7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICBoYXNfc2VudF9yZWdpc3RlcjsKK30gdmRtX2F0cF9pbXNfcmVnX3N0YXR1c19pbmRfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtFVlZTPTx2b2ljZV9zdGF0dXM+LDxpc19lbWVyZ2VuY3k+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICB2b2ljZV9zdGF0dXM7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICBpc19lbWVyZ2VuY3k7Cit9IHZkbV9hdHBfY21kX2NhbGxfc3RhdHVzX2luZF9zdHJ1Y3Q7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogVE9ETworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCit0eXBlZGVmIHZkbV9pbWNfaW1zX2NjX2xpc3RfY3VycmVudF9jYWxsc19yZXFfc3RydWN0IAorICAgICAgICB2ZG1fYXRwX2NzX2NjX2xpc3RfY3VycmVudF9jYWxsc19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIC8vIFRPRE8gCit9IHZkbV9hdHBfc25kX2Fkc19hdHRlbXB0X25vdGlmaWNhdGlvbl9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIC8vIFRPRE8gCit9IHZkbV9hdHBfc25kX2Fkc19lbmRfbm90aWZpY2F0aW9uX3JlcV9zdHJ1Y3Q7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogK0NSSU5HOiA8dHlwZT4KKyAqIE5PVEU6IDx0eXBlPiBpcyBzdHJpbmcgdHlwZSBidXQgd2l0aG91dCAiIgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7CisgICAgTE9DQUxfUEFSQV9IRFIKK30gdmRtX2F0cF9zbmRfbXRfY2FsbF9yaW5nX3JlcV9zdHJ1Y3Q7CisKKyNpZiAwCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisjZW5kaWYKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrRUdNQzogPE9QPiw8Q29uZmlndXJlX05hbWU+LDxTZXRfVmFsdWU+CisgKiBOT1RFOmluIGdhbWUgbW9kZSB0byByZWxlYXNlIEVSUkMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreworICAgIExPQ0FMX1BBUkFfSERSCit9IHZkbV9hdHBfY21kX2dlbmVyYWxfbW9kZW1fY29uZmlndXJlX3NldF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK0VWT0xURVNJOiA8bW9kZT4KKyAqIE5PVEU6RW5oYW5jZWQgVk9MVEUgU2hvcnQgSW50ZXJydXB0aW9uIGlzIE9OL09GRgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICB2ZG1fdHJrX2VuaF92b2x0ZV9zaV9lbnVtIGlzX2VuaF92b2x0ZV9zaTsKK30gdmRtX2F0cF9jbWRfZW5oX3ZvbHRlX3NpX2luZF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICtFQ1JGQ1BZOiA8Y2FsbF9pZD4sPGNhbGxfc3RhdHVzPgorICogTk9URTpFbmhhbmNlIFZPTFRFIGNhbGwgc3RhdHVzIHVwZGF0ZSB0byBub3JtYWwKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsX2lkOyAgCisgICAgaW1zX2VuaF92b2x0ZV9zaV9jYWxsX3N0YXR1c19lbnVtICAgICBjYWxsX3N0YXR1czsKK30gdmRtX2F0cF9zbmRfZW5oX3ZvbHRlX3NpX2NhbGxfc3RhdHVzX2luZF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICtFQ09ORlNSVkNDOiA8Y2FsbF9ubz4sPGNhbGwxX2lkPlssPGNhbGwyX2lkPlssPGNhbGwzX2lkPlssLi4uXV1dCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgICBudW1fb2ZfY29uZl9wYXJ0czsKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgIGNhbGxfaWRfdGFibGVbSU1TX01BWF9DQUxMX05VTV07Cit9IHZkbV9hdHBfc25kX3NydmNjX2NvbmZfY2FsbF9pZF9yZXFfc3RydWN0OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICtFVkFEU1JFUDogPGRvbWFpbj4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreyAgCisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAgdmRtX2Fkc19yZXN1bHRfZW51bSAgICAgYWRzX3Jlc3VsdDsKK30gdmRtX2F0cF9zbmRfYWRzX3Jlc3VsdF9yZXBvcnRfcmVxX3N0cnVjdDsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiArRVJERUNDSU5EOiA8Y2FsbF9pZD4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreyAgCisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgY2FsbF9pZDsKK30gdmRtX2F0cF9zbmRfYWRzX3N3aXRjaF90b19lbWVyZ2VuY3lfcmVxX3N0cnVjdDsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBJTVMgSGFuZG92ZXIgKFdJRkkvTFRFKSBzdGF0dXMgcmVsYXllZCBieSBBVFAgKHNvdXJjZTogSU1DKQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7IAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIGltc19hY2Nlc3NfcmF0X2VudW0gICAgICAgICAgICAgc291cmNlX3JhdDsKKyAgICBpbXNfYWNjZXNzX3JhdF9lbnVtICAgICAgICAgICAgIHRhcmdldF9yYXQ7CisgICAgaW1zX3JlZ190eXBlX2VudW0gICAgICAgICAgICAgICByZWdfdHlwZTsKK30gdmRtX2F0cF9pbXNfaGFuZG92ZXJfc3RhcnRfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgCit7IAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIGltc19hY2Nlc3NfcmF0X2VudW0gICAgICAgICAgICAgc291cmNlX3JhdDsKKyAgICBpbXNfYWNjZXNzX3JhdF9lbnVtICAgICAgICAgICAgIHRhcmdldF9yYXQ7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgaW1zX3JlZ190eXBlX2VudW0gICAgICAgICAgICAgICByZWdfdHlwZTsKK30gdmRtX2F0cF9pbXNfaGFuZG92ZXJfZW5kX2luZF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICtFSUNFOiA8aW1zX2NhbGxfZXhpc3Q+LDxpc19lbWVyZ2VuY3k+LDxpbXNfYWNjZXNzX3JhdD4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgaXNfaW1zX2NhbGxfZXhpc3Q7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgIGlzX2VtZXJnZW5jeTsKKyAgICBpbXNfYWNjZXNzX3JhdF9lbnVtICAgICAgICAgaW1zX2FjY2Vzc19yYXQ7CisjaWZkZWYgX19UQzAxX0lNU19TVVBQT1JUX18KKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgY2FsbF9pZDsgCisgICAgYXBfY2FsbF9zdGF0ZV9lbnVtICAgICAgICAgIGNhbGxfc3RhdGU7CisgICAgYXBfY2FsbF9yZWFzb25fZW51bSAgICAgICAgIGNhbGxfcmVhc29uOworICAgIGFwX2NhbGxfdHlwZV9lbnVtICAgICAgICAgICBjYWxsX3R5cGU7CisjZW5kaWYKK30gdmRtX2F0cF9jbWRfaW1zX2NhbGxfZXhpc3RfaW5kX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrRUNOV1M9PGF2YWlsYWJsZV9yYXQ+LDxwcmVmZXJfcmF0PgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIHJhdF9lbnVtICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVfcmF0OworICAgIHJhdF9lbnVtICAgICAgICAgICAgICAgICAgICBwcmVmZXJfcmF0OworfSB2ZG1fYXRwX2NtZF9jYWxsX253X3NjYW5faW5kX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrRURDT05GCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgY29uZl9jYWxsX3BhcnRpY2lwYW50czsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBjb25mX2NhbGxfbnVtYmVyX2xpc3RbSU1TX01BWF9DQUxMX05VTV9JTl9DT05GXVtNQVhfQ0NfQVREX05VTV9MRU5dOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgIGlzX3ZpZGVvX2NhbGw7Cit9IHZkbV9hdHBfY21kX2RpYWxfY29uZl9pbmRfc3RydWN0OworCit0eXBlZGVmIHZkbV9hdHBfY29tbW9uX2F0X3JzcF9zdHJ1Y3QgdmRtX2F0cF9jbWRfZGlhbF9jb25mX3JzcF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICtFQ09ORkNIRUNLOjxudW1fb2ZfY29uZl9jYWxsX21lbWJlcnM+LDxpc19hbGxvd2VkPlssPGlzX2FsbG93ZWQ+Li4uCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICBjb25mX2NhbGxfcGFydGljaXBhbnRzOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgaXNfYWxsb3dlZFtJTVNfTUFYX0NBTExfTlVNX0lOX0NPTkZdOworfSB2ZG1fYXRwX3NuZF9jb25mX2NoZWNrX3Jlc3VsdF9yZXFfc3RydWN0OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICtRVUVSWVRSTjogPGNhbGxfaWQ+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGNhbGxfaWQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGRpYWxfc3RyaW5nW01BWF9DQ19FQ1BJX05VTV9MRU5dOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBmcm9tX2xpbmVbSU1DX01BWF9VUklfTEVOR1RIXTsKK30gdmRtX2F0cF9zbmRfZGlnaXRzX3Rybl9xdWVyeV9yZXFfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtESUdJVFNUUk49PGNhbGxfaWQ+LDxUUk4+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBjYWxsX2lkOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICB0cm5bTUFYX0NDX0FURF9OVU1fTEVOXTsKK30gdmRtX2F0cF9jbWRfYWRzX2RpZ2l0c190cm5faW5kX3N0cnVjdDsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBFVlRBCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBjYWxsX2lkOworICAgIGltc19jY19ldnRhX21vZGVfZW51bSAgICAgICBtb2RlOworfSB2ZG1fYXRwX2NtZF9tdF92dF9zcGVjaWFsX2FjY2VwdF9pbmRfc3RydWN0OworCit0eXBlZGVmIHZkbV9hdHBfY29tbW9uX2F0X3JzcF9zdHJ1Y3QgdmRtX2F0cF9jbWRfbXRfdnRfc3BlY2lhbF9hY2NlcHRfcnNwX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrRUlNU0NDUD08b3A+IC8gQVQrRUNDUD08b3A+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIHZkbV92aWRlb19jYXBhYmlsaXR5X2VudW0gICB2aWRlb19jYXBhYmlsaXR5OworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICBvbl9vZmY7Cit9IHZkbV9hdHBfY21kX3ZpZGVvX2NhcGFiaWxpdHlfaW5kX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrRUlNU0NGRyA9IDx2b2x0ZV9jZmc+LCA8dmlsdGVfY2ZnPiwgPHZvd2lmaV9jZmc+LCA8dml3aWZpX2NmZz4sIDxpbXNfc21zX2NmZz4sIDxlaW1zX2NmZz4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreyAgCisgICAgTE9DQUxfUEFSQV9IRFIgCisgICAgaW1zX2NhcF9yYXRfZW51bSB2bzNncHBfZW5hYmxlOyAgIC8vIGN1cnJlbnRseSBub3QgdXNlZCBieSBWRE0KKyAgICBpbXNfY2FwX3JhdF9lbnVtIHZpM2dwcF9lbmFibGU7ICAgLy8gcHJldmlvdXMgQVQrRUlNU0NDUAorICAgIGthbF9ib29sIGlzX3Zvd2lmaV9lbmFibGU7ICAvLyBwcmV2aW91cyBBVCtFSU1TV0ZDCisgICAga2FsX2Jvb2wgaXNfdml3aWZpX2VuYWJsZTsgIC8vIHByZXZpb3VzIEFUK0VJTVNDQ1AsIEFQIGRpZCBub3QgaGF2ZSB0aGlzIGNvbmZpZ3VyYXRpb24KK30gdmRtX2F0cF9jbWRfaW1zX2NvbmZpZ19pbmRfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiArRUMyS1JFRzogPGRvbWFpbj4sPHN0YXRlPiw8c2VydmljZT4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBkb21haW5faWRfZW51bSAgICAgICAgICAgICAgIGRvbWFpbjsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgIHN0YXRlOworICAgIGlyYXRfcHNfdHlwZV9lbnVtICAgICAgICAgICAgc2VydmljZTsKK30gdmRtX2F0cF9jMmtfc2VydmljZV9zdGF0ZV9pbmRfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiArRUMyS0NJOiA8aXNfY3NfY29ubl9vbmdvaW5nPgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICBpc19jc19jb25uX29uZ29pbmc7Cit9IHZkbV9hdHBfYzJrXzF4X2Nvbm5fc3RhdHVzX2luZF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICtFWFhYOiA8cmVwb3J0ZWRfcmF0PgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZWRfcmF0OworfSB2ZG1fYXRwX3JlcG9ydGVkX3JhdF9pbmRfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtFSFZPTFRFPTxtb2RlPiw8c3VibW9kZT4KKyAqIFRoaXMgY29tbWFuZCBpcyB1c2VkIHRvIHNldCBodm9sdGUgbW9kZQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBodm9sdGVfbW9kZV9lbnVtIG1vZGU7CisgICAga2FsX3VpbnQ4IHN1Ym1vZGU7Cit9IHZkbV9hdHBfZ21zc19zZXRfaHZvbHRlX21vZGVfcmVxX3N0cnVjdDsKKwordHlwZWRlZiB2ZG1fYXRwX2NvbW1vbl9hdF9jbmZfc3RydWN0IHZkbV9hdHBfZ21zc19zZXRfaHZvbHRlX21vZGVfY25mX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrRU1DUz08bW9kZT4KKyAqIFRoaXMgY29tbWFuZCBpcyB1c2VkIHRvIHNldCBlbWVyZ2VuY3kgY2FsbCBzZXNzaW9uIHN0YXJ0IGFuZCBlbmQKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreworICAgIExPQ0FMX1BBUkFfSERSCit9IHZkbV9hdHBfZW1jX3Nlc3Npb25fc3RhcnRfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgCit7CisgICAgTE9DQUxfUEFSQV9IRFIKK30gdmRtX2F0cF9lbWNfc2Vzc2lvbl9zdG9wX2luZF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK0VNQ0I9PG1vZGU+CisgKiBUaGlzIGNvbW1hbmQgaXMgdXNlZCB0byBzZXQgZW1lcmdlbmN5IGNhbGxiYWNrIG1vZGUKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreworICAgIExPQ0FMX1BBUkFfSERSCit9IHZkbV9hdHBfZW1jYl9tb2RlX3N0YXJ0X3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IAoreworICAgIExPQ0FMX1BBUkFfSERSCit9IHZkbV9hdHBfZW1jYl9tb2RlX3N0b3BfcmVxX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrVk1FTUVYSVQKKyAqIFRoaXMgY29tbWFuZCBpcyB1c2VkIHRvIGV4aXQgZW1lcmdlbmN5IGNhbGxiYWNrIG1vZGUKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IAoreworICAgIExPQ0FMX1BBUkFfSERSCit9IHZkbV9hdHBfY21kX2V4aXRfZW1jYl9pbmRfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiArRVNWQzo8ZW1lcmdlbmN5X3NlcnZpY2VfY2F0ZWdvcnk+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgICBlbWVyZ2VuY3lfc2VydmljZV9jYXRlZ29yeTsKKyAgICBhdHBfY21kX21vZGVfZW51bSAgICAgICAgICAgIGNtZF9tb2RlOworfSB2ZG1fYXRwX2NtZF9lbWVyZ19zZXJ2X2NhdF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgICBlbWVyZ2VuY3lfc2VydmljZV9jYXRlZ29yeTsKKyAgICBpbXNfcmVzdWx0X2NvZGVfZW51bSAgICAgICAgIHJlc3VsdDsKKyAgICBpbXNfZXJyX2lkX2VudW0gICAgICAgICAgICAgIGVycl9pZDsKKyAgICBhdHBfY21kX21vZGVfZW51bSAgICAgICAgICAgIGNtZF9tb2RlOworfSB2ZG1fYXRwX2NtZF9lbWVyZ19zZXJ2X2NhdF9yc3Bfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtFSFZPTFRFPTAsMQorICogaW5kaWNhdGlvbiBmb3Igc2lsZW50IHJlZGlhbCBldmVudCBmcm9tIEFQIHRvIE1ECisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorfSB2ZG1fYXRwX2h2b2x0ZV9zaWxlbnRfcmVkaWFsX2luZF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK0VDQk0KKyAqIFRoaXMgY29tbWFuZCBpcyB1c2VkIHRvIGVudGVyL2V4aXQgZW1lcmdlbmN5IGNhbGxiYWNrIG1vZGUKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICByYXRfZW51bSAgICAgICAgICAgICAgICBlY2JtX3JhdF9tb2RlOworfSB2ZG1fYXRwX2VjYm1fbW9kZV9zdGFydF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgcmF0X2VudW0gICAgICAgICAgICAgICAgZWNibV9yYXRfbW9kZTsKK30gdmRtX2F0cF9lY2JtX21vZGVfc3RvcF9yZXFfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtFQ0ZHU0VUPTxjZmdfbmFtZT4sPGNmZ192YWx1ZT4KKyAqIFNldCBWRE0gc2V0dGluZyB0aHJvdWdoIHRoaXMgQVQgY29tbWFuZAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgIG5hbWVbNjRdOyAgICAgIAorICAgIGthbF91aW50OCAgICB2YWx1ZVsxMjhdOyAgICAKK30gdmRtX2F0cF9lY2ZnX3NldF9pbmRfc3RydWN0OworCit0eXBlZGVmIHZkbV9hdHBfY29tbW9uX2F0X3JzcF9zdHJ1Y3QgdmRtX2F0cF9lY2ZnX3NldF9yc3Bfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtFSU1TUlRUPTxvcD4KKyAqIFNldCBydHRfY2FwYWJpbGl0eSB0aHJvdWdoIHRoaXMgQVQgY29tbWFuZAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgICAgICAgICBvcGVyYXRpb247ICAgICAgCit9IHZkbV9hdHBfY21kX3J0dF9jYXBhYmlsaXR5X2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgdmRtX2F0cF9jb21tb25fYXRfcnNwX3N0cnVjdCB2ZG1fYXRwX2NtZF9ydHRfY2FwYWJpbGl0eV9yc3Bfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtFU0VMRkFDVD0iPGtleT4iLCI8dmFsdWU+IgorICogU2V0IFZ6dyBzZWxmLWFjdGl2YXRpb24gZmVhdHVyZSByZWxhdGVkIHZhbHVlIHRocm91Z2ggdGhpcyBBVCBjb21tYW5kCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICAgICAgICAgIGtleVsxNl07CisgICAga2FsX3VpbnQ4ICAgICAgICAgICB2YWx1ZVsxNl07Cit9IHZkbV9hdHBfY21kX3NlbGZfYWN0aXZhdGlvbl9pbmRfc3RydWN0OworCit0eXBlZGVmIHZkbV9hdHBfY29tbW9uX2F0X3JzcF9zdHJ1Y3QgdmRtX2F0cF9jbWRfc2VsZl9hY3RpdmF0aW9uX3JzcF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK1ZNRU1FWElUIHJlc3VsdAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiB2ZG1fYXRwX2NvbW1vbl9hdF9yc3Bfc3RydWN0IHZkbV9hdHBfY21kX3ZtZW1leGl0X3JzcF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK0VNQ1M9PG1vZGU+Wyw8YWlycGxhbmVfbW9kZT4sPGltc19yZWdfc3RhdGU+XQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCAgIG1vZGU7CisgICAga2FsX3VpbnQ4ICAgYWlycGxhbmVfbW9kZTsKKyAgICBrYWxfdWludDggaW1zX3JlZ19zdGF0ZTsKKyAgICBhdHBfY2hhbm5lbF9lbnVtIGNoX2lkOworICAgIGthbF9ib29sIGlzX3N0b3BfZnJvbV9hcDsKK30gYXRwX3ZkbV9jbWRfZW1jc19yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgbW9kZTsKKyAgICBrYWxfdWludDggICBhaXJwbGFuZV9tb2RlOworICAgIGthbF91aW50OCBpbXNfcmVnX3N0YXRlOworICAgIGF0cF9jaGFubmVsX2VudW0gY2hfaWQ7CisgICAga2FsX2Jvb2wgcmVzcG9uc2VfYXRfb2s7Cit9IGF0cF92ZG1fY21kX2VtY3NfY25mX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrRU1DU1M9PG1vZGU+LDxhdmFpbGFibGVfcmF0Piw8cHJlZmVyX3JhdD4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICBtb2RlOworICAgIHJhdF9lbnVtICAgIGF2YWlsYWJsZV9yYXQ7CisgICAgcmF0X2VudW0gICAgcHJlZmVyX3JhdDsKK31hdHBfdmRtX2NtZF9lbWNzc19pbmRfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtFQ0JNPTxtb2RlPiw8cmF0X21vZGU+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IG1vZGU7CisgICAgcmF0X2VudW0gcmF0X21vZGU7Cit9IGF0cF92ZG1fY21kX2VjYm1fcmVxX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogK0VNQ1NTOiA8YXZhaWxhYmxlX3JhdD4sPGNhdXNlPgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7ICAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICByYXRfZW51bSAgICBhdmFpbGFibGVfcmF0OworICAgIHZkbV9lbWNzc19jYXVzZV9lbnVtIGNhdXNlOworfSBhdHBfdmRtX3NuZF9lbWNzc191cmNfcmVxX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogK0VDTldTOiA8cHJvY19zdGF0dXM+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sgIAorICAgIExPQ0FMX1BBUkFfSERSIAorICAgIHByb2Nfc3RhdHVzX2VudW0gICAgICAgICAgICAgICAgc3RhdHVzOworfSBhdHBfdmRtX3NuZF9lY253c191cmNfcmVxX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogK0NJRVY6IDEwMiw8ZWNibV9zdGF0dXM+CisgKiAgZWNibV9zdGF0dXM6CisgKiAgICAgIDAgLSBFQ0JNIGVuZAorICogICAgICAxIC0gRUNCTSBzdGFydAorICogICAgICAyIC0gZGlzYWJsZSBFQ0JNIChub3RpZnkgQVAgbmVlZCBub3QgdG8gZW50ZXIgRUNCTSwgbGVhdmUgZW1jIG1vZGUgZGlyZWN0bHkpCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCAKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCBlY2JtX3N0YXR1czsKK30gYXRwX3ZkbV9zbmRfZWNibV91cmNfcmVxX3N0cnVjdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrRVJERUNDQVBWPTxpc19hcHByb3ZlPiw8Y2FsbF9pZD4KKyAqIFNldCBsZWF2aW5nIGZsaWdodCBtb2RlIHJlc3VsdCB0aHJvdWdoIHRoaXMgQVQgY29tbWFuZAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgaXNfYXBwcm92ZTsKKyAgICBrYWxfdWludDggICBjYWxsX2lkOworfSB2ZG1fYXRwX2NtZF9zd2l0Y2hfdG9fZW1lcmdlbmN5X2luZF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK0VTUlZDQ1RGUjogPGNhbGxfbnVtPiwgPGNhbGwxX2lkPiw8Y2FsbDFfbW9kZT4sPGNhbGwxX2RpcmVjdGlvbj4sPGNhbGwxX3N0YXRlPiw8Y2FsbDFfZWNjX2NhdGVnb3J5Piw8Y2FsbDFfbnVtYmVyIHR5cGU+LDxjYWxsMV9udW1iZXI+LDxjYWxsMV9hbHBoYT4sPGNhbGwxX0NMSSB2YWxpZGl0eT4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9pZDsgICAgICAvKiBjYWxsX2lkX2ltcyA9IGNhbGxfaWRfYXAgKi8KKyAgICBpbXNfc3J2Y2NfY2FsbF9tb2RlX2VudW0gICAgICAgICAgICBjYWxsX21vZGU7CisgICAgaW1zX3NydmNjX2NhbGxfZGlyZWN0aW9uX2VudW0gICAgICAgY2FsbF9kaXJlY3Rpb247CisgICAgaW1zX3NydmNjX2NhbGxfc3RhdGVfZW51bSAgICAgICAgICAgY2FsbF9zdGF0ZTsKKyAgICBpbXNfc3J2Y2NfY2FsbF9lY2NfY2F0ZWdvcnlfZW51bSAgICBjYWxsX2VjY19jYXRlZ29yeTsKKyAgICBpbXNfc3J2Y2NfY2FsbF9udW1iZXJfZm9ybWF0X2VudW0gICBjYWxsX251bWJlcl9mb3JtYXQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9udW1iZXJbSU1DX01BWF9VUklfTEVOR1RIXTsgIAorICAgIC8vdGhlc2UgdHdvIHBhcmFtZXRlciBpcyBkZWZpbmVkIGJ5IEw0IGJ1dCBzZWVtcyBub3QgdXNlZCBieSBJTVMgQ0MKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsX2FscGhhW01BWF9QU19OQU1FX1NJWkUgKyAxXTsgLy8gTUFYX1BTX05BTUVfU0laRTogNDIKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgICAgICBjbGk7CisKKyAgICAvL2p1c3QgZm9yIFRLIGNvbXBhdGlibGUsIG5vdCBzdXJlIGhvdyB0byB1c2UgdGhpcyBpbiBUQzAxIHByb2plY3QKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fb2ZfY29uZl9wYXJ0czsgCit9IGltc19zcnZjY19jYWxsX2N0eHRfdG9fY3Nfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreyAgICAKKyAgICBMT0NBTF9QQVJBX0hEUiAgICAKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fY2FsbDsgICAgCisgICAgaW1zX3NydmNjX2NhbGxfY3R4dF90b19jc19zdHJ1Y3QJc3J2Y2NfY2FsbF9jdHh0X3RvX2NzX2RvbWFpbltJTVNfTUFYX0NBTExfTlVNXTsKK30gdmRtX2F0cF9jbWRfc3J2Y2NfY29udGV4dF90cmFuc2Zlcl9pbmRfc3RydWN0OyAvL01TR19JRF9WRE1fQVRQX0NNRF9TUlZDQ19DT05URVhUX1RSQU5TRkVSX0lORAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiArRVNSVkNDVEZSOiA8Y2FsbF9ubz5bLDxjYWxsMV9pZD5bLDxjYWxsMl9pZD5bLC4uLl1dXQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7ICAgICAgCisgICAgTE9DQUxfUEFSQV9IRFIgICAgIAorICAgIGthbF91aW50MzIgICAgICAgICAgICAgICAgICAgbnVtX29mX2NhbGxfaW5zdGFuY2VzOyAgICAKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgIGNhbGxfaWRfdGFibGVbSU1TX01BWF9DQUxMX05VTV07Cit9IHZkbV9hdHBfY21kX3NydmNjX2NvbnRleHRfdHJhbnNmZXJfcnNwX3N0cnVjdDsgLy8gTVNHX0lEX1ZETV9BVFBfQ01EX1NSVkNDX0NPTlRFWFRfVFJBTlNGRVJfUlNQCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICtFUkVTRUxSOjxyZXN1bHQ+CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX2Jvb2wgcmVzdWx0OyAvLzAsIGZhaWw7IDEsIHN1Y2Nlc3MKK30gdmRtX2F0cF9zc2FjX3Jlc2VsX3Jlc3VsdF9pbmRfc3RydWN0OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBVCtFTUdDCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIGVudW0geworICAgIFZETV9FTUdDX09QX1FVRVJZID0gMCwKKyAgICBWRE1fRU1HQ19PUF9TRVQKK30gdmRtX2F0cF9lbWdjX29wX2VudW07CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIHZkbV9hdHBfZW1nY19vcF9lbnVtIG9wOworICAgIGthbF91aW50OCBuYW1lW1ZETV9BVF9DTURfVE9fTURfTkFNRV9MRU5dOworICAgIGthbF91aW50OCB2YWx1ZVtWRE1fQVRfQ01EX1RPX01EX1ZBTFVFX0xFTl07Cit9IHZkbV9hdHBfYXRfY21kX3RvX21kX2luZF9zdHJ1Y3Q7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFUK0VWT0RBVEEgPSA8ZW4+Wyw8ZGF0YV9tb2RlPlssPGFsbG93X3JhdD5dXQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgCit7ICAKKyAgICBMT0NBTF9QQVJBX0hEUiAKKyAgICBrYWxfYm9vbCBpc192b2RhdGFfZW5hYmxlOyAgCit9IHZkbV9hdHBfY21kX2V2b2RhdGFfY29uZmlnX2luZF9zdHJ1Y3Q7CisKKyNpZiBkZWZpbmVkKF9fRUNBTExfU1VQUE9SVF9fKSB8fCBkZWZpbmVkKF9fTkdfRUNBTExfU1VQUE9SVF9fKQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQVQrQ0VDQUxMPTx0eXBlX29mX2VDYWxsPlssPGZvcm1hdD4sPG1zZF9kYXRhX2xlbmd0aD4sPG1zZF9kYXRhPl0KKyAqIERpYWwgZUNhbGwgdGhyb3VnaCB0aGlzIEFUIGNvbW1hbmQKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGVjYWxsX3R5cGVfZW51bSBlY2FsbF90eXBlOworICAgIGVjYWxsX2Zvcm1hdF9lbnVtIGVjYWxsX2Zvcm1hdDsKKyAgICBrYWxfdWludDggbXNkX2RhdGFfbGVuOworICAgIGthbF91aW50OCBtc2RfZGF0YVtNQVhfTVNEX0xFTkdUSF07Cit9IHZkbV9hdHBfY21kX2RpYWxfZWNhbGxfaW5kX3N0cnVjdDsKKwordHlwZWRlZiB2ZG1fYXRwX2NvbW1vbl9hdF9yc3Bfc3RydWN0IHZkbV9hdHBfY21kX2RpYWxfZWNhbGxfcnNwX3N0cnVjdDsKKyNlbmRpZgorI2VuZGlmIC8vIF9WRE1fQVRQX1NUUlVDVF9IXworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy93b19sNGJud19zdHJ1Y3QuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvbDRtaXNjL3dvX2w0Ym53X3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMmI2Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2w0bWlzYy93b19sNGJud19zdHJ1Y3QuaApAQCAtMCwwICsxLDc0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgd29fbDRibndfc3RydWN0LmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogIAorICogICAKKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiAgX1dPX0w0Qk5XX1NUUlVDVF9ICisjZGVmaW5lICBfV09fTDRCTldfU1RSVUNUX0gKKworI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiCisjaW5jbHVkZSAibDNfaW5jX2VudW1zX3B1YmxpYy5oIgorI2luY2x1ZGUgImw0Ym53X3B1YmxpY19zdHJ1Y3QuaCIKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgbDRibndfcHVibGljX2F0dGFjaGVkX25ldHdvcmtfaW5mb19zdHJ1Y3QgYXR0YWNoZWRfbmV0d29ya19pbmZvOworfSB3b19sNGJud19hdHRhY2hlZF9yYXRfaW5kX3N0cnVjdDsKKworI2VuZGlmIC8qIF9XT19MNEJOV19TVFJVQ1RfSCAqLwo=