LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBDb3JuaXNoIChVbml0ZWQgS2luZ2RvbSkKICoKICogQ29weXJpZ2h0IDE5OTggTWFyY2VsIEJhdXIKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19DT1JOSVNILCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMWZmXHgwMDNmXHg4MDAwXHhmZmZmIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMCIKICBMT0NBTEVfSUNPVU5UUlkgIjQ0IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjQ0IgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI4NSIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwOSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODYwNSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDkyIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjEiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIkFNIgogIExPQ0FMRV9TMjM1OSAiUE0iCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiR0JSIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIkx1biIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJNdGgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAiTWhyIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIllvdyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJHd2UiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiU2FkIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIlN1bCIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJDT1IiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJHZW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJXaGUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJNZXIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJFYnIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJNZSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIkV2biIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIkdvciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIkVzdCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIkd3biIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJIZWQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiRHUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiS2V2IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIlVuaXRlZCBLaW5nZG9tIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIqMiCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgIkRlIEx1biIKICBMT0NBTEVfU0RBWU5BTUUyICJEZSBNZXJ0aCIKICBMT0NBTEVfU0RBWU5BTUUzICJEZSBNZXJoZXIiCiAgTE9DQUxFX1NEQVlOQU1FNCAiRGUgWW93IgogIExPQ0FMRV9TREFZTkFNRTUgIkRlIEd3ZW5lciIKICBMT0NBTEVfU0RBWU5BTUU2ICJEZSBTYWRvcm4iCiAgTE9DQUxFX1NEQVlOQU1FNyAiRGUgU3VsIgogIExPQ0FMRV9TREVDSU1BTCAiLiIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIlVuaXRlZCBLaW5nZG9tIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlVLIFBvdW5kIFN0ZXJsaW5nIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkNvcm5pc2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiR0JQIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJHQiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJrdyIKICBMT0NBTEVfU0xBTkdVQUdFICJDb3JuaXNoIChVbml0ZWQgS2luZ2RvbSkiCiAgTE9DQUxFX1NMSVNUICIsIgogIExPQ0FMRV9TTE9OR0RBVEUgImRkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiTXlzIEdlbnZlciIKICBMT0NBTEVfU01PTlRITkFNRTIgIk15cyBXaGV2cmVsIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAiTXlzIE1lcnRoIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiTXlzIEVicmVsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAiTXlzIE1lIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiTXlzIEV2YW4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJNeXMgR29ydGhlcmVuIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiTXlzIEVzdCIKICBMT0NBTEVfU01PTlRITkFNRTkgIk15cyBHd3luZ2FsYSIKICBMT0NBTEVfU01PTlRITkFNRTEwICJNeXMgSGVkcmEiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAiTXlzIER1IgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIk15cyBLZXZhcmRodSIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLCIKICBMT0NBTEVfU05BTUUgImt3LUdCIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIlJ1d3ZhbmV0aCBVbnlzIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIlBldW5zIFN0ZXJsaW5nIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgIktlcm5ld2VrIChSdXd2YW5ldGggVW55cykiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiS2VybmV3ZWsiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC9NTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgogIAogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K