LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBQb3J0dWd1ZXNlIChCcmF6aWwpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMmZceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDFceDAwMDBceDAwMDBceDQwMDBceDAwMTNceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiNTUiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjAiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjAiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUyIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NTAiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNTUiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQxNiIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5MSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDE2IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjAiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjAiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiQlJBIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgInNlZyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJ0ZXIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAicXVhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgInF1aSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJzZXgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAic+FiIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgImRvbSIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJQVEIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJqYW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJmZXYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJtYXIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJhYnIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJtYWkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJqdW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJqdWwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJhZ28iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJzZXQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAib3V0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIm5vdiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJkZXoiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiQnJhemlsIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIlIkICIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAic2VndW5kYS1mZWlyYSIKICBMT0NBTEVfU0RBWU5BTUUyICJ0ZXLnYS1mZWlyYSIKICBMT0NBTEVfU0RBWU5BTUUzICJxdWFydGEtZmVpcmEiCiAgTE9DQUxFX1NEQVlOQU1FNCAicXVpbnRhLWZlaXJhIgogIExPQ0FMRV9TREFZTkFNRTUgInNleHRhLWZlaXJhIgogIExPQ0FMRV9TREFZTkFNRTYgInPhYmFkbyIKICBMT0NBTEVfU0RBWU5BTUU3ICJkb21pbmdvIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkJyYXppbCIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJCcmF6aWxpYW4gUmVhbCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJQb3J0dWd1ZXNlIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkJSTCIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiQlIiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAicHQiCiAgTE9DQUxFX1NMQU5HVUFHRSAiUG9ydHVndWVzZSAoQnJhemlsKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZGRkZCwgZCcgZGUgJ01NTU0nIGRlICd5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJqYW5laXJvIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiZmV2ZXJlaXJvIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAibWFy528iCiAgTE9DQUxFX1NNT05USE5BTUU0ICJhYnJpbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1haW8iCiAgTE9DQUxFX1NNT05USE5BTUU2ICJqdW5obyIKICBMT0NBTEVfU01PTlRITkFNRTcgImp1bGhvIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYWdvc3RvIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2V0ZW1icm8iCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib3V0dWJybyIKICBMT0NBTEVfU01PTlRITkFNRTExICJub3ZlbWJybyIKICBMT0NBTEVfU01PTlRITkFNRTEyICJkZXplbWJybyIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BTUUgInB0LUJSIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIkJyYXNpbCIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJSZWFsIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIlBvcnR1Z3XqcyIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiTGF0bjsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImQvTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLiIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTScgZGUgJ3l5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkV1cm9wYSBPY2lkZW50YWwgZSBFc3RhZG9zIFVuaWRvcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJFdXJvcGEgQ2VudHJhbCIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQuFsdGljbyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVnbyIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDaXLtbGljbyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmNvIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcG9u6nMiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIkNvcmVhbm8iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJDaGlu6nMgVHJhZGljaW9uYWwiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIkNoaW7qcyBTaW1wbGlmaWNhZG8iCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUYWlsYW5k6nMiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJhaWNvIgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICLBcmFiZSIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtaXRhIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGlhbm8iCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW5vIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybepuaW8iCn0K