LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBcmFiaWMgKFN5cmlhKQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGV3ZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTYpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0FSQUJJQywgU1VCTEFOR19BUkFCSUNfU1lSSUEKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHg2MGFmXHg4MDAwXHgzODQ4XHgxMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgwODAwXHgwMDQwXHgwMDAwXHgwMDAwXHgyMDAwXHgwMDQwXHgwMDAwXHgwMDAwXHgyMDA4IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk2MyIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMiIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTYiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjcyMCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5NjMiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwNDIwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIyODAxIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNCIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIwIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjUiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIyODAxIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjMiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjMiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjIiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjYiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjIiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVRJTUUgIjAiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICLVIgogIExPQ0FMRV9TMjM1OSAi4yIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJTWVIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAix+HHy+Tt5CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLH4cvhx8vHwSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICLH4cfRyNrHwSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICLH4c7j7dMiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAix+HM49rJIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIsfh08jKIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIsfhx83PIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkFSUyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIt/H5ObkoMfhy8fk7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgItTIx9giCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLC0MfRIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAi5O3Tx+QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICLD7cfRIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAizdLt0cfkIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiyuPm0iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIsLIIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAiw+3h5uEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiytTR7eSgx+HD5uEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiytTR7eSgx+HLx+TtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIt/H5ObkoMfhw+bhIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIlN5cmlhIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIuEu0y7+IgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICLH4cfL5O3kIgogIExPQ0FMRV9TREFZTkFNRTIgIsfhy+HHy8fBIgogIExPQ0FMRV9TREFZTkFNRTMgIsfhx9HI2sfBIgogIExPQ0FMRV9TREFZTkFNRTQgIsfhzuPt0yIKICBMT0NBTEVfU0RBWU5BTUU1ICLH4czj2skiCiAgTE9DQUxFX1NEQVlOQU1FNiAix+HTyMoiCiAgTE9DQUxFX1NEQVlOQU1FNyAix+HHzc8iCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiU3lyaWEiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiU3lyaWFuIFBvdW5kIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkFyYWJpYyIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJTWVAiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIlNZIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImFyIgogIExPQ0FMRV9TTEFOR1VBR0UgIkFyYWJpYyAoU3lyaWEpIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkZCBNTU1NLCB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICLfx+Tm5KDH4cvH5O0iCiAgTE9DQUxFX1NNT05USE5BTUUyICLUyMfYIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAiwtDH0SIKICBMT0NBTEVfU01PTlRITkFNRTQgIuTt08fkIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAiw+3H0SIKICBMT0NBTEVfU01PTlRITkFNRTYgIs3S7dHH5CIKICBMT0NBTEVfU01PTlRITkFNRTcgIsrj5tIiCiAgTE9DQUxFX1NNT05USE5BTUU4ICLCyCIKICBMT0NBTEVfU01PTlRITkFNRTkgIsPt4ebhIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIsrU0e3koMfhw+bhIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIsrU0e3koMfhy8fk7SIKICBMT0NBTEVfU01PTlRITkFNRTEyICLfx+Tm5KDH4cPm4SIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLCIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLT5tHtxyIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICLM5O3loNPm0e0iCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgTCJceDA2NjBceDA2NjFceDA2NjJceDA2NjNceDA2NjRceDA2NjVceDA2NjZceDA2NjdceDA2NjhceDA2NjkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAix+Ha0cjtySIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC9NTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJoaDptbTpzcyB0dCIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSwgeXl5eSIKfQo=