LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBCZWxhcnVzaWFuCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MSkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfQkVMQVJVU0lBTiwgU1VCTEFOR19ERUZBVUxUCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDIwM1x4ODAwMFx4Mzg0OFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwNFx4MDAwMFx4MDAwMFx4MDAwMlx4MDAwNFx4MDAwMFx4MDAwMFx4MDIwMiIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIzNzUiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUxIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NjYiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiMzc1IgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICI1MDAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MjMiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDA3IgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMTI1MSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDIzIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiQkxSIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIu/tIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIuCiIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIvHwIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIvf2IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIu/yIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIvHhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIu3kIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkJFTCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgItHy8yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIsv+8iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgItHg6iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIsrw4CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIszg6SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgItf98CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIsuz7yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIsbtsyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIsLl8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICLK4PEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiy7PxIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgItHt5SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJCZWxhcnVzIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIvDz4S4iCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgIu/g7f/k5+Xr4OoiCiAgTE9DQUxFX1NEQVlOQU1FMiAi4KLy7vDg6iIKICBMT0NBTEVfU0RBWU5BTUUzICLx5fDg5OAiCiAgTE9DQUxFX1NEQVlOQU1FNCAi9+D24uXwIgogIExPQ0FMRV9TREFZTkFNRTUgIu//8u2z9uAiCiAgTE9DQUxFX1NEQVlOQU1FNiAi8fPh7vLgIgogIExPQ0FMRV9TREFZTkFNRTcgIu3/5Ofl6/8iCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiQmVsYXJ1cyIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJCZWxhcnVzaWFuIFJ1YmxlIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkJlbGFydXNpYW4iCiAgTE9DQUxFX1NHUk9VUElORyAiMzszIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiQllSIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJCWSIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJiZSIKICBMT0NBTEVfU0xBTkdVQUdFICJCZWxhcnVzaWFuIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzszIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAi0fLz5Ofl7fwiCiAgTE9DQUxFX1NNT05USE5BTUUyICLL/vL7IgogIExPQ0FMRV9TTU9OVEhOQU1FMyAi0eDq4OKz6iIKICBMT0NBTEVfU01PTlRITkFNRTQgIsrw4PHg4rPqIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAizODpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi1/3w4uXt/CIKICBMT0NBTEVfU01PTlRITkFNRTcgIsuz7+Xt/CIKICBMT0NBTEVfU01PTlRITkFNRTggIsbts+Ll7fwiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLC5fDg8eXt/CIKICBMT0NBTEVfU01PTlRITkFNRTEwICLK4PHy8Pv37bPqIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIsuz8fLg7+DkIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgItHt5ebg7fwiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiAiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiweXr4PDz8fwiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAi8PPh5ev8IgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIsHl6+Dw8/Hq4P8iCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQuTU0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIiAiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==