IyEvYmluL3NoCiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYgSm9oYW5uZXMgRS4gU2NoaW5kZWxpbgojCgp0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc2hvcnRsb2cKJwoKLiAuL3Rlc3QtbGliLnNoCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJwoJdGVzdF90aWNrICYmCgllY2hvIDEgPmExICYmCglnaXQgYWRkIGExICYmCgl0cmVlPSQoZ2l0IHdyaXRlLXRyZWUpICYmCgljb21taXQ9JChwcmludGYgIiVzXG4iICJUZXN0IiAiIiB8IGdpdCBjb21taXQtdHJlZSAiJHRyZWUiKSAmJgoJZ2l0IHVwZGF0ZS1yZWYgSEVBRCAiJGNvbW1pdCIgJiYKCgllY2hvIDIgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIlRoaXMgaXMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZmlyc3QgbGluZSBmb3IgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIHNlZSBpZiBpdCBpcyB3cmFwcGVkIGNvcnJlY3RseSIgYTEgJiYKCgkjIHRlc3QgaWYgdGhlIHdyYXBwaW5nIGlzIHN0aWxsIHZhbGlkCgkjIHdoZW4gcmVwbGFjaW5nIGFsbCBpcyBieSB0cmVibGUgY2xlZnMuCgllY2hvIDMgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIiQoCgkJZWNobyAiVGhpcyBpcyBhIHZlcnksIHZlcnkgbG9uZyBmaXJzdCBsaW5lIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gc2VlIGlmIGl0IGlzIHdyYXBwZWQgY29ycmVjdGx5IiB8CgkJc2VkICJzL2kvMTIzNC9nIiB8CgkJdHIgMTIzNCAiXDM2MFwyMzVcMjA0XDIzNiIpIiBhMSAmJgoKCSMgbm93IGZzY2sgdXAgdGhlIHV0ZjgKCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBub24tdXRmLTggJiYKCWVjaG8gNCA+YTEgJiYKCWdpdCBjb21taXQgLS1xdWlldCAtbSAiJCgKCQllY2hvICJUaGlzIGlzIGEgdmVyeSwgdmVyeSBsb25nIGZpcnN0IGxpbmUgZm9yIHRoZSBjb21taXQgbWVzc2FnZSB0byBzZWUgaWYgaXQgaXMgd3JhcHBlZCBjb3JyZWN0bHkiIHwKCQlzZWQgInMvaS8xMjM0L2ciIHwKCQl0ciAxMjM0ICJcMzcwXDIzNVwyMDRcMjM2IikiIGExICYmCgoJZWNobyA1ID5hMSAmJgoJZ2l0IGNvbW1pdCAtLXF1aWV0IC1tICJhCQkJCQkJCQkxMgkzNAk1Ngk3OCIgYTEgJiYKCgllY2hvIDYgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIkNvbW1pdCBieSBzb21lb25lIGVsc2UiIFwKCQktLWF1dGhvcj0iU29tZW9uZSBlbHNlIDxub3QhbWU+IiBhMSAmJgoKCWNhdCA+ZXhwZWN0LnRlbXBsYXRlIDw8LVxFT0YKCUEgVSBUaG9yICg1KToKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCglTb21lb25lIGVsc2UgKDEpOgoJICAgICAgU1VCSkVDVAoKCUVPRgonCgpmdXp6KCkgewoJZmlsZT0kMSAmJgoJc2VkICIKCQkJcy8kX3g0MC9PQkpFQ1RfTkFNRS9nCgkJCXMvJF94MzUvT0JKSUQvZwoJCQlzL14gXHs2XH1bQ1RhXS4qLyAgICAgIFNVQkpFQ1QvZwoJCQlzL14gXHs4XH1bXiBdLiovICAgICAgICBDT05USU5VQVRJT04vZwoJCSIgPCIkZmlsZSIgPiIkZmlsZS5mdXp6eSIgJiYKCXNlZCAiL0NPTlRJTlVBVElPTi8gZCIgPCIkZmlsZS5mdXp6eSIKfQoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVmYXVsdCBvdXRwdXQgZm9ybWF0JyAnCglnaXQgc2hvcnRsb2cgSEVBRCA+bG9nICYmCglmdXp6IGxvZyA+bG9nLnByZWRpY3RhYmxlICYmCgl0ZXN0X2NtcCBleHBlY3QudGVtcGxhdGUgbG9nLnByZWRpY3RhYmxlCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXR0eSBmb3JtYXQnICcKCXNlZCBzL1NVQkpFQ1QvT0JKRUNUX05BTUUvIGV4cGVjdC50ZW1wbGF0ZSA+ZXhwZWN0ICYmCglnaXQgc2hvcnRsb2cgLS1mb3JtYXQ9IiVIIiBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdCBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1hYmJyZXYnICcKCXNlZCBzL1NVQkpFQ1QvT0JKSUQvIGV4cGVjdC50ZW1wbGF0ZSA+ZXhwZWN0ICYmCglnaXQgc2hvcnRsb2cgLS1mb3JtYXQ9IiVoIiAtLWFiYnJldj0zNSBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdCBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnb3V0cHV0IGZyb20gdXNlci1kZWZpbmVkIGZvcm1hdCBpcyByZS13cmFwcGVkJyAnCglzZWQgInMvU1VCSkVDVC90d28gbGluZXMvIiBleHBlY3QudGVtcGxhdGUgPmV4cGVjdCAmJgoJZ2l0IHNob3J0bG9nIC0tZm9ybWF0PSJ0d28lbmxpbmVzIiBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdCBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1cgJ3Nob3J0bG9nIHdyYXBwaW5nJyAnCgljYXQgPmV4cGVjdCA8PFxFT0YgJiYKQSBVIFRob3IgKDUpOgogICAgICBUZXN0CiAgICAgIFRoaXMgaXMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZmlyc3QgbGluZSBmb3IgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIHNlZSBpZgogICAgICAgICBpdCBpcyB3cmFwcGVkIGNvcnJlY3RseQogICAgICBUaPCdhJ5zIPCdhJ5zIGEgdmVyeSwgdmVyeSBsb25nIGbwnYSecnN0IGzwnYSebmUgZm9yIHRoZSBjb21t8J2EnnQgbWVzc2FnZSB0byBzZWUg8J2EnmYKICAgICAgICAg8J2EnnQg8J2EnnMgd3JhcHBlZCBjb3JyZWN0bHkKICAgICAgVGj4nYSecyD4nYSecyBhIHZlcnksIHZlcnkgbG9uZyBm+J2EnnJzdCBs+J2Enm5lIGZvciB0aGUgY29tbfidhJ50CiAgICAgICAgIG1lc3NhZ2UgdG8gc2VlIPidhJ5mIPidhJ50IPidhJ5zIHdyYXBwZWQgY29ycmVjdGx5CiAgICAgIGEJCQkJCQkJCTEyCTM0CiAgICAgICAgIDU2CTc4CgpTb21lb25lIGVsc2UgKDEpOgogICAgICBDb21taXQgYnkgc29tZW9uZSBlbHNlCgpFT0YKCWdpdCBzaG9ydGxvZyAtdyBIRUFEID5vdXQgJiYKCXRlc3RfY21wIGV4cGVjdCBvdXQKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1cgJ3Nob3J0bG9nIGZyb20gbm9uLWdpdCBkaXJlY3RvcnknICcKCWdpdCBsb2cgLS1uby1leHBhbmQtdGFicyBIRUFEID5sb2cgJiYKCUdJVF9ESVI9bm9uLWV4aXN0aW5nIGdpdCBzaG9ydGxvZyAtdyA8bG9nID5vdXQgJiYKCXRlc3RfY21wIGV4cGVjdCBvdXQKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1cgJ3Nob3J0bG9nIGNhbiByZWFkIC0tZm9ybWF0PXJhdyBvdXRwdXQnICcKCWdpdCBsb2cgLS1mb3JtYXQ9cmF3IEhFQUQgPmxvZyAmJgoJR0lUX0RJUj1ub24tZXhpc3RpbmcgZ2l0IHNob3J0bG9nIC13IDxsb2cgPm91dCAmJgoJdGVzdF9jbXAgZXhwZWN0IG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBmcm9tIG5vbi1naXQgZGlyZWN0b3J5IHJlZnVzZXMgZXh0cmEgYXJndW1lbnRzJyAnCgl0ZXN0X211c3RfZmFpbCBlbnYgR0lUX0RJUj1ub24tZXhpc3RpbmcgZ2l0IHNob3J0bG9nIGZvbyAyPm91dCAmJgoJdGVzdF9pMThuZ3JlcCAidG9vIG1hbnkgYXJndW1lbnRzIiBvdXQKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgc2hvdWxkIGFkZCBuZXdsaW5lIHdoZW4gaW5wdXQgbGluZSBtYXRjaGVzIHdyYXBsZW4nICcKCWNhdCA+ZXhwZWN0IDw8XEVPRiAmJgpBIFUgVGhvciAoMik6CiAgICAgIGJiYmJiYmJiYmJiYmJiYmJiYjogYmJiYmJiYmIgYmJiIGJiYmIgYmJiYmJiYiBiYiBiYmJiIGJiYiBiYmJiYiBiYmJiYmIKICAgICAgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYTogYWFhYWFhIGFhYWFhYWFhYWEgYWFhYSBhYWFhYWFhYSBhYSBhYWFhIGFhIGFhYQoKRU9GCglnaXQgc2hvcnRsb2cgLXcgPm91dCA8PFxFT0YgJiYKY29tbWl0IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEKQXV0aG9yOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgpEYXRlOiAgIFRodSBBcHIgNyAxNToxNDoxMyAyMDA1IC0wNzAwCgogICAgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYTogYWFhYWFhIGFhYWFhYWFhYWEgYWFhYSBhYWFhYWFhYSBhYSBhYWFhIGFhIGFhYQoKY29tbWl0IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIKQXV0aG9yOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgpEYXRlOiAgIFRodSBBcHIgNyAxNToxNDoxMyAyMDA1IC0wNzAwCgogICAgYmJiYmJiYmJiYmJiYmJiYmJiOiBiYmJiYmJiYiBiYmIgYmJiYiBiYmJiYmJiIGJiIGJiYmIgYmJiIGJiYmJiIGJiYmJiYgoKRU9GCgl0ZXN0X2NtcCBleHBlY3Qgb3V0CicKCmljb252ZnJvbXV0Zjh0b2lzbzg4NTkxKCkgewoJcHJpbnRmICIlcyIgIiQqIiB8IGljb252IC1mIFVURi04IC10IElTTzg4NTktMQp9CgpEU0NITz0iSsO2aMOkbm7Dq3MgXCJEc2Now7ZcIiBTY2hpbmTDq2xpbiIKRFNDSE9FPSIkRFNDSE8gPEpvaGFubmVzLlNjaGluZGVsaW5AZ214LmRlPiIKTVNHMT0ic2V0IGExIHRvIDIgYW5kIHNvbWUgbm9uLUFTQ0lJIGNoYXJzOiDDhMOfw7giCk1TRzI9InNldCBhMSB0byAzIGFuZCBzb21lIG5vbi1BU0NJSSBjaGFyczogw6HDpsOvIgpjYXQgPiBleHBlY3QgPDwgRU9GCiREU0NITyAoMik6CiAgICAgICRNU0cxCiAgICAgICRNU0cyCgpFT0YKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgIU1JTkdXICdzaG9ydGxvZyBlbmNvZGluZycgJwoJZ2l0IHJlc2V0IC0taGFyZCAiJGNvbW1pdCIgJiYKCWdpdCBjb25maWcgLS11bnNldCBpMThuLmNvbW1pdGVuY29kaW5nICYmCgllY2hvIDIgPiBhMSAmJgoJZ2l0IGNvbW1pdCAtLXF1aWV0IC1tICIkTVNHMSIgLS1hdXRob3I9IiREU0NIT0UiIGExICYmCglnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgIklTTzg4NTktMSIgJiYKCWVjaG8gMyA+IGExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIiQoaWNvbnZmcm9tdXRmOHRvaXNvODg1OTEgIiRNU0cyIikiIFwKCQktLWF1dGhvcj0iJChpY29udmZyb211dGY4dG9pc284ODU5MSAiJERTQ0hPRSIpIiBhMSAmJgoJZ2l0IGNvbmZpZyAtLXVuc2V0IGkxOG4uY29tbWl0ZW5jb2RpbmcgJiYKCWdpdCBzaG9ydGxvZyBIRUFEfjIuLiA+IG91dCAmJgp0ZXN0X2NtcCBleHBlY3Qgb3V0JwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgd2l0aCByZXZpc2lvbiBwc2V1ZG8gb3B0aW9ucycgJwoJZ2l0IHNob3J0bG9nIC0tYWxsICYmCglnaXQgc2hvcnRsb2cgLS1icmFuY2hlcyAmJgoJZ2l0IHNob3J0bG9nIC0tZXhjbHVkZT1yZWZzL2hlYWRzL20qIC0tYWxsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIHdpdGggLS1vdXRwdXQ9PGZpbGU+JyAnCglnaXQgc2hvcnRsb2cgLS1vdXRwdXQ9c2hvcnRsb2cgLTEgbWFzdGVyID5vdXRwdXQgJiYKCXRlc3QgISAtcyBvdXRwdXQgJiYKCXRlc3RfbGluZV9jb3VudCA9IDMgc2hvcnRsb2cKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgLS1jb21taXR0ZXIgKGludGVybmFsKScgJwoJZ2l0IGNoZWNrb3V0IC0tb3JwaGFuIHNpZGUgJiYKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBvbmUgJiYKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSB0d28gJiYKCUdJVF9DT01NSVRURVJfTkFNRT0iU2luIE5vbWJyZSIgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIHRocmVlICYmCgoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAyCUMgTyBNaXR0ZXIKCSAgICAgMQlTaW4gTm9tYnJlCglFT0YKCWdpdCBzaG9ydGxvZyAtbnNjIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyAtLWNvbW1pdHRlciAoZXh0ZXJuYWwpJyAnCglnaXQgbG9nIC0tZm9ybWF0PWZ1bGwgfCBnaXQgc2hvcnRsb2cgLW5zYyA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZG9uZQo=