LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBTY290cyBHYWVsaWMKICoKICogQ29weXJpZ2h0IDE5OTggTWFyY2VsIEJhdXIKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19HQUVMSUMsIFNVQkxBTkdfR0FFTElDX1NDT1RUSVNICnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDFmZlx4MDAzZlx4ODAwMFx4ZmZmZiIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjAiCiAgTE9DQUxFX0lDT1VOVFJZICI0NCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMCIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTIiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI0NCIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjAyODUiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0M2MiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDAwIgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMjg2MDUiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICIwIgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIwIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDgzYyIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjEiCiAgTE9DQUxFX0lORUdDVVJSICIxIgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIzIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiQU0iCiAgTE9DQUxFX1MyMzU5ICJQTSIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJHQlIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiRGlsdSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJEaW3gIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIkRpY2EiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiRGlhciIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJEaWhhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIkRpc2EiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiRGlk8iIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJHREgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJGYW8iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJHZWEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJN4HIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJHaWIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJNaOAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJPZ00iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJMdWMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJM+W4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJTdWwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiRGFtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIlNhbSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJE+WIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiQnJlYXRhaW5uIE1o8nIiCiAgTE9DQUxFX1NDVVJSRU5DWSAioyIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAiRGlsdWFpbiIKICBMT0NBTEVfU0RBWU5BTUUyICJEaW3gaXJ0IgogIExPQ0FMRV9TREFZTkFNRTMgIkRpY2lhZGFpbiIKICBMT0NBTEVfU0RBWU5BTUU0ICJEaWFyZGFvaW4iCiAgTE9DQUxFX1NEQVlOQU1FNSAiRGloYW9pbmUiCiAgTE9DQUxFX1NEQVlOQU1FNiAiRGlzYXRoYWlybmUiCiAgTE9DQUxFX1NEQVlOQU1FNyAiRGlk8m1obmFpY2giCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiVW5pdGVkIEtpbmdkb20iCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiVUsgUG91bmQgU3RlcmxpbmciCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiU2NvdHMgR2FlbGljIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkdCUCIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiR0IiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiZ2QiCiAgTE9DQUxFX1NMQU5HVUFHRSAiR2FpZGhsaWcgKEJyZWF0YWlubiBNaPJyKSIKICBMT0NBTEVfU0xJU1QgIiwiCiAgTE9DQUxFX1NMT05HREFURSAiZGQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJBbSBGYW9pbHRlYWNoIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiQW4gR2VhcmFubiIKICBMT0NBTEVfU01PTlRITkFNRTMgIkFtIE3gcnQiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJBbiBHaWJsZWFuIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAiQSdNaOBpZ2giCiAgTE9DQUxFX1NNT05USE5BTUU2ICJBbiB0LU9nIE1o7G9zIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiQW4gdC1sdWNoYXIiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJBbiBM+W5hc2RhbCIKICBMT0NBTEVfU01PTlRITkFNRTkgIkFuIHQtU3VsdGFpbiIKICBMT0NBTEVfU01PTlRITkFNRTEwICJBbiBEYW1oYWlyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIkFuIHQtU2FtaGFpbiIKICBMT0NBTEVfU01PTlRITkFNRTEyICJBbiBE+WJobGFjaGQiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiQnJlYXRhaW5uIE1o8nIiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIkdhaWRobGlnIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkL01NL3l5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==