IyBNZW5zYWplcyBlbiBlc3Bh8W9sIHBhcmEgR05VIGxpYmljb252LgojIENvcHlyaWdodCAoQykgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIyBTYW50aWFnbyBWaWxhIERvbmNlbCA8c2FudmlsYUB1bmV4LmVzPiwgMjAwMi4KIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgbGliaWNvbnYgcGFja2FnZS4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogR05VIGxpYmljb252IDEuOFxuIgoiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGJ1Zy1nbnUtbGliaWNvbnZAZ251Lm9yZ1xuIgoiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDYtMDEtMjMgMTQ6MjYrMDEwMFxuIgoiUE8tUmV2aXNpb24tRGF0ZTogMjAwMi0wNi0yMCAxNzowMCswMjAwXG4iCiJMYXN0LVRyYW5zbGF0b3I6IFNhbnRpYWdvIFZpbGEgRG9uY2VsIDxzYW52aWxhQHVuZXguZXM+XG4iCiJMYW5ndWFnZS1UZWFtOiBTcGFuaXNoIDxlc0BsaS5vcmc+XG4iCiJNSU1FLVZlcnNpb246IDEuMFxuIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTFcbiIKIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDgtYml0XG4iCgojOiBzcmMvaWNvbnYuYzo4MAptc2dpZCAiVXNhZ2U6IGljb252IFstY10gWy1zXSBbLWYgZnJvbWNvZGVdIFstdCB0b2NvZGVdIFtmaWxlIC4uLl0iCm1zZ3N0ciAiTW9kbyBkZSBlbXBsZW86IGljb252IFstY10gWy1zXSBbLWYgZGVzZGVdIFstdCBoYXN0YV0gW2ZpY2hlcm8gLi4uXSIKCiM6IHNyYy9pY29udi5jOjgyCm1zZ2lkICJvcjogICAgaWNvbnYgLWwiCm1zZ3N0ciAibyBiaWVuOiBpY29udiAtbCIKCiM6IHNyYy9pY29udi5jOjg0CiMsIGMtZm9ybWF0Cm1zZ2lkICJUcnkgYCVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6ODcKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIlVzYWdlOiAlcyBbT1BUSU9OLi4uXSBbLWYgRU5DT0RJTkddIFstdCBFTkNPRElOR10gW0lOUFVURklMRS4uLl1cbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzo5MQojLCBmdXp6eSwgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIm9yOiAgICAlcyAtbFxuIgptc2dzdHIgIm8gYmllbjogaWNvbnYgLWwiCgojOiBzcmMvaWNvbnYuYzo5NgojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiQ29udmVydHMgdGV4dCBmcm9tIG9uZSBlbmNvZGluZyB0byBhbm90aGVyIGVuY29kaW5nLlxuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjEwMAojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiT3B0aW9ucyBjb250cm9sbGluZyB0aGUgaW5wdXQgYW5kIG91dHB1dCBmb3JtYXQ6XG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTAzCiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICIiCiIgIC1mIEVOQ09ESU5HLCAtLWZyb20tY29kZT1FTkNPRElOR1xuIgoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGVuY29kaW5nIG9mIHRoZSBpbnB1dFxuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjEwNwojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiIgoiICAtdCBFTkNPRElORywgLS10by1jb2RlPUVOQ09ESU5HXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZW5jb2Rpbmcgb2YgdGhlIG91dHB1dFxuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjExMgojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiT3B0aW9ucyBjb250cm9sbGluZyBjb252ZXJzaW9uIHByb2JsZW1zOlxuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjExNQojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiICAtYyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY2FyZCB1bmNvbnZlcnRpYmxlIGNoYXJhY3RlcnNcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxMTgKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIiIKIiAgLS11bmljb2RlLXN1YnN0PUZPUk1BVFNUUklOR1xuIgoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uIGZvciB1bmNvbnZlcnRpYmxlIFVuaWNvZGUgY2hhcmFjdGVyc1xuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjEyMgojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiICAtLWJ5dGUtc3Vic3Q9Rk9STUFUU1RSSU5HICAgc3Vic3RpdHV0aW9uIGZvciB1bmNvbnZlcnRpYmxlIGJ5dGVzXG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTI1CiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICIiCiIgIC0td2lkZWNoYXItc3Vic3Q9Rk9STUFUU1RSSU5HXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb24gZm9yIHVuY29udmVydGlibGUgd2lkZSBjaGFyYWN0ZXJzXG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTMwCiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICJPcHRpb25zIGNvbnRyb2xsaW5nIGVycm9yIG91dHB1dDpcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxMzMKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIiAgLXMsIC0tc2lsZW50ICAgICAgICAgICAgICAgIHN1cHByZXNzIGVycm9yIG1lc3NhZ2VzIGFib3V0IGNvbnZlcnNpb24gcHJvYmxlbXNcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxMzcKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIkluZm9ybWF0aXZlIG91dHB1dDpcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxNDAKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIiAgLWwsIC0tbGlzdCAgICAgICAgICAgICAgICAgIGxpc3QgdGhlIHN1cHBvcnRlZCBlbmNvZGluZ3NcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxNDMKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIiAgLS1oZWxwICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0XG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTQ2CiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICIgIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdFxuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjE0OQptc2dpZCAiUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1nbnUtbGliaWNvbnZAZ251Lm9yZz4uXG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTU5CiMsIGMtZm9ybWF0Cm1zZ2lkICIiCiJUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOT1xuIgoid2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuXG4iCm1zZ3N0ciAiIgoiRXN0byBlcyBzb2Z0d2FyZSBsaWJyZTsgdmVhIGVsIGPzZGlnbyBmdWVudGUgcGFyYSBsYXMgY29uZGljaW9uZXMgZGUgY29waWEuXG4iCiJObyBoYXkgTklOR1VOQSBnYXJhbnTtYTsgbmkgc2lxdWllcmEgZGUgQ09NRVJDSUFCSUxJREFEIG8gSURPTkVJREFEIFBBUkEgVU5cbiIKIkZJTiBERVRFUk1JTkFETy5cbiIKCiM6IHNyYy9pY29udi5jOjE2MgojLCBjLWZvcm1hdAptc2dpZCAiV3JpdHRlbiBieSAlcy5cbiIKbXNnc3RyICJFc2NyaXRvIHBvciAlcy5cbiIKCiM6IHNyYy9pY29udi5jOjI1MwojLCBjLWZvcm1hdAptc2dpZCAiIgoiJXMgYXJndW1lbnQ6IEEgZm9ybWF0IGRpcmVjdGl2ZSB3aXRoIGEgdmFyaWFibGUgd2lkdGggaXMgbm90IGFsbG93ZWQgaGVyZS4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MjY0CiMsIGMtZm9ybWF0Cm1zZ2lkICIiCiIlcyBhcmd1bWVudDogQSBmb3JtYXQgZGlyZWN0aXZlIHdpdGggYSB2YXJpYWJsZSBwcmVjaXNpb24gaXMgbm90IGFsbG93ZWQgIgoiaGVyZS4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6Mjc2CiMsIGMtZm9ybWF0Cm1zZ2lkICIlcyBhcmd1bWVudDogQSBmb3JtYXQgZGlyZWN0aXZlIHdpdGggYSBzaXplIGlzIG5vdCBhbGxvd2VkIGhlcmUuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjMxNAojLCBjLWZvcm1hdAptc2dpZCAiJXMgYXJndW1lbnQ6IFRoZSBzdHJpbmcgZW5kcyBpbiB0aGUgbWlkZGxlIG9mIGEgZGlyZWN0aXZlLiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzozMTYKIywgYy1mb3JtYXQKbXNnaWQgIiVzIGFyZ3VtZW50OiBUaGUgY2hhcmFjdGVyICclYycgaXMgbm90IGEgdmFsaWQgY29udmVyc2lvbiBzcGVjaWZpZXIuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjMxOAojLCBjLWZvcm1hdAptc2dpZCAiIgoiJXMgYXJndW1lbnQ6IFRoZSBjaGFyYWN0ZXIgdGhhdCB0ZXJtaW5hdGVzIHRoZSBmb3JtYXQgZGlyZWN0aXZlIGlzIG5vdCBhICIKInZhbGlkIGNvbnZlcnNpb24gc3BlY2lmaWVyLiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzozMjkKIywgYy1mb3JtYXQKbXNnaWQgIiIKIiVzIGFyZ3VtZW50OiBUaGUgZm9ybWF0IHN0cmluZyBjb25zdW1lcyBtb3JlIHRoYW4gb25lIGFyZ3VtZW50OiAldSBhcmd1bWVudHMuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjM4MQojLCBjLWZvcm1hdAptc2dpZCAiY2Fubm90IGNvbnZlcnQgYnl0ZSBzdWJzdGl0dXRpb24gdG8gVW5pY29kZTogJXMiCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6NDE3CiMsIGMtZm9ybWF0Cm1zZ2lkICJjYW5ub3QgY29udmVydCB1bmljb2RlIHN1YnN0aXR1dGlvbiB0byB0YXJnZXQgZW5jb2Rpbmc6ICVzIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjQ1NAojLCBjLWZvcm1hdAptc2dpZCAiY2Fubm90IGNvbnZlcnQgYnl0ZSBzdWJzdGl0dXRpb24gdG8gd2lkZSBzdHJpbmc6ICVzIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjQ5MQojLCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6IGNhbm5vdCBjb252ZXJ0IHdpZGVjaGFyIHN1YnN0aXR1dGlvbiB0byB0YXJnZXQgZW5jb2Rpbmc6ICVzIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjUyOAojLCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6IGNhbm5vdCBjb252ZXJ0IGJ5dGUgc3Vic3RpdHV0aW9uIHRvIHRhcmdldCBlbmNvZGluZzogJXMiCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6NTYyIHNyYy9pY29udi5jOjYwNiBzcmMvaWNvbnYuYzo2ODAKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICIlczoldToldTogaW5jb21wbGV0ZSBjaGFyYWN0ZXIgb3Igc2hpZnQgc2VxdWVuY2UiCm1zZ3N0ciAiaWNvbnY6ICVzOiBjYXLhY3RlciBvIHNlY3VlbmNpYSBkZSBkZXNwbGF6YW1pZW50byBpbmNvbXBsZXRhXG4iCgojOiBzcmMvaWNvbnYuYzo1OTUgc3JjL2ljb252LmM6NjcwCiMsIGZ1enp5LCBjLWZvcm1hdAptc2dpZCAiJXM6JXU6JXU6IGNhbm5vdCBjb252ZXJ0Igptc2dzdHIgImljb252OiAlczogbm8gc2UgcHVlZGUgY29udmVydGlyXG4iCgojOiBzcmMvaWNvbnYuYzo2Mzcgc3JjL2ljb252LmM6NzAwCiMsIGZ1enp5LCBjLWZvcm1hdAptc2dpZCAiJXM6JXU6JXUiCm1zZ3N0ciAiaWNvbnY6ICVzOiAiCgojOiBzcmMvaWNvbnYuYzo3MTIKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICIlczogSS9PIGVycm9yIgptc2dzdHIgImljb252OiAlczogZXJyb3IgZGUgRS9TXG4iCgojOiBzcmMvaWNvbnYuYzo4OTYKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICJjb252ZXJzaW9uIGZyb20gJXMgdW5zdXBwb3J0ZWQiCm1zZ3N0ciAiaWNvbnY6IG5vIHNlIGFkbWl0ZSBsYSBjb252ZXJzafNuIGRlIGAlcydcbiIKCiM6IHNyYy9pY29udi5jOjg5OAojLCBmdXp6eSwgYy1mb3JtYXQKbXNnaWQgImNvbnZlcnNpb24gdG8gJXMgdW5zdXBwb3J0ZWQiCm1zZ3N0ciAibm8gc2UgYWRtaXRlIGxhIGNvbnZlcnNp824gYSBgJXMnXG4iCgojOiBzcmMvaWNvbnYuYzo5MDAKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICJjb252ZXJzaW9uIGZyb20gJXMgdG8gJXMgdW5zdXBwb3J0ZWQiCm1zZ3N0ciAiaWNvbnY6IG5vIHNlIGFkbWl0ZSBsYSBjb252ZXJzafNuIGRlIGAlcycgYSBgJXMnXG4iCgojOiBzcmMvaWNvbnYuYzo5MDEKIywgYy1mb3JtYXQKbXNnaWQgInRyeSAnJXMgLWwnIHRvIGdldCB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZW5jb2RpbmdzIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjk1NQptc2dpZCAiKHN0ZGluKSIKbXNnc3RyICIoZW50cmFkYSBlc3ThbmRhcikiCgojOiBzcmMvaWNvbnYuYzo5NjMKIywgYy1mb3JtYXQKbXNnaWQgIiVzIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjk3NAojLCBmdXp6eQptc2dpZCAiSS9PIGVycm9yIgptc2dzdHIgImljb252OiBlcnJvciBkZSBFL1NcbiIKCiN+IG1zZ2lkICJpY29udjogJXM6ICIKI34gbXNnc3RyICJpY29udjogJXM6ICIKCiN+IG1zZ2lkICIiCiN+ICJVc2FnZTogaWNvbnYgWy0tYmluYXJ5XSBbLWNdIFstc10gWy1mIGZyb21jb2RlXSBbLXQgdG9jb2RlXSBbZmlsZSAuLi5dIgojfiBtc2dzdHIgIiIKI34gIk1vZG8gZGUgZW1wbGVvOiBpY29udiBbLS1iaW5hcnldIFstY10gWy1zXSBbLWYgZGVzZGVdIFstdCBoYXN0YV0gIgojfiAiW2ZpY2hlcm8gLi4uXSIK