{
  "payloadType": "application/vnd.in-toto+json",
  "payload": "ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAibW9kZWwtMDAwMDEtb2YtMDAwMDIuc2FmZXRlbnNvcnMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTEyNzY4NDk3MWJiY2E0MDQ2NTQzNWE1Y2FkNjlkNjdhZDYwM2JmNWU2MWM2ZGZkNTU2MWZhZTRhM2JjZmRiMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAibW9kZWwtMDAwMDItb2YtMDAwMDIuc2FmZXRlbnNvcnMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWFiNDcwMzNlMWU4YTQ5MmVmOGU1ODFlZmFlMWNmMzY0NzhkMDQzMzU2N2U3NzI5YjNjMTcyOGJjODk3MGRiNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAibW9kZWwuc2FmZXRlbnNvcnMuaW5kZXguanNvbiIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MDc4MjZhNmU0NmZmNDU0MjcyYmQ2ZGIxZmVlNjI5ZDU1MzFhMjMwM2JlMjI5ODZkODI1YTA4NzFkN2RjN2E3IgogICAgICB9CiAgICB9CiAgXSwKICAicHJlZGljYXRlVHlwZSI6ICJodHRwczovL2Fzc2F5LmNvLm56L2F0dGVzdGF0aW9uL2FkbWlzc2lvbi92MSIsCiAgInByZWRpY2F0ZSI6IHsKICAgICJzY2hlbWEiOiAicHJvdmVuYW5jZS1hcnRlZmFjdC92MSIsCiAgICAibW9kZWxfaWQiOiAiZ29vZ2xlL2dlbW1hLTQtMjZCLUE0Qi1pdCIsCiAgICAia2luZCI6ICJsbG0iLAogICAgInZlcnNpb24iOiAiNGQ3YWU0OTg0YjdkYjdkZThmODQ1NzE3MGIzZjFhNDE5ZWU3NmQ1MiIsCiAgICAic3RhdHVzIjogImFkbWl0dGVkIiwKICAgICJldmlkZW5jZV90aWVyIjogIlQyIiwKICAgICJ2aW9sYXRpb25zIjogW10sCiAgICAibGljZW5jZSI6IHsKICAgICAgImlkZW50aWZpZXIiOiAiQXBhY2hlLTIuMCIsCiAgICAgICJldmlkZW5jZSI6ICJyZXBvc2l0b3J5LW1ldGFkYXRhIiwKICAgICAgImRlY2xhcmVkIjogewogICAgICAgICJpZGVudGlmaWVyIjogIkFwYWNoZS0yLjAiLAogICAgICAgICJiYXNpcyI6ICJjYXJkLXNlY3Rpb24iCiAgICAgIH0sCiAgICAgICJjb25jbHVkZWQiOiAiQXBhY2hlLTIuMCIsCiAgICAgICJiYXNlX29ibGlnYXRpb25zIjogW10sCiAgICAgICJjYW5vbmljYWxfdGV4dCI6ICJBcGFjaGUtMi4wLnR4dCIsCiAgICAgICJjYW5vbmljYWxfdGV4dF9kaWdlc3QiOiAic2hhMjU2OmNmYzc3NDliOTZmNjNiZDMxYzNjNDJiNWM0NzFiZjc1NjgxNDA1M2U4NDdjMTBmM2ViMDAzNDE3YmM1MjNkMzAiLAogICAgICAic291cmNlX3VybCI6ICJodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wLnR4dCIsCiAgICAgICJzb3VyY2VfZGlnZXN0IjogInNoYTI1NjpjZmM3NzQ5Yjk2ZjYzYmQzMWMzYzQyYjVjNDcxYmY3NTY4MTQwNTNlODQ3YzEwZjNlYjAwMzQxN2JjNTIzZDMwIiwKICAgICAgImFkZGVkX2NsYXVzZV9zY3JlZW4iOiB7CiAgICAgICAgImZpbGVzX3JlYWQiOiBbXSwKICAgICAgICAiZmluZGluZ3MiOiBbXQogICAgICB9CiAgICB9LAogICAgInByb3ZlbmFuY2UiOiB7CiAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9odWdnaW5nZmFjZS5jby9nb29nbGUvZ2VtbWEtNC0yNkItQTRCLWl0IiwKICAgICAgIm9mZmljaWFsX2xpY2Vuc29yX3JlcG8iOiB0cnVlLAogICAgICAiZm9ybWF0IjogInNhZmV0ZW5zb3JzIiwKICAgICAgImNoZWNrc3VtX3ZlcmlmaWVkIjogdHJ1ZQogICAgfSwKICAgICJleHBvcnRfY29udHJvbCI6IHsKICAgICAgInN0YXR1cyI6ICJub3RfYXNzZXNzZWQiLAogICAgICAicmVzdWx0IjogInVua25vd24iLAogICAgICAiYmFzaXMiOiBudWxsLAogICAgICAiYXNzZXNzZWRfYnkiOiBudWxsLAogICAgICAiYXNzZXNzZWRfZGF0ZSI6IG51bGwsCiAgICAgICJyZWZlcmVuY2UiOiBudWxsCiAgICB9LAogICAgImhhcmR3YXJlX2ZpdCI6IHsKICAgICAgIm1pbl90aWVyIjogMCwKICAgICAgInZyYW1fZnA4IjogIjI2R0IiLAogICAgICAidnJhbV9mcDQiOiAiMTNHQiIsCiAgICAgICJjb250ZXh0X2NlaWxpbmciOiAiMjYySyIsCiAgICAgICJjb25jdXJyZW5jeV9lbnZlbG9wZSI6ICI1LTIwIChUaWVyIDAgZXZhbHVhdGlvbiB1bml0OyBkZXNpZ24gOC4xIGNhdmVhdDogd2lsbCBub3QgaG9sZCBsYXRlbmN5IHRhcmdldHMgdW5kZXIgY29uY3VycmVudCBsb2FkKSIKICAgIH0sCiAgICAiaW5kZW1uaXR5IjogewogICAgICAicHJvdmlkZWRfYnlfbGljZW5zb3IiOiBmYWxzZSwKICAgICAgImNsaWVudF9kaXNjbG9zdXJlX3JlcXVpcmVkIjogdHJ1ZQogICAgfSwKICAgICJhdHRlc3RhdGlvbiI6IHsKICAgICAgImtleV9pZCI6ICI2MTEzZjE3ODY2M2FkOTRhZDRiNTZkZGYzNjI5MWQ5MjY4M2IzNzVjMTdiMDAyMzBmZDcwNjc5YTI3NDA4YWY0IiwKICAgICAgImlzc3VlZF9hdCI6ICIyMDI2LTA5LTI0VDAwOjAwOjAwWiIsCiAgICAgICJnYXRlX3ZlcnNpb24iOiAiMjAyNi0wOS0yNCIKICAgIH0sCiAgICAiZ2F0ZSI6IHsKICAgICAgInRvb2wiOiAiYWRtaXNzaW9uLWdhdGUiLAogICAgICAidmVyc2lvbiI6ICIyMDI2LTA5LTI0IiwKICAgICAgInJ1bl9kaWdlc3QiOiAic2hhMjU2OjVmOGQyNDVjODRmZjA4ZTYwZTUyZjUyZjYzY2MwOGNhYjA0MjliZDYwYWNjZmVhNDU0OWYxYmFkNzAzYzdhNWYiCiAgICB9LAogICAgInJldmlldyI6IHsKICAgICAgInJldmlld2VkX2J5IjogInRlYW0tcWEgKHdlaWdodHMuZGlnZXN0IGlzIHRoZSBMRlMgc2hhMjU2IG9mIHRoZSBwaW5uZWQgc2FmZXRlbnNvcnMgZmlsZSwgd2hpY2ggaXMgdGhlIGNvbnRlbnQgZGlnZXN0IGZvciBMRlMtc3RvcmVkIGZpbGVzOyBhIG11bHRpLXNoYXJkIHNldCBpcyBwaW5uZWQgaW4gZnVsbDogZXZlcnkgc2hhcmQgYW5kIHRoZSBpbmRleCBmaWxlIGNhcnJ5IHRoZWlyIG93biBkaWdlc3QgKGZpbmRpbmdzIHJlZ2lzdGVyIFYtMDQpOyBleHBvcnQgc2NyZWVuaW5nIGFuZCBjb3Vuc2VsIHNpZ24tb2ZmIHBlbmRpbmcsIGRlY2lzaW9uIDAwMTcpIiwKICAgICAgInJldmlld2VkX2RhdGUiOiAiMjAyNi0wOS0yNSIsCiAgICAgICJ0cmlhZ2UiOiBbXQogICAgfSwKICAgICJjaGF0X3RlbXBsYXRlIjogInsjXG4gIFRlbXBsYXRlOiBHb29nbGUgR2VtbWEgNCBDYW5vbmljYWwgQ2hhdCBUZW1wbGF0ZVxuICBBdXRob3I6IEdvb2dsZSBHZW1tYSBFbmdpbmVlcmluZyBUZWFtXG4gIFB1Ymxpc2hlZDogMjAyNi0wNy0wOVxuICBDb250ZXh0OiBGaXhlZCB0b29sLWNhbGxpbmcgbG9vcHMsIHR1cm4gY2xvc3VyZXMsIGFuZCB0aGlua2luZyBjb250ZW50LW9yZGVyaW5nLlxuI31cbnslLSBtYWNybyBmb3JtYXRfcGFyYW1ldGVycyhwcm9wZXJ0aWVzLCByZXF1aXJlZCwgZmlsdGVyX2tleXM9ZmFsc2UpIC0lfVxuICAgIHslLSBzZXQgc3RhbmRhcmRfa2V5cyA9IFsnZGVzY3JpcHRpb24nLCAndHlwZScsICdwcm9wZXJ0aWVzJywgJ3JlcXVpcmVkJywgJ251bGxhYmxlJ10gLSV9XG4gICAgeyUtIHNldCBucyA9IG5hbWVzcGFjZShmb3VuZF9maXJzdD1mYWxzZSkgLSV9XG4gICAgeyUtIGZvciBrZXksIHZhbHVlIGluIHByb3BlcnRpZXMgfCBkaWN0c29ydCAtJX1cbiAgICAgICAgeyUtIHNldCBhZGRfY29tbWEgPSBmYWxzZSAtJX1cbiAgICAgICAgeyUtIGlmIG5vdCBmaWx0ZXJfa2V5cyBvciBrZXkgbm90IGluIHN0YW5kYXJkX2tleXMgLSV9XG4gICAgICAgICAgICB7JS0gaWYgbnMuZm91bmRfZmlyc3QgJX0seyUgZW5kaWYgLSV9XG4gICAgICAgICAgICB7JS0gc2V0IG5zLmZvdW5kX2ZpcnN0ID0gdHJ1ZSAtJX1cbiAgICAgICAgICAgIHt7IGtleSB9fTp7XG4gICAgICAgICAgICB7JS0gaWYgdmFsdWVbJ2Rlc2NyaXB0aW9uJ10gLSV9XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246XHUwMDNjfFwifFx1MDAzZXt7IHZhbHVlWydkZXNjcmlwdGlvbiddIH19XHUwMDNjfFwifFx1MDAzZVxuICAgICAgICAgICAgICAgIHslLSBzZXQgYWRkX2NvbW1hID0gdHJ1ZSAtJX1cbiAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgIHslLSBpZiB2YWx1ZVsndHlwZSddIHwgdXBwZXIgPT0gJ1NUUklORycgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGlmIHZhbHVlWydlbnVtJ10gLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBpZiBhZGRfY29tbWEgJX0seyUtIGVsc2UgLSV9IHslLSBzZXQgYWRkX2NvbW1hID0gdHJ1ZSAtJX0geyUgZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgIGVudW06e3sgZm9ybWF0X2FyZ3VtZW50KHZhbHVlWydlbnVtJ10pIH19XG4gICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgeyUtIGVsaWYgdmFsdWVbJ3R5cGUnXSB8IHVwcGVyID09ICdBUlJBWScgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGlmIHZhbHVlWydpdGVtcyddIGlzIG1hcHBpbmcgYW5kIHZhbHVlWydpdGVtcyddIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gaWYgYWRkX2NvbW1hICV9LHslLSBlbHNlIC0lfSB7JS0gc2V0IGFkZF9jb21tYSA9IHRydWUgLSV9IHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICBpdGVtczp7XG4gICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbnNfaXRlbXMgPSBuYW1lc3BhY2UoZm91bmRfZmlyc3Q9ZmFsc2UpIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gZm9yIGl0ZW1fa2V5LCBpdGVtX3ZhbHVlIGluIHZhbHVlWydpdGVtcyddIHwgZGljdHNvcnQgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gaWYgaXRlbV92YWx1ZSBpcyBub3Qgbm9uZSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gaWYgbnNfaXRlbXMuZm91bmRfZmlyc3QgJX0seyUgZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIHNldCBuc19pdGVtcy5mb3VuZF9maXJzdCA9IHRydWUgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIGl0ZW1fa2V5ID09ICdwcm9wZXJ0aWVzJyAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczp7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiBpdGVtX3ZhbHVlIGlzIG1hcHBpbmcgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ey0gZm9ybWF0X3BhcmFtZXRlcnMoaXRlbV92YWx1ZSwgdmFsdWVbJ2l0ZW1zJ11bJ3JlcXVpcmVkJ10gfCBkZWZhdWx0KFtdKSkgLX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbGlmIGl0ZW1fa2V5ID09ICdyZXF1aXJlZCcgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGZvciByZXFfaXRlbSBpbiBpdGVtX3ZhbHVlIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHUwMDNjfFwifFx1MDAzZXt7LSByZXFfaXRlbSAtfX1cdTAwM2N8XCJ8XHUwMDNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gaWYgbm90IGxvb3AubGFzdCAlfSx7JSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbGlmIGl0ZW1fa2V5ID09ICd0eXBlJyAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIGl0ZW1fdmFsdWUgaXMgc3RyaW5nIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTp7eyBmb3JtYXRfYXJndW1lbnQoaXRlbV92YWx1ZSB8IHVwcGVyKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZWxzZSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6e3sgZm9ybWF0X2FyZ3VtZW50KGl0ZW1fdmFsdWUgfCBtYXAoJ3VwcGVyJykgfCBsaXN0KSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVsc2UgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1fa2V5IH19Ont7IGZvcm1hdF9hcmd1bWVudChpdGVtX3ZhbHVlKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgIHslLSBpZiB2YWx1ZVsnbnVsbGFibGUnXSAlfVxuICAgICAgICAgICAgICAgIHslLSBpZiBhZGRfY29tbWEgJX0seyUtIGVsc2UgLSV9IHslLSBzZXQgYWRkX2NvbW1hID0gdHJ1ZSAtJX0geyUgZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgbnVsbGFibGU6dHJ1ZVxuICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgeyUtIGlmIHZhbHVlWyd0eXBlJ10gfCB1cHBlciA9PSAnT0JKRUNUJyAtJX1cbiAgICAgICAgICAgICAgICB7JS0gaWYgdmFsdWVbJ3Byb3BlcnRpZXMnXSBpcyBkZWZpbmVkIGFuZCB2YWx1ZVsncHJvcGVydGllcyddIGlzIG1hcHBpbmcgLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBpZiBhZGRfY29tbWEgJX0seyUtIGVsc2UgLSV9IHslLSBzZXQgYWRkX2NvbW1hID0gdHJ1ZSAtJX0geyUgZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6e1xuICAgICAgICAgICAgICAgICAgICB7ey0gZm9ybWF0X3BhcmFtZXRlcnModmFsdWVbJ3Byb3BlcnRpZXMnXSwgdmFsdWVbJ3JlcXVpcmVkJ10gfCBkZWZhdWx0KFtdKSkgLX19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7JS0gZWxpZiB2YWx1ZSBpcyBtYXBwaW5nIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gaWYgYWRkX2NvbW1hICV9LHslLSBlbHNlIC0lfSB7JS0gc2V0IGFkZF9jb21tYSA9IHRydWUgLSV9IHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOntcbiAgICAgICAgICAgICAgICAgICAge3stIGZvcm1hdF9wYXJhbWV0ZXJzKHZhbHVlLCB2YWx1ZVsncmVxdWlyZWQnXSB8IGRlZmF1bHQoW10pLCBmaWx0ZXJfa2V5cz10cnVlKSAtfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICB7JS0gaWYgdmFsdWVbJ3JlcXVpcmVkJ10gLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBpZiBhZGRfY29tbWEgJX0seyUtIGVsc2UgLSV9IHslLSBzZXQgYWRkX2NvbW1hID0gdHJ1ZSAtJX0geyUgZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOltcbiAgICAgICAgICAgICAgICAgICAgeyUtIGZvciBpdGVtIGluIHZhbHVlWydyZXF1aXJlZCddIHwgZGVmYXVsdChbXSkgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICBcdTAwM2N8XCJ8XHUwMDNle3stIGl0ZW0gLX19XHUwMDNjfFwifFx1MDAzZVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIG5vdCBsb29wLmxhc3QgJX0seyUgZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBlbmRmb3IgLSV9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICB7JS0gaWYgYWRkX2NvbW1hICV9LHslLSBlbHNlIC0lfSB7JS0gc2V0IGFkZF9jb21tYSA9IHRydWUgLSV9IHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgdHlwZTpcdTAwM2N8XCJ8XHUwMDNle3sgdmFsdWVbJ3R5cGUnXSB8IHVwcGVyIH19XHUwMDNjfFwifFx1MDAzZX1cbiAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgIHslLSBlbmRmb3IgLSV9XG57JS0gZW5kbWFjcm8gLSV9XG57JS0gbWFjcm8gZm9ybWF0X2Z1bmN0aW9uX2RlY2xhcmF0aW9uKHRvb2xfZGF0YSkgLSV9XG4gICAgZGVjbGFyYXRpb246e3stIHRvb2xfZGF0YVsnZnVuY3Rpb24nXVsnbmFtZSddIC19fXtkZXNjcmlwdGlvbjpcdTAwM2N8XCJ8XHUwMDNle3stIHRvb2xfZGF0YVsnZnVuY3Rpb24nXVsnZGVzY3JpcHRpb24nXSAtfX1cdTAwM2N8XCJ8XHUwMDNlXG4gICAgeyUtIHNldCBwYXJhbXMgPSB0b29sX2RhdGFbJ2Z1bmN0aW9uJ11bJ3BhcmFtZXRlcnMnXSAtJX1cbiAgICB7JS0gaWYgcGFyYW1zIC0lfVxuICAgICAgICAscGFyYW1ldGVyczp7XG4gICAgICAgIHslLSBpZiBwYXJhbXNbJ3Byb3BlcnRpZXMnXSAtJX1cbiAgICAgICAgICAgIHByb3BlcnRpZXM6eyB7ey0gZm9ybWF0X3BhcmFtZXRlcnMocGFyYW1zWydwcm9wZXJ0aWVzJ10sIHBhcmFtc1sncmVxdWlyZWQnXSkgLX19IH0sXG4gICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgeyUtIGlmIHBhcmFtc1sncmVxdWlyZWQnXSAtJX1cbiAgICAgICAgICAgIHJlcXVpcmVkOltcbiAgICAgICAgICAgIHslLSBmb3IgaXRlbSBpbiBwYXJhbXNbJ3JlcXVpcmVkJ10gLSV9XG4gICAgICAgICAgICAgICAgXHUwMDNjfFwifFx1MDAzZXt7LSBpdGVtIC19fVx1MDAzY3xcInxcdTAwM2VcbiAgICAgICAgICAgICAgICB7ey0gJywnIGlmIG5vdCBsb29wLmxhc3QgLX19XG4gICAgICAgICAgICB7JS0gZW5kZm9yIC0lfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICB7JS0gaWYgcGFyYW1zWyd0eXBlJ10gLSV9XG4gICAgICAgICAgICB0eXBlOlx1MDAzY3xcInxcdTAwM2V7ey0gcGFyYW1zWyd0eXBlJ10gfCB1cHBlciAtfX1cdTAwM2N8XCJ8XHUwMDNlfVxuICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgeyUtIGVuZGlmIC0lfVxuICAgIHslLSBpZiAncmVzcG9uc2UnIGluIHRvb2xfZGF0YVsnZnVuY3Rpb24nXSAtJX1cbiAgICAgICAgeyUtIHNldCByZXNwb25zZV9kZWNsYXJhdGlvbiA9IHRvb2xfZGF0YVsnZnVuY3Rpb24nXVsncmVzcG9uc2UnXSAtJX1cbiAgICAgICAgLHJlc3BvbnNlOntcbiAgICAgICAgeyUtIGlmIHJlc3BvbnNlX2RlY2xhcmF0aW9uWydkZXNjcmlwdGlvbiddIC0lfVxuICAgICAgICAgICAgZGVzY3JpcHRpb246XHUwMDNjfFwifFx1MDAzZXt7LSByZXNwb25zZV9kZWNsYXJhdGlvblsnZGVzY3JpcHRpb24nXSAtfX1cdTAwM2N8XCJ8XHUwMDNlLFxuICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgIHslLSBpZiByZXNwb25zZV9kZWNsYXJhdGlvblsndHlwZSddIHwgdXBwZXIgPT0gJ09CSkVDVCcgLSV9XG4gICAgICAgICAgICB0eXBlOlx1MDAzY3xcInxcdTAwM2V7ey0gcmVzcG9uc2VfZGVjbGFyYXRpb25bJ3R5cGUnXSB8IHVwcGVyIC19fVx1MDAzY3xcInxcdTAwM2V9XG4gICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICB7JS0gZW5kaWYgLSV9XG4gICAgfVxueyUtIGVuZG1hY3JvIC0lfVxueyUtIG1hY3JvIGZvcm1hdF9hcmd1bWVudChhcmd1bWVudCwgZXNjYXBlX2tleXM9VHJ1ZSkgLSV9XG4gICAgeyUtIGlmIGFyZ3VtZW50IGlzIG5vbmUgLSV9XG4gICAgICAgIHt7LSAnbnVsbCcgLX19XG4gICAgeyUtIGVsaWYgYXJndW1lbnQgaXMgc3RyaW5nIC0lfVxuICAgICAgICB7ey0gJ1x1MDAzY3xcInxcdTAwM2UnICsgYXJndW1lbnQgKyAnXHUwMDNjfFwifFx1MDAzZScgLX19XG4gICAgeyUtIGVsaWYgYXJndW1lbnQgaXMgYm9vbGVhbiAtJX1cbiAgICAgICAge3stICd0cnVlJyBpZiBhcmd1bWVudCBlbHNlICdmYWxzZScgLX19XG4gICAgeyUtIGVsaWYgYXJndW1lbnQgaXMgbWFwcGluZyAtJX1cbiAgICAgICAge3stICd7JyAtfX1cbiAgICAgICAgeyUtIHNldCBucyA9IG5hbWVzcGFjZShmb3VuZF9maXJzdD1mYWxzZSkgLSV9XG4gICAgICAgIHslLSBmb3Iga2V5LCB2YWx1ZSBpbiBhcmd1bWVudCB8IGRpY3Rzb3J0IC0lfVxuICAgICAgICAgICAgeyUtIGlmIG5zLmZvdW5kX2ZpcnN0ICV9LHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgeyUtIHNldCBucy5mb3VuZF9maXJzdCA9IHRydWUgLSV9XG4gICAgICAgICAgICB7JS0gaWYgZXNjYXBlX2tleXMgLSV9XG4gICAgICAgICAgICAgICAge3stICdcdTAwM2N8XCJ8XHUwMDNlJyArIGtleSArICdcdTAwM2N8XCJ8XHUwMDNlJyAtfX1cbiAgICAgICAgICAgIHslLSBlbHNlIC0lfVxuICAgICAgICAgICAgICAgIHt7LSBrZXkgLX19XG4gICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICA6e3stIGZvcm1hdF9hcmd1bWVudCh2YWx1ZSwgZXNjYXBlX2tleXM9ZXNjYXBlX2tleXMpIC19fVxuICAgICAgICB7JS0gZW5kZm9yIC0lfVxuICAgICAgICB7ey0gJ30nIC19fVxuICAgIHslLSBlbGlmIGFyZ3VtZW50IGlzIHNlcXVlbmNlIC0lfVxuICAgICAgICB7ey0gJ1snIC19fVxuICAgICAgICB7JS0gZm9yIGl0ZW0gaW4gYXJndW1lbnQgLSV9XG4gICAgICAgICAgICB7ey0gZm9ybWF0X2FyZ3VtZW50KGl0ZW0sIGVzY2FwZV9rZXlzPWVzY2FwZV9rZXlzKSAtfX1cbiAgICAgICAgICAgIHslLSBpZiBub3QgbG9vcC5sYXN0ICV9LHslIGVuZGlmIC0lfVxuICAgICAgICB7JS0gZW5kZm9yIC0lfVxuICAgICAgICB7ey0gJ10nIC19fVxuICAgIHslLSBlbHNlIC0lfVxuICAgICAgICB7ey0gYXJndW1lbnQgLX19XG4gICAgeyUtIGVuZGlmIC0lfVxueyUtIGVuZG1hY3JvIC0lfVxueyUtIG1hY3JvIHN0cmlwX3RoaW5raW5nKHRleHQpIC0lfVxuICAgIHslLSBzZXQgbnMgPSBuYW1lc3BhY2UocmVzdWx0PScnKSAtJX1cbiAgICB7JS0gZm9yIHBhcnQgaW4gdGV4dC5zcGxpdCgnXHUwMDNjY2hhbm5lbHxcdTAwM2UnKSAtJX1cbiAgICAgICAgeyUtIGlmICdcdTAwM2N8Y2hhbm5lbFx1MDAzZScgaW4gcGFydCAtJX1cbiAgICAgICAgICAgIHslLSBzZXQgbnMucmVzdWx0ID0gbnMucmVzdWx0ICsgcGFydC5zcGxpdCgnXHUwMDNjfGNoYW5uZWxcdTAwM2UnKVswXSAtJX1cbiAgICAgICAgeyUtIGVsc2UgLSV9XG4gICAgICAgICAgICB7JS0gc2V0IG5zLnJlc3VsdCA9IG5zLnJlc3VsdCArIHBhcnQgLSV9XG4gICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICB7JS0gZW5kZm9yIC0lfVxuICAgIHt7LSBucy5yZXN1bHQgfCB0cmltIC19fVxueyUtIGVuZG1hY3JvIC0lfVxuXG57JS0gbWFjcm8gZm9ybWF0X3Rvb2xfcmVzcG9uc2VfYmxvY2sodG9vbF9uYW1lLCByZXNwb25zZSkgLSV9XG4gICAge3stICdcdTAwM2N8dG9vbF9yZXNwb25zZVx1MDAzZScgLX19XG4gICAgeyUtIGlmIHJlc3BvbnNlIGlzIG1hcHBpbmcgLSV9XG4gICAgICAgIHt7LSAncmVzcG9uc2U6JyArIHRvb2xfbmFtZSArICd7JyAtfX1cbiAgICAgICAgeyUtIGZvciBrZXksIHZhbHVlIGluIHJlc3BvbnNlIHwgZGljdHNvcnQgLSV9XG4gICAgICAgICAgICB7ey0ga2V5IC19fTp7ey0gZm9ybWF0X2FyZ3VtZW50KHZhbHVlLCBlc2NhcGVfa2V5cz1GYWxzZSkgLX19XG4gICAgICAgICAgICB7JS0gaWYgbm90IGxvb3AubGFzdCAlfSx7JSBlbmRpZiAtJX1cbiAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAge3stICd9JyAtfX1cbiAgICB7JS0gZWxzZSAtJX1cbiAgICAgICAge3stICdyZXNwb25zZTonICsgdG9vbF9uYW1lICsgJ3t2YWx1ZTonICsgZm9ybWF0X2FyZ3VtZW50KHJlc3BvbnNlLCBlc2NhcGVfa2V5cz1GYWxzZSkgKyAnfScgLX19XG4gICAgeyUtIGVuZGlmIC0lfVxuICAgIHt7LSAnXHUwMDNjdG9vbF9yZXNwb25zZXxcdTAwM2UnIC19fVxueyUtIGVuZG1hY3JvIC0lfVxuXG57Iy0gPT09PT0gU0VUVVAgPT09PT0gLSN9XG57JS0gc2V0IG5zID0gbmFtZXNwYWNlKHByZXZfbWVzc2FnZV90eXBlPU5vbmUsIHByZXZfbm9uX3Rvb2xfcm9sZT1Ob25lKSAtJX1cbnslLSBzZXQgbG9vcF9tZXNzYWdlcyA9IG1lc3NhZ2VzIC0lfVxueyUtIHNldCBlbmFibGVfdGhpbmtpbmcgPSBlbmFibGVfdGhpbmtpbmcgfCBkZWZhdWx0KGZhbHNlKSAtJX1cbnslLSBzZXQgcHJlc2VydmVfdGhpbmtpbmcgPSBwcmVzZXJ2ZV90aGlua2luZyB8IGRlZmF1bHQoZmFsc2UpIC0lfVxue3stIGJvc190b2tlbiAtfX1cbnsjLSBIYW5kbGUgU3lzdGVtL1Rvb2wgRGVmaW5pdGlvbnMgQmxvY2sgLSN9XG57JS0gaWYgZW5hYmxlX3RoaW5raW5nIG9yIHRvb2xzIG9yIChtZXNzYWdlcyBhbmQgbWVzc2FnZXNbMF1bJ3JvbGUnXSBpbiBbJ3N5c3RlbScsICdkZXZlbG9wZXInXSkgLSV9XG4gICAge3stICdcdTAwM2N8dHVyblx1MDAzZXN5c3RlbVxcbicgLX19XG4gICAgeyMtIEluamVjdCBUaGlua2luZyB0b2tlbiBhdCB0aGUgdmVyeSB0b3Agb2YgdGhlIEZJUlNUIHN5c3RlbSB0dXJuIC0jfVxuICAgIHslLSBpZiBlbmFibGVfdGhpbmtpbmcgLSV9XG4gICAgICAgIHt7LSAnXHUwMDNjfHRoaW5rfFx1MDAzZVxcbicgLX19XG4gICAgICAgIHslLSBzZXQgbnMucHJldl9tZXNzYWdlX3R5cGUgPSAndGhpbmsnIC0lfVxuICAgIHslLSBlbmRpZiAtJX1cbiAgICB7JS0gaWYgbWVzc2FnZXMgYW5kIG1lc3NhZ2VzWzBdWydyb2xlJ10gaW4gWydzeXN0ZW0nLCAnZGV2ZWxvcGVyJ10gLSV9XG4gICAgICAgIHslLSBpZiBtZXNzYWdlc1swXVsnY29udGVudCddIGlzIHN0cmluZyAtJX1cbiAgICAgICAgICAgIHt7LSBtZXNzYWdlc1swXVsnY29udGVudCddIHwgdHJpbSAtfX1cbiAgICAgICAgeyUtIGVsaWYgbWVzc2FnZXNbMF1bJ2NvbnRlbnQnXSBpcyBzZXF1ZW5jZSAtJX1cbiAgICAgICAgICAgIHslLSBmb3IgaXRlbSBpbiBtZXNzYWdlc1swXVsnY29udGVudCddIC0lfVxuICAgICAgICAgICAgICAgIHt7LSBpdGVtWyd0ZXh0J10gfCB0cmltICsgJyAnLX19XG4gICAgICAgICAgICB7JS0gZW5kZm9yIC0lfVxuICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgIHslLSBzZXQgbG9vcF9tZXNzYWdlcyA9IG1lc3NhZ2VzWzE6XSAtJX1cbiAgICB7JS0gZW5kaWYgLSV9XG4gICAgeyUtIGlmIHRvb2xzIC0lfVxuICAgICAgICB7JS0gZm9yIHRvb2wgaW4gdG9vbHMgJX1cbiAgICAgICAgICAgIHt7LSAnXHUwMDNjfHRvb2xcdTAwM2UnIC19fVxuICAgICAgICAgICAge3stIGZvcm1hdF9mdW5jdGlvbl9kZWNsYXJhdGlvbih0b29sKSB8IHRyaW0gLX19XG4gICAgICAgICAgICB7ey0gJ1x1MDAzY3Rvb2x8XHUwMDNlJyAtfX1cbiAgICAgICAgeyUtIGVuZGZvciAlfVxuICAgICAgICB7JS0gc2V0IG5zLnByZXZfbWVzc2FnZV90eXBlID0gJ3Rvb2wnIC0lfVxuICAgIHslLSBlbmRpZiAtJX1cbiAgICB7ey0gJ1x1MDAzY3R1cm58XHUwMDNlXFxuJyAtfX1cbnslLSBlbmRpZiAlfVxuXG57Iy0gUHJlLXNjYW46IGZpbmQgbGFzdCB1c2VyIG1lc3NhZ2UgaW5kZXggZm9yIHJlYXNvbmluZyBndWFyZCAtI31cbnslLSBzZXQgbnNfdHVybiA9IG5hbWVzcGFjZShsYXN0X3VzZXJfaWR4PS0xKSAtJX1cbnslLSBmb3IgaSBpbiByYW5nZShsb29wX21lc3NhZ2VzIHwgbGVuZ3RoKSAtJX1cbiAgICB7JS0gaWYgbG9vcF9tZXNzYWdlc1tpXVsncm9sZSddID09ICd1c2VyJyAtJX1cbiAgICAgICAgeyUtIHNldCBuc190dXJuLmxhc3RfdXNlcl9pZHggPSBpIC0lfVxuICAgIHslLSBlbmRpZiAtJX1cbnslLSBlbmRmb3IgLSV9XG5cbnsjLSBMb29wIHRocm91Z2ggbWVzc2FnZXMgLSN9XG57JS0gZm9yIG1lc3NhZ2UgaW4gbG9vcF9tZXNzYWdlcyAtJX1cbiAgICB7JS0gaWYgbWVzc2FnZVsncm9sZSddICE9ICd0b29sJyAtJX1cbiAgICB7JS0gc2V0IG5zLnByZXZfbWVzc2FnZV90eXBlID0gTm9uZSAtJX1cbiAgICB7JS0gc2V0IHJvbGUgPSAnbW9kZWwnIGlmIG1lc3NhZ2VbJ3JvbGUnXSA9PSAnYXNzaXN0YW50JyBlbHNlIG1lc3NhZ2VbJ3JvbGUnXSAtJX1cbiAgICB7Iy0gRGV0ZWN0IGNvbnRpbnVhdGlvbiB1c2luZyB0cmFja2VkIHN0YXRlIOKAlCBPKDEpIGluc3RlYWQgb2YgTyhuKSBiYWNrd2FyZCBzY2FuIC0jfVxuICAgIHslLSBzZXQgY29udGludWVfc2FtZV9tb2RlbF90dXJuID0gKHJvbGUgPT0gJ21vZGVsJyBhbmQgbnMucHJldl9ub25fdG9vbF9yb2xlID09ICdhc3Npc3RhbnQnKSAtJX1cbiAgICB7JS0gaWYgbm90IGNvbnRpbnVlX3NhbWVfbW9kZWxfdHVybiAtJX1cbiAgICAgICAge3stICdcdTAwM2N8dHVyblx1MDAzZScgKyByb2xlICsgJ1xcbicgfX1cblxuICAgIHslLSBlbmRpZiAtJX1cblxuICAgIHsjLSBSZW5kZXIgcmVhc29uaW5nL3JlYXNvbmluZ19jb250ZW50IGFzIHRoaW5raW5nIGNoYW5uZWwgLSN9XG4gICAgeyUtIHNldCB0aGlua2luZ190ZXh0ID0gbWVzc2FnZS5nZXQoJ3JlYXNvbmluZycpIG9yIG1lc3NhZ2UuZ2V0KCdyZWFzb25pbmdfY29udGVudCcpIC0lfVxuICAgIHslLSBzZXQgdGhpbmtpbmdfZ2F0ZSA9IChsb29wLmluZGV4MCBcdTAwM2UgbnNfdHVybi5sYXN0X3VzZXJfaWR4KSBvciAocHJlc2VydmVfdGhpbmtpbmcgYW5kIG1lc3NhZ2UuZ2V0KCd0b29sX2NhbGxzJykpIC0lfVxuICAgIHslLSBpZiB0aGlua2luZ190ZXh0IGFuZCB0aGlua2luZ19nYXRlIC0lfVxuICAgICAgICB7ey0gJ1x1MDAzY3xjaGFubmVsXHUwMDNldGhvdWdodFxcbicgKyB0aGlua2luZ190ZXh0ICsgJ1xcblx1MDAzY2NoYW5uZWx8XHUwMDNlJyAtfX1cbiAgICB7JS0gZW5kaWYgLSV9XG5cbiAgICAgICAgICAgIHslLSBpZiBtZXNzYWdlLmdldCgndG9vbF9jYWxscycpIC0lfVxuICAgICAgICAgICAgICAgIHslLSBmb3IgdG9vbF9jYWxsIGluIG1lc3NhZ2UuZ2V0KCd0b29sX2NhbGxzJykgLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBzZXQgZnVuY3Rpb24gPSB0b29sX2NhbGxbJ2Z1bmN0aW9uJ10gLSV9XG4gICAgICAgICAgICAgICAgICAgIHt7LSAnXHUwMDNjfHRvb2xfY2FsbFx1MDAzZWNhbGw6JyArIGZ1bmN0aW9uWyduYW1lJ10gKyAneycgLX19XG4gICAgICAgICAgICAgICAgICAgIHslLSBpZiBmdW5jdGlvblsnYXJndW1lbnRzJ10gaXMgbWFwcGluZyAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbnNfYXJncyA9IG5hbWVzcGFjZShmb3VuZF9maXJzdD1mYWxzZSkgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gZm9yIGtleSwgdmFsdWUgaW4gZnVuY3Rpb25bJ2FyZ3VtZW50cyddIHwgZGljdHNvcnQgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIG5zX2FyZ3MuZm91bmRfZmlyc3QgJX0seyUgZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIHNldCBuc19hcmdzLmZvdW5kX2ZpcnN0ID0gdHJ1ZSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ey0ga2V5IC19fTp7ey0gZm9ybWF0X2FyZ3VtZW50KHZhbHVlLCBlc2NhcGVfa2V5cz1GYWxzZSkgLX19XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kZm9yIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gZWxpZiBmdW5jdGlvblsnYXJndW1lbnRzJ10gaXMgbm9uZSAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGVsc2UgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7ey0gcmFpc2VfZXhjZXB0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2hhdF90ZW1wbGF0ZTogdG9vbF9jYWxsc1tdLmZ1bmN0aW9uLmFyZ3VtZW50cyBtdXN0IGJlIGEgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkpTT04gb2JqZWN0IChtYXBwaW5nKSwgbm90IGEgc3RyaW5nLiBEZXNlcmlhbGl6ZSBhcmd1bWVudHMgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBwYXNzaW5nIHRvIHRoZSB0ZW1wbGF0ZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKSAtfX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICB7ey0gJ31cdTAwM2N0b29sX2NhbGx8XHUwMDNlJyAtfX1cbiAgICAgICAgICAgICAgICB7JS0gZW5kZm9yIC0lfVxuICAgICAgICAgICAgICAgIHslLSBzZXQgbnMucHJldl9tZXNzYWdlX3R5cGUgPSAndG9vbF9jYWxsJyAtJX1cbiAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cblxuICAgICAgICAgICAgeyUtIHNldCBuc190cl9vdXQgPSBuYW1lc3BhY2UoZmxhZz1mYWxzZSkgLSV9XG4gICAgICAgICAgICB7JS0gaWYgbWVzc2FnZS5nZXQoJ3Rvb2xfcmVzcG9uc2VzJykgLSV9XG4gICAgICAgICAgICAgICAgeyMtIExlZ2FjeTogdG9vbF9yZXNwb25zZXMgZW1iZWRkZWQgb24gdGhlIGFzc2lzdGFudCBtZXNzYWdlIChHb29nbGUvR2VtbWEgbmF0aXZlKSAtI31cbiAgICAgICAgICAgICAgICB7JS0gZm9yIHRvb2xfcmVzcG9uc2UgaW4gbWVzc2FnZS5nZXQoJ3Rvb2xfcmVzcG9uc2VzJykgLSV9XG4gICAgICAgICAgICAgICAgICAgIHt7LSBmb3JtYXRfdG9vbF9yZXNwb25zZV9ibG9jayh0b29sX3Jlc3BvbnNlWyduYW1lJ10gfCBkZWZhdWx0KCd1bmtub3duJywgdHJ1ZSksIHRvb2xfcmVzcG9uc2VbJ3Jlc3BvbnNlJ10pIC19fVxuICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IG5zX3RyX291dC5mbGFnID0gdHJ1ZSAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIHNldCBucy5wcmV2X21lc3NhZ2VfdHlwZSA9ICd0b29sX3Jlc3BvbnNlJyAtJX1cbiAgICAgICAgICAgICAgICB7JS0gZW5kZm9yIC0lfVxuICAgICAgICAgICAgeyUtIGVsaWYgbWVzc2FnZS5nZXQoJ3Rvb2xfY2FsbHMnKSAtJX1cbiAgICAgICAgICAgICAgICB7Iy0gT3BlbkFJIENoYXQgQ29tcGxldGlvbnM6IGZvcndhcmQtc2NhbiBjb25zZWN1dGl2ZSByb2xlOnRvb2wgbWVzc2FnZXMgLSN9XG4gICAgICAgICAgICAgICAgeyUtIHNldCBuc190b29sX3NjYW4gPSBuYW1lc3BhY2Uoc3RvcHBlZD1mYWxzZSkgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGZvciBrIGluIHJhbmdlKGxvb3AuaW5kZXgwICsgMSwgbG9vcF9tZXNzYWdlcyB8IGxlbmd0aCkgLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBpZiBuc190b29sX3NjYW4uc3RvcHBlZCAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGVsaWYgbG9vcF9tZXNzYWdlc1trXVsncm9sZSddICE9ICd0b29sJyAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbnNfdG9vbF9zY2FuLnN0b3BwZWQgPSB0cnVlIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gZWxzZSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBzZXQgZm9sbG93ID0gbG9vcF9tZXNzYWdlc1trXSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsjLSBSZXNvbHZlIHRvb2xfY2FsbF9pZCB0byBmdW5jdGlvbiBuYW1lIC0jfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIHNldCBuc190bmFtZSA9IG5hbWVzcGFjZShuYW1lPWZvbGxvdy5nZXQoJ25hbWUnKSBvciAndW5rbm93bicpIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGZvciB0YyBpbiBtZXNzYWdlLmdldCgndG9vbF9jYWxscycpIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiB0Yy5nZXQoJ2lkJykgPT0gZm9sbG93LmdldCgndG9vbF9jYWxsX2lkJykgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbnNfdG5hbWUubmFtZSA9IHRjWydmdW5jdGlvbiddWyduYW1lJ10gLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsjLSBIYW5kbGUgY29udGVudCBhcyBzdHJpbmcgb3IgY29udGVudC1wYXJ0cyBhcnJheSAtI31cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBzZXQgdG9vbF9ib2R5ID0gZm9sbG93LmdldCgnY29udGVudCcpIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIHRvb2xfYm9keSBpcyBzdHJpbmcgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3stIGZvcm1hdF90b29sX3Jlc3BvbnNlX2Jsb2NrKG5zX3RuYW1lLm5hbWUsIHRvb2xfYm9keSkgLX19XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gZWxpZiB0b29sX2JvZHkgaXMgc2VxdWVuY2UgYW5kIHRvb2xfYm9keSBpcyBub3Qgc3RyaW5nIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbnNfdHh0ID0gbmFtZXNwYWNlKHM9JycpIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBmb3IgcGFydCBpbiB0b29sX2JvZHkgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiBwYXJ0LmdldCgndHlwZScpID09ICd0ZXh0JyAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbnNfdHh0LnMgPSBuc190eHQucyArIChwYXJ0LmdldCgndGV4dCcpIHwgZGVmYXVsdCgnJykpIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ey0gZm9ybWF0X3Rvb2xfcmVzcG9uc2VfYmxvY2sobnNfdG5hbWUubmFtZSwgbnNfdHh0LnMpIC19fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBmb3IgcGFydCBpbiB0b29sX2JvZHkgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiBwYXJ0LmdldCgndHlwZScpIGluIFsnaW1hZ2UnLCAnaW1hZ2VfdXJsJ10gLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ey0gJ1x1MDAzY3xpbWFnZXxcdTAwM2UnIC19fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZWxpZiBwYXJ0LmdldCgndHlwZScpIGluIFsnYXVkaW8nLCAnaW5wdXRfYXVkaW8nXSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7LSAnXHUwMDNjfGF1ZGlvfFx1MDAzZScgLX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbGlmIHBhcnQuZ2V0KCd0eXBlJykgPT0gJ3ZpZGVvJyAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7LSAnXHUwMDNjfHZpZGVvfFx1MDAzZScgLX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kZm9yIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVsc2UgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3stIGZvcm1hdF90b29sX3Jlc3BvbnNlX2Jsb2NrKG5zX3RuYW1lLm5hbWUsIHRvb2xfYm9keSkgLX19XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IG5zX3RyX291dC5mbGFnID0gdHJ1ZSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbnMucHJldl9tZXNzYWdlX3R5cGUgPSAndG9vbF9yZXNwb25zZScgLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICB7JS0gZW5kZm9yIC0lfVxuICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuXG4gICAgICAgICAgICB7JS0gc2V0IGNhcHR1cmVkX2NvbnRlbnQgLSV9XG4gICAgICAgICAgICB7JS0gaWYgbWVzc2FnZS5nZXQoJ2NvbnRlbnQnKSBpcyBzdHJpbmcgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGlmIHJvbGUgPT0gJ21vZGVsJyAtJX1cbiAgICAgICAgICAgICAgICAgICAge3stIHN0cmlwX3RoaW5raW5nKG1lc3NhZ2VbJ2NvbnRlbnQnXSkgLX19XG4gICAgICAgICAgICAgICAgeyUtIGVsc2UgLSV9XG4gICAgICAgICAgICAgICAgICAgIHt7LSBtZXNzYWdlWydjb250ZW50J10gfCB0cmltIC19fVxuICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgIHslLSBlbGlmIG1lc3NhZ2UuZ2V0KCdjb250ZW50JykgaXMgc2VxdWVuY2UgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGZvciBpdGVtIGluIG1lc3NhZ2VbJ2NvbnRlbnQnXSAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGlmIGl0ZW0uZ2V0KCd0eXBlJykgPT0gJ3RleHQnIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIHJvbGUgPT0gJ21vZGVsJyAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ey0gc3RyaXBfdGhpbmtpbmcoaXRlbVsndGV4dCddKSAtfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbHNlIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7LSBpdGVtWyd0ZXh0J10gfCB0cmltIC19fVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gZWxpZiBpdGVtLmdldCgndHlwZScpIGluIFsnaW1hZ2UnLCAnaW1hZ2VfdXJsJ10gLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7ey0gJ1x1MDAzY3xpbWFnZXxcdTAwM2UnIC19fVxuICAgICAgICAgICAgICAgICAgICB7JS0gZWxpZiBpdGVtLmdldCgndHlwZScpIGluIFsnYXVkaW8nLCAnaW5wdXRfYXVkaW8nXSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7LSAnXHUwMDNjfGF1ZGlvfFx1MDAzZScgLX19XG4gICAgICAgICAgICAgICAgICAgIHslLSBlbGlmIGl0ZW0uZ2V0KCd0eXBlJykgPT0gJ3ZpZGVvJyAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7LSAnXHUwMDNjfHZpZGVvfFx1MDAzZScgLX19XG4gICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICB7JS0gZW5kZm9yIC0lfVxuICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgeyUtIGVuZHNldCAtJX1cblxuICAgICAgICAgICAge3stIGNhcHR1cmVkX2NvbnRlbnQgLX19XG4gICAgICAgICAgICB7JS0gc2V0IGhhc19jb250ZW50ID0gY2FwdHVyZWRfY29udGVudCB8IHRyaW0gfCBsZW5ndGggXHUwMDNlIDAgLSV9XG5cbiAgICAgICAgeyMtIEZvcndhcmQtc2NhbjogZmluZCBuZXh0IG5vbi10b29sIG1lc3NhZ2Ugcm9sZSBmb3IgY29udGludWF0aW9uIGRldGVjdGlvbiAtI31cbiAgICAgICAgeyUtIHNldCBuZXh0X250ID0gbmFtZXNwYWNlKHJvbGU9Tm9uZSwgZm91bmQ9ZmFsc2UpIC0lfVxuICAgICAgICB7JS0gZm9yIGogaW4gcmFuZ2UobG9vcC5pbmRleDAgKyAxLCBsb29wX21lc3NhZ2VzIHwgbGVuZ3RoKSAtJX1cbiAgICAgICAgICAgIHslLSBpZiBub3QgbmV4dF9udC5mb3VuZCAtJX1cbiAgICAgICAgICAgICAgICB7JS0gaWYgbG9vcF9tZXNzYWdlc1tqXVsncm9sZSddICE9ICd0b29sJyAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIHNldCBuZXh0X250LnJvbGUgPSBsb29wX21lc3NhZ2VzW2pdWydyb2xlJ10gLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbmV4dF9udC5mb3VuZCA9IHRydWUgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICB7JS0gZW5kZm9yIC0lfVxuXG4gICAgICAgIHslLSBzZXQgY29udGludWVzX2ludG9fbmV4dCA9IChcbiAgICAgICAgICAgIHJvbGUgPT0gJ21vZGVsJ1xuICAgICAgICAgICAgYW5kIG5leHRfbnQucm9sZSA9PSAnYXNzaXN0YW50J1xuICAgICAgICAgICAgYW5kIChub3QgbWVzc2FnZS5nZXQoJ3Rvb2xfY2FsbHMnKSBvciBuc190cl9vdXQuZmxhZylcbiAgICAgICAgKSAtJX1cblxuICAgICAgICB7JS0gaWYgbnMucHJldl9tZXNzYWdlX3R5cGUgPT0gJ3Rvb2xfY2FsbCcgYW5kIG5vdCBuc190cl9vdXQuZmxhZyAtJX1cbiAgICAgICAgICAgIHt7LSAnXHUwMDNjfHRvb2xfcmVzcG9uc2VcdTAwM2UnIC19fVxuICAgICAgICB7JS0gZWxpZiBjb250aW51ZXNfaW50b19uZXh0IC0lfVxuICAgICAgICB7JS0gZWxpZiBub3QgKG5zX3RyX291dC5mbGFnIGFuZCBub3QgaGFzX2NvbnRlbnQgYW5kIG5vdCBuZXh0X250LmZvdW5kKSAtJX1cbiAgICAgICAgICAgIHt7LSAnXHUwMDNjdHVybnxcdTAwM2VcXG4nIC19fVxuICAgICAgICB7JS0gZW5kaWYgLSV9XG5cbiAgICB7Iy0gVHJhY2sgcHJldmlvdXMgbm9uLXRvb2wgcm9sZSBmb3IgbmV4dCBpdGVyYXRpb24gKGF2b2lkcyBPKG4pIGJhY2t3YXJkIHNjYW4pIC0jfVxuICAgIHslLSBzZXQgbnMucHJldl9ub25fdG9vbF9yb2xlID0gbWVzc2FnZVsncm9sZSddIC0lfVxuICAgIHslLSBlbmRpZiAtJX1cbnslLSBlbmRmb3IgLSV9XG5cbnslLSBpZiBhZGRfZ2VuZXJhdGlvbl9wcm9tcHQgLSV9XG4gICAgeyUtIGlmIG5zLnByZXZfbWVzc2FnZV90eXBlICE9ICd0b29sX3Jlc3BvbnNlJyBhbmQgbnMucHJldl9tZXNzYWdlX3R5cGUgIT0gJ3Rvb2xfY2FsbCcgLSV9XG4gICAgICAgIHt7LSAnXHUwMDNjfHR1cm5cdTAwM2Vtb2RlbFxcbicgLX19XG4gICAgICAgIHslLSBpZiBub3QgZW5hYmxlX3RoaW5raW5nIC0lfVxuICAgICAgICAgICAge3stICdcdTAwM2N8Y2hhbm5lbFx1MDAzZXRob3VnaHRcXG5cdTAwM2NjaGFubmVsfFx1MDAzZScgLX19XG4gICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICB7JS0gZWxpZiBucy5wcmV2X21lc3NhZ2VfdHlwZSA9PSAndG9vbF9yZXNwb25zZScgYW5kIGVuYWJsZV90aGlua2luZyAtJX1cbiAgICAgICAge3stICdcdTAwM2N8Y2hhbm5lbFx1MDAzZXRob3VnaHRcXG4nIC19fVxuICAgIHslLSBlbmRpZiAtJX1cbnslLSBlbmRpZiAtJX1cbiIsCiAgICAidG9vbF9jYWxsaW5nX2NvbnZlbnRpb24iOiAiR2VtbWEgNCBmdW5jdGlvbi1jYWxsaW5nIGZvcm1hdCAoSlNPTi1zY2hlbWEgZGVjbGFyYXRpb25zKTsgT3BlbkFJIHRvb2xfY2FsbHMgYXJyYXkgb24gdGhlIHNlcnZpbmcgc3VyZmFjZSIKICB9Cn0K",
  "signatures": [
    {
      "keyid": "b1fe8c2eae8162806ed6f0a0ae1c43d3443f99bcf617a798a033a16d8dc21950",
      "sig": "yhgfNRLfCBH44jyArSz/xuQeI4DphZdVImahf2JNOS7kRkAsn7TyTMjs7qKUV70zNmNNb+4wyYFLGclF+klTDA=="
    }
  ]
}
