Ly9NaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBnZW5lcmF0ZWQgcmVzb3VyY2Ugc2NyaXB0LgovLwojaW5jbHVkZSAicmVzb3VyY2UuaCIKCiNkZWZpbmUgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLwovLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJjZS4KLy8KI2RlZmluZSBBUFNUVURJT19ISURERU5fU1lNQk9MUwojaW5jbHVkZSAid2luZG93cy5oIgojdW5kZWYgQVBTVFVESU9fSElEREVOX1NZTUJPTFMKI2luY2x1ZGUgInJlc291cmNlLmgiCgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwojdW5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8gUnVzc2lzY2ggcmVzb3VyY2VzCgojaWYgIWRlZmluZWQoQUZYX1JFU09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFSR19SVVMpCiNpZmRlZiBfV0lOMzIKTEFOR1VBR0UgTEFOR19SVVNTSUFOLCBTVUJMQU5HX0RFRkFVTFQKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MSkKI2VuZGlmIC8vX1dJTjMyCgojaWZkZWYgQVBTVFVESU9fSU5WT0tFRAovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLwovLyBURVhUSU5DTFVERQovLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRSAKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKMiBURVhUSU5DTFVERSBESVNDQVJEQUJMRSAKQkVHSU4KICAgICIjZGVmaW5lIEFQU1RVRElPX0hJRERFTl9TWU1CT0xTXHJcbiIKICAgICIjaW5jbHVkZSAiIndpbmRvd3MuaCIiXHJcbiIKICAgICIjdW5kZWYgQVBTVFVESU9fSElEREVOX1NZTUJPTFNcclxuIgogICAgIiNpbmNsdWRlICIicmVzb3VyY2UuaCIiXHJcbiIKICAgICJcMCIKRU5ECgozIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFIApCRUdJTgogICAgIlxyXG4iCiAgICAiXDAiCkVORAoKI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9LRUQKCiNlbmRpZiAgICAvLyBSdXNzaXNjaCByZXNvdXJjZXMKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLyBFbmdsaXNjaCAoVVNBKSByZXNvdXJjZXMKCiNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0VOVSkKI2lmZGVmIF9XSU4zMgpMQU5HVUFHRSBMQU5HX0VOR0xJU0gsIFNVQkxBTkdfRU5HTElTSF9VUwojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQojZW5kaWYgLy9fV0lOMzIKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vCi8vIERpYWxvZwovLwoKSUREX0FVRElPRU5DUFJPUFMgRElBTE9HRVggMCwgMCwgMjI4LCAxMjEKU1RZTEUgV1NfQ0hJTEQgfCBXU19WSVNJQkxFCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIsIDAsIDAsIDB4MQpCRUdJTgogICAgQ09OVFJPTCAgICAgICAgICJDb25zdGFudCBCaXQgUmF0ZSIsSURDX1JBRElPX0NCUiwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AsNCwyLDcxLDEwCiAgICBDT05UUk9MICAgICAgICAgIlZhcmlhYmxlIEJpdCBSYXRlIixJRENfUkFESU9fVkJSLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiw0LDMxLDY5LDEwCiAgICBDT01CT0JPWCAgICAgICAgSURDX0NPTUJPX0NCUiw1MiwxNCw3Niw5MixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IAogICAgICAgICAgICAgICAgICAgIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgQ09NQk9CT1ggICAgICAgIElEQ19DT01CT19WQlJNSU4sNTIsNDQsNzYsODUsQ0JTX0RST1BET1dOTElTVCB8IAogICAgICAgICAgICAgICAgICAgIFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBDT01CT0JPWCAgICAgICAgSURDX0NPTUJPX1ZCUk1BWCw1Miw2Miw3Niw4NixDQlNfRFJPUERPV05MSVNUIHwgCiAgICAgICAgICAgICAgICAgICAgQ0JTX0FVVE9IU0NST0xMIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AsCiAgICAgICAgICAgICAgICAgICAgV1NfRVhfVFJBTlNQQVJFTlQKICAgIENPTlRST0wgICAgICAgICAiQ29weXJpZ2h0IixJRENfQ0hFQ0tfQ09QWVJJR0hULCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IAogICAgICAgICAgICAgICAgICAgIFdTX0dST1VQIHwgV1NfVEFCU1RPUCwxNTEsMzksNDUsMTAKICAgIENPTlRST0wgICAgICAgICAiT3JpZ2luYWwvQ29weSIsSURDX0NIRUNLX09SSUdJTkFMLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUxLDUxLDU5LDEwCiAgICBDT05UUk9MICAgICAgICAgIkNSQyBQcm90ZWN0ZWQiLElEQ19DSEVDS19DUkMsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCwxNTEsNjMsNjMsMTAKICAgIENPTlRST0wgICAgICAgICAiU2xpZGVyMSIsSURDX1NMSURFUl9RVUFMSVRZLCJtc2N0bHNfdHJhY2tiYXIzMiIsCiAgICAgICAgICAgICAgICAgICAgVEJTX0JPVEggfCBUQlNfTk9USUNLUyB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUCw2NiwxMDEsOTYsCiAgICAgICAgICAgICAgICAgICAgMTUKICAgIExURVhUICAgICAgICAgICAia2JwcyIsSURDX1NUQVRJQyw0LDE2LDIyLDgKICAgIENPTlRST0wgICAgICAgICAiTWluIixJRENfU1RBVElDLCJTdGF0aWMiLFNTX0xFRlROT1dPUkRXUkFQIHwgV1NfR1JPVVAsNCwKICAgICAgICAgICAgICAgICAgICA0NiwxMywxMQogICAgTFRFWFQgICAgICAgICAgICJNYXgiLElEQ19TVEFUSUMsNCw2NCwxNiwxMQogICAgTFRFWFQgICAgICAgICAgICJFbmNvZGluZyBRdWFsaXR5IixJRENfU1RBVElDLDQsMTA1LDU0LDgsTk9UIFdTX0dST1VQCiAgICBMVEVYVCAgICAgICAgICAgIjAiLElEQ19URVhUX1FVQUxJVFksMTcwLDEwNCw0NywxMAogICAgQ09NQk9CT1ggICAgICAgIElEQ19DT01CT19TQU1QTEVfUkFURSwxNTEsMTQsNTksMTA0LENCU19EUk9QRE9XTkxJU1QgfCAKICAgICAgICAgICAgICAgICAgICBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgQ09OVFJPTCAgICAgICAgICJUYXJnZXQgU2FtcGxlIFJhdGUiLElEQ19TVEFUSUMsIlN0YXRpYyIsCiAgICAgICAgICAgICAgICAgICAgU1NfTEVGVE5PV09SRFdSQVAgfCBOT1QgV1NfVklTSUJMRSB8IFdTX0dST1VQLDE1MiwyLDY2LDgKICAgIENPTUJPQk9YICAgICAgICBJRENfQ09NQk9fVkJScSw1Miw4MCw3Niw5MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IAogICAgICAgICAgICAgICAgICAgIFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiVkJSIFF1YWxpdHkiLElEQ19TVEFUSUMsNCw4Miw0MCw4CiAgICBDT05UUk9MICAgICAgICAgIkZvcmNlIE1vbm8iLElEQ19GT1JDRV9NT05PLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IAogICAgICAgICAgICAgICAgICAgIFdTX1RBQlNUT1AsMTUxLDc1LDU0LDEwCkVORAoKSUREX0FEVlBST1BTIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjI4LCAxMjkKU1RZTEUgV1NfQ0hJTEQgfCBXU19WSVNJQkxFCkZPTlQgOCwgIk1TIFNhbnMgU2VyaWYiCkJFR0lOCiAgICBDT05UUk9MICAgICAgICAgIk1vbm8iLElEQ19SQURJT19NT05PLCJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRPTiB8IAogICAgICAgICAgICAgICAgICAgIFdTX0dST1VQIHwgV1NfVEFCU1RPUCwxMDksOTMsMzQsMTAKICAgIENPTlRST0wgICAgICAgICAiU3RhbmRhcmQgc3RlcmVvIixJRENfUkFESU9fU1RFUkVPLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUCwxMDksMzYsNjcsMTEKICAgIENPTlRST0wgICAgICAgICAiSm9pbnQgc3RlcmVvIixJRENfUkFESU9fSlNURVJFTywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AsMTA5LDUxLDYwLDEwCiAgICBHUk9VUEJPWCAgICAgICAgIk1vZGUgU2VsZWN0aW9uIixJRENfU1RBVElDLDEwMywyNiwxMTgsODIsQlNfQ0VOVEVSIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfR1JPVVAKICAgIENPTlRST0wgICAgICAgICAiU3RyaWN0bHkgZW5mb3JjZSBWQlIgbWluIGJpdHJhdGUiLElEQ19DSEVDS19FTkZPUkNFX01JTiwKICAgICAgICAgICAgICAgICAgICAiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AsNyw4LDExMywKICAgICAgICAgICAgICAgICAgICAxMAogICAgQ09OVFJPTCAgICAgICAgICJWb2ljZSBlbmNvZGluZyBtb2RlIixJRENfQ0hFQ0tfVk9JQ0UsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QLDcsMjEsODUsMTAKICAgIENPTlRST0wgICAgICAgICAiS2VlcCBhbGwgZnJlcXVlbmNpZXMiLElEQ19DSEVDS19LRUVQX0FMTF9GUkVRLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX0RJU0FCTEVEIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QLDcsCiAgICAgICAgICAgICAgICAgICAgMzQsODAsMTAKICAgIENPTlRST0wgICAgICAgICAiU3RyaWN0IElTTyBjb21wbGlhbmNlIixJRENfQ0hFQ0tfU1RSSUNUX0lTTywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AsNyw0Nyw4NCwxMAogICAgQ09OVFJPTCAgICAgICAgICJEaXNhYmxlIHNob3J0IGJsb2NrcyIsSURDX0NIRUNLX0RJU0FCTEVfU0hPUlRfQkxPQ0ssCiAgICAgICAgICAgICAgICAgICAgIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfRElTQUJMRUQgfCBXU19HUk9VUCB8IAogICAgICAgICAgICAgICAgICAgIFdTX1RBQlNUT1AsNyw2MCw3OSwxMAogICAgQ09OVFJPTCAgICAgICAgICJFbmFibGUgWGluZyBWQlIgdGFnIixJRENfQ0hFQ0tfWElOR19UQUcsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QLDcsNzMsODMsMTAKICAgIENPTlRST0wgICAgICAgICAiRHVhbCBjaGFubmVsIixJRENfUkFESU9fRFVBTCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AsMTA5LDc5LDU4LDEwCiAgICBDT05UUk9MICAgICAgICAgIkZvcmNlZCBtaWQgLyBzaWRlIHN0ZXJlbyIsSURDX0NIRUNLX0ZPUkNFX01TLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTIyLDY1LDkyLDEwCiAgICBDT05UUk9MICAgICAgICAgIk1vZGUgRml4ZWQiLElEQ19DSEVDS19NT0RFX0ZJWEVELCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX0RJU0FCTEVEIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QLDcsCiAgICAgICAgICAgICAgICAgICAgODYsNTMsMTAKICAgIENPTlRST0wgICAgICAgICAiQWxsb3cgc2FtcGxlIG92ZXJsYXAiLElEQ19DSEVDS19PVkVSTEFQLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUCw3LDk5LDgyLDEwCiAgICBDT05UUk9MICAgICAgICAgIlNldCBzYW1wbGUgc3RvcCB0aW1lIixJRENfQ0hFQ0tfU1RPUCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AsNywxMTIsODEsMTAKRU5ECgpJRERfQUJPVVQgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyMjgsIDEyMQpTVFlMRSBXU19DSElMRApGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJMQU1FIEFpbid0IE1QMyBFbmNvZGVyIChYLlhYIGVuZ2luZSkiLElEQ19MQU1FX1ZFUiw3LDgsCiAgICAgICAgICAgICAgICAgICAgMjA4LDgKICAgIExURVhUICAgICAgICAgICAiTEFNRSBQcm9qZWN0IEhvbWVwYWdlOiBodHRwOi8vd3d3Lm1wM2Rldi5vcmciLAogICAgICAgICAgICAgICAgICAgIElEQ19MQU1FX1VSTCw3LDE5LDE5Miw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX0xBTUVfTEEsNywzMSwyMTQsODMsRVNfTVVMVElMSU5FIHwgRVNfQVVUT1ZTQ1JPTEwgfCAKICAgICAgICAgICAgICAgICAgICBFU19BVVRPSFNDUk9MTCB8IEVTX1JFQURPTkxZIHwgV1NfVlNDUk9MTApFTkQKCgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLwovLyBERVNJR05JTkZPCi8vCgojaWZkZWYgQVBTVFVESU9fSU5WT0tFRApHVUlERUxJTkVTIERFU0lHTklORk8gRElTQ0FSREFCTEUgCkJFR0lOCiAgICBJRERfQVVESU9FTkNQUk9QUywgRElBTE9HCiAgICBCRUdJTgogICAgICAgIFJJR0hUTUFSR0lOLCAyMjMKICAgICAgICBCT1RUT01NQVJHSU4sIDExOAogICAgRU5ECgogICAgSUREX0FEVlBST1BTLCBESUFMT0cKICAgIEJFR0lOCiAgICAgICAgTEVGVE1BUkdJTiwgNwogICAgICAgIFJJR0hUTUFSR0lOLCAyMjEKICAgICAgICBUT1BNQVJHSU4sIDUKICAgICAgICBCT1RUT01NQVJHSU4sIDEyMQogICAgRU5ECgogICAgSUREX0FCT1VULCBESUFMT0cKICAgIEJFR0lOCiAgICAgICAgTEVGVE1BUkdJTiwgNwogICAgICAgIFJJR0hUTUFSR0lOLCAyMjEKICAgICAgICBUT1BNQVJHSU4sIDcKICAgICAgICBCT1RUT01NQVJHSU4sIDExNAogICAgRU5ECkVORAojZW5kaWYgICAgLy8gQVBTVFVESU9fSU5WT0tFRAoKCiNpZm5kZWYgX01BQwovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLwovLyBWZXJzaW9uCi8vCgpWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KIEZJTEVWRVJTSU9OIDEsMCw2MSwyNDg3NQogUFJPRFVDVFZFUlNJT04gMSwwLDYxLDI0ODc1CiBGSUxFRkxBR1NNQVNLIDB4M2ZMCiNpZmRlZiBfREVCVUcKIEZJTEVGTEFHUyAweDFMCiNlbHNlCiBGSUxFRkxBR1MgMHgwTAojZW5kaWYKIEZJTEVPUyAweDQwMDA0TAogRklMRVRZUEUgMHgyTAogRklMRVNVQlRZUEUgMHgwTApCRUdJTgogICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgogICAgQkVHSU4KICAgICAgICBCTE9DSyAiMDQwOTA0YjAiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgVkFMVUUgIkNvbW1lbnRzIiwgIkxBTUUgRGlyZWN0U2hvdyBGaWx0ZXJcMCIKICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgIlwwIgogICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIkxBTUUgQXVkaW8gRW5jb2RlclwwIgogICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCAiMSwgMCwgNjEsIDkwNDExXDAiCiAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAiTEFNRSBBdWRpbyBFbmNvZGVyXDAiCiAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgqSAyMDA1IEVsZWNhcmQgTHRkLlwwIgogICAgICAgICAgICBWQUxVRSAiTGVnYWxUcmFkZW1hcmtzIiwgIlwwIgogICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJsYW1lLmF4XDAiCiAgICAgICAgICAgIFZBTFVFICJQcml2YXRlQnVpbGQiLCAiXDAiCiAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJMQU1FIEF1ZGlvIEVuY29kZXJcMCIKICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgIjEsIDAsIDYxLCA5MDQxMVwwIgogICAgICAgICAgICBWQUxVRSAiU3BlY2lhbEJ1aWxkIiwgIlwwIgogICAgICAgIEVORAogICAgRU5ECiAgICBCTE9DSyAiVmFyRmlsZUluZm8iCiAgICBCRUdJTgogICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4NDA5LCAxMjAwCiAgICBFTkQKRU5ECgojZW5kaWYgICAgLy8gIV9NQUMKCgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLwovLyBTdHJpbmcgVGFibGUKLy8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFIApCRUdJTgogICAgSURTX0FVRElPX1BST1BTX1RJVExFICAgIk1QRUcgTGF5ZXIgSUlJIEF1ZGlvIEVuY29kZXIiCiAgICBJRFNfQVVESU9fQURWQU5DRURfVElUTEUgIkFkdmFuY2VkIgogICAgSURTX0FCT1VUICAgICAgICAgICAgICAgIkFib3V0IgpFTkQKCiNlbmRpZiAgICAvLyBFbmdsaXNjaCAoVVNBKSByZXNvdXJjZXMKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCgoKI2lmbmRlZiBBUFNUVURJT19JTlZPS0VECi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vCi8vIEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAzIHJlc291cmNlLgovLwoKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiNlbmRpZiAgICAvLyBub3QgQVBTVFVESU9fSU5WT0tFRAoK