LyoKICogUkVHLkVYRSAtIFdpbmUtY29tcGF0aWJsZSByZWcgcHJvZ3JhbS4KICogS29yZWFuIGxhbmd1YWdlIHN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDggQW5kcmV3IFJpZWRpCiAqIENvcHlyaWdodCAyMDA4IFl1blNvbmcgSHdhbmcKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInJlZy5oIgoKTEFOR1VBR0UgTEFOR19LT1JFQU4sIFNVQkxBTkdfREVGQVVMVAoKU1RSSU5HVEFCTEUKewogICAgU1RSSU5HX1VTQUdFLCAiuO23yb7uIMf8vcQ6XG5cblJFRyBbIEFERCB8IERFTEVURSB8IFFVRVJZIF1cblJFRyC47bfJvu4gLz9cbiIKICAgIFNUUklOR19BRERfVVNBR0UsICJSRUcgQUREILCqIFsvdiCwqiB8IC92ZV0gWy90IMf8vcRdIFsvcyC60LiuseLIo10gWy9kILWlwMzFuF0gWy9mXVxuIgogICAgU1RSSU5HX0RFTEVURV9VU0FHRSwgIlJFRyBERUxFVEUgxbAgwMy4pyBbL3YgsKogfCAvdmUgfCAvdmFdIFsvZl1cbiIKICAgIFNUUklOR19RVUVSWV9VU0FHRSwgIlJFRyBRVUVSWSDFsCDAzLinIFsvdiCwqnwgL3ZlXSBbL3NdXG4iCiAgICBTVFJJTkdfU1VDQ0VTUywgIsDbvvfAzCC8urD4wPvAuLfOILOhs7W9wLTPtNlcbiIKICAgIFNUUklOR19JTlZBTElEX0tFWSwgIr+ht686IL/Dudm4o8H2IL7KwLogxbAgwMy4p1xuIgogICAgU1RSSU5HX0lOVkFMSURfQ01ETElORSwgIr+ht686v8O52bijwfYgvsrAuiC47bfJtvPAziC4xbCzuq+89lxuIgogICAgU1RSSU5HX05PX1JFTU9URSwgIr+ht686IL/4sN0guNO9xb+hICDFsLimILT1x8+0wiCwzcC6ILChtMnHz8H2IL7KvcC0z7TZXG4iCiAgICBTVFJJTkdfQ0FOTk9UX0ZJTkQsICK/obevOiDAzCC9w726xdu/obytIMH2waS1yCC3ucH2vbrGrriuIMWws6ogsKrAuyDDo8C7vPYgvvi9wLTPtNlcbiIKfQo=