LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBGcmVuY2ggKENhbmFkYSkKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19GUkVOQ0gsIFNVQkxBTkdfRlJFTkNIX0NBTkFESUFOCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDAxM1x4MDAwMFx4MDAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIyIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMiIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwMjk3IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwYzBjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMCIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTkxIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiNiIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjBjMGMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiNCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMCIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiMSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJDQU4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAibHVuLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJtYXIuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIm1lci4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiamV1LiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJ2ZW4uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgInNhbS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiZGltLiIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJGUkMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJqYW52LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImbpdnIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAibWFycyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImF2ci4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJtYWkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJqdWluIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAianVpbC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJhb/t0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAic2VwdC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAib2N0LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJub3YuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImTpYy4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiQ2FuYWRhIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIiQiCiAgTE9DQUxFX1NEQVRFICItIgogIExPQ0FMRV9TREFZTkFNRTEgImx1bmRpIgogIExPQ0FMRV9TREFZTkFNRTIgIm1hcmRpIgogIExPQ0FMRV9TREFZTkFNRTMgIm1lcmNyZWRpIgogIExPQ0FMRV9TREFZTkFNRTQgImpldWRpIgogIExPQ0FMRV9TREFZTkFNRTUgInZlbmRyZWRpIgogIExPQ0FMRV9TREFZTkFNRTYgInNhbWVkaSIKICBMT0NBTEVfU0RBWU5BTUU3ICJkaW1hbmNoZSIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJDYW5hZGEiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiQ2FuYWRpYW4gRG9sbGFyIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkZyZW5jaCIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJDQUQiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkNBIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImZyIgogIExPQ0FMRV9TTEFOR1VBR0UgIkZyZW5jaCAoQ2FuYWRhKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZCBNTU1NLCB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJqYW52aWVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiZul2cmllciIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnMiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJhdnJpbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1haSIKICBMT0NBTEVfU01PTlRITkFNRTYgImp1aW4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJqdWlsbGV0IgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYW/7dCIKICBMT0NBTEVfU01PTlRITkFNRTkgInNlcHRlbWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTEwICJvY3RvYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIm5vdmVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImTpY2VtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAiZnItQ0EiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiQ2FuYWRhIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIkRvbGxhciBjYW5hZGllbiIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJmcmFu52FpcyIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJ5eXl5LU1NLWRkIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSwgeXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiRXVyb3BlIG9jY2lkZW50YWxlIGV0IMl0YXRzLVVuaXMgZCdBbelyaXF1ZSIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJFdXJvcGUgY2VudHJhbGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpcXVlIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWMiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaXF1ZSIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwb25haXMiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIkNvcullbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIkNoaW5vaXMgdHJhZGl0aW9ubmVsIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJDaGlub2lzIHNpbXBsaWZp6SIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYe8iCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkjpYnJldSIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmUiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWllbiIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpZW4iCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR+lvcmdpZW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJt6W5pYW4iCn0K