LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBLb3JlYW4KICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSg5NDkpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19LT1JFQU4KewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMmE3XHg4MDAwXHg3Y2Y5XHgzOWQ3XHgwMDEwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjgyIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMCIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMiIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiOTQ5IgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI5NDkiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiODIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODMzIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDEyIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjk0OSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDEyIgogIExPQ0FMRV9JTERBVEUgIjIiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjEiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICI1IgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMCIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMSIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIr/AwPwiCiAgTE9DQUxFX1MyMzU5ICK/wMjEIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIktPUiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICK/+SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLIrSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICK89iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICK48SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICKx3SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICLF5CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLAzyIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJLT1IiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICIxIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiMiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIjMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICI0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAiNSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIjYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICI3IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiOCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIjkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiMTAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiMTEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiMTIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiS29yZWEiCiAgTE9DQUxFX1NDVVJSRU5DWSBMIlx4MjBhOSIKICBMT0NBTEVfU0RBVEUgIi0iCiAgTE9DQUxFX1NEQVlOQU1FMSAiv/m/5MDPIgogIExPQ0FMRV9TREFZTkFNRTIgIsitv+TAzyIKICBMT0NBTEVfU0RBWU5BTUUzICK89r/kwM8iCiAgTE9DQUxFX1NEQVlOQU1FNCAiuPG/5MDPIgogIExPQ0FMRV9TREFZTkFNRTUgIrHdv+TAzyIKICBMT0NBTEVfU0RBWU5BTUU2ICLF5L/kwM8iCiAgTE9DQUxFX1NEQVlOQU1FNyAiwM+/5MDPIgogIExPQ0FMRV9TREVDSU1BTCAiLiIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIktvcmVhIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIktvcmVhbiBXb24iCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiS29yZWFuIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIktSVyIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiS1IiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAia28iCiAgTE9DQUxFX1NMQU5HVUFHRSAiS29yZWFuIgogIExPQ0FMRV9TTElTVCAiLCIKICBMT0NBTEVfU0xPTkdEQVRFICJ5eXl5J7PiJyBNJ7/5JyBkJ8DPJyBkZGRkIgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICIxv/kiCiAgTE9DQUxFX1NNT05USE5BTUUyICIyv/kiCiAgTE9DQUxFX1NNT05USE5BTUUzICIzv/kiCiAgTE9DQUxFX1NNT05USE5BTUU0ICI0v/kiCiAgTE9DQUxFX1NNT05USE5BTUU1ICI1v/kiCiAgTE9DQUxFX1NNT05USE5BTUU2ICI2v/kiCiAgTE9DQUxFX1NNT05USE5BTUU3ICI3v/kiCiAgTE9DQUxFX1NNT05USE5BTUU4ICI4v/kiCiAgTE9DQUxFX1NNT05USE5BTUU5ICI5v/kiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiMTC/+SIKICBMT0NBTEVfU01PTlRITkFNRTExICIxMb/5IgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIjEyv/kiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQU1FICJrby1LUiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICK068fRuc6xuSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICK/+CIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRURJU1BMQVlOQU1FICLH0bG5vu4gKLTrx9G5zrG5KSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICLH0bG5vu4iCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NPUEVOVFlQRUxBTkdVQUdFVEFHICJLT1IgIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJIYW5nO0hhbmk7IgogIExPQ0FMRV9TU0hPUlREQVRFICJ5eXl5LU1NLWRkIgogIExPQ0FMRV9TU09SVE5BTUUgIkRpY3Rpb25hcnkiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJ0dCBoOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJ5eXl5J7PiJyBNJ7/5JyIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIKfQo=