IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyBCdWlsZCBhIGJyYW5jaGVzL3JlbGVhc2Ugc25hcHNob3QgZm9yIFdpbmRvd3MsIHVzaW5nIENSTEYgbGluZSB0ZXJtaW5hdGlvbgoKIyCpIENvcHlyaWdodCAyMDA4IEJlbWFuIERhd2VzCiMgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgojIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKCiMgVGhpcyBzY3JpcHQgdXNlcyBmdHAsIGFuZCB0aHVzIGFzc3VtZXMgfi8ubmV0cmMgY29udGFpbnMgYSBtYWNoaW5lIC4uLiBlbnRyeQoKZWNobyAiQnVpbGQgYSBicmFuY2hlcy9yZWxlYXNlIHNuYXBzaG90IGZvciBXaW5kb3dzLCB1c2luZyBDUkxGIGxpbmUgdGVybWluYXRpb24uLi4iCgplY2hvICJSZW1vdmluZyBvbGQgZmlsZXMuLi4iCnJtIC1yIC1mIHdpbmRvd3MKCmVjaG8gIkV4cG9ydGluZyBmaWxlcyBmcm9tIHN1YnZlcnNpb24uLi4iCnN2biBleHBvcnQgLS1ub24taW50ZXJhY3RpdmUgLS1uYXRpdmUtZW9sIENSTEYgaHR0cDovL3N2bi5ib29zdC5vcmcvc3ZuL2Jvb3N0L2JyYW5jaGVzL3JlbGVhc2Ugd2luZG93cwoKI2VjaG8gIkNvcHlpbmcgZG9jcyBmcm9tIHBvc2l4IHRyZWUuLi4iCiNjcCAtLXJlY3Vyc2l2ZSBwb3NpeC9kb2MvaHRtbCB3aW5kb3dzL2RvYwoKZWNobyAiUmVuYW1pbmcuLi4iClNOQVBTSE9UX0RBVEU9YGV2YWwgZGF0ZSArJVktJW0tJWRgCmVjaG8gU05BUFNIT1RfREFURSBpcyAkU05BUFNIT1RfREFURQptdiB3aW5kb3dzIGJvb3N0LXdpbmRvd3MtJFNOQVBTSE9UX0RBVEUKCiNybSAtZiB3aW5kb3dzLnppcAojemlwIC1yIHdpbmRvd3MuemlwIGJvb3N0LXdpbmRvd3MtJFNOQVBTSE9UX0RBVEUKCmVjaG8gIkJ1aWxkaW5nIC43ei4uLiIKcm0gLWYgd2luZG93cy43egojIE9uIFdpbmRvd3MsIDd6IGNvbWVzIGZyb20gdGhlIDctWmlwIHBhY2thZ2UsIG5vdCBDeWd3aW4sCiMgc28gcGF0aCBtdXN0IGluY2x1ZGUgQzpcUHJvZ3JhbSBGaWxlc1w3LVppcC4KN3ogYSAtciB3aW5kb3dzLjd6IGJvb3N0LXdpbmRvd3MtJFNOQVBTSE9UX0RBVEUKCmVjaG8gIlJldmVydGluZyBuYW1lLi4uIgptdiBib29zdC13aW5kb3dzLSRTTkFQU0hPVF9EQVRFIHdpbmRvd3MKCmVjaG8gIkNyZWF0aW5nIGZ0cCBzY3JpcHQuLi4iCmNhdCA8dXNlci50eHQgPj53aW5kb3dzLmZ0cAplY2hvICJkaXIiID4+d2luZG93cy5mdHAKZWNobyAiYmluYXJ5IiA+PndpbmRvd3MuZnRwCgojZWNobyAicHV0IHdpbmRvd3MuemlwIiA+PndpbmRvd3MuZnRwCiNlY2hvICJtZGVsZXRlIGJvb3N0LXdpbmRvd3MqLnppcCIgPj53aW5kb3dzLmZ0cAojZWNobyAicmVuYW1lIHdpbmRvd3MuemlwIGJvb3N0LXdpbmRvd3MtJFNOQVBTSE9UX0RBVEUuemlwIiA+PndpbmRvd3MuZnRwCgplY2hvICJwdXQgd2luZG93cy43eiIgPj53aW5kb3dzLmZ0cAplY2hvICJtZGVsZXRlIGJvb3N0LXdpbmRvd3MqLjd6IiA+PndpbmRvd3MuZnRwCmVjaG8gInJlbmFtZSB3aW5kb3dzLjd6IGJvb3N0LXdpbmRvd3MtJFNOQVBTSE9UX0RBVEUuN3oiID4+d2luZG93cy5mdHAKZWNobyAiZGlyIiA+PndpbmRvd3MuZnRwCmVjaG8gImJ5ZSIgPj53aW5kb3dzLmZ0cAoKZWNobyAiUnVubmluZyBmdHAgc2NyaXB0Li4uIgojIFRoaXMgaXMgdGhlIFdpbmRvd3MgZnRwIGNsaWVudApmdHAgLW4gLWkgLWQgLXM6d2luZG93cy5mdHAgYm9vc3QuY293aWMuZGUKCmVjaG8gIldpbmRvd3Mgc25hcHNob3QgY29tcGxldGUhIgo=