{
  "payloadType": "application/vnd.in-toto+json",
  "payload": "ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAibW9kZWwtMDAwMDEtb2YtMDAwMDIuc2FmZXRlbnNvcnMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWVlZjg3OTE1MzdiYzA0ZjExMDk2N2M1MTMxNDllMDM3ZDJhOWFlOTdkNDlhZGQ3MjkxZWJmYTYyODA2YmJmYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAibW9kZWwtMDAwMDItb2YtMDAwMDIuc2FmZXRlbnNvcnMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDE4OTEyMjIwZjU1OWY3MDI1ZDYwMzMzZTA5OTYxODNjZDUzOGFhNzdhZDZmNDk4OGE4OWNlNDdiZTY4MWYxMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAibW9kZWwuc2FmZXRlbnNvcnMuaW5kZXguanNvbiIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkNGFmZjNiOTc2ZDY5YzEyM2EyOWQxYzA4NWQ3YmE0ZGUxYWMzZjRjYTE3MjZhN2Y4MWUxYjExNDYyYTY0ZWEyIgogICAgICB9CiAgICB9CiAgXSwKICAicHJlZGljYXRlVHlwZSI6ICJodHRwczovL2Fzc2F5LmNvLm56L2F0dGVzdGF0aW9uL2FkbWlzc2lvbi92MSIsCiAgInByZWRpY2F0ZSI6IHsKICAgICJzY2hlbWEiOiAicHJvdmVuYW5jZS1hcnRlZmFjdC92MSIsCiAgICAibW9kZWxfaWQiOiAiZ29vZ2xlL2dlbW1hLTQtMzFCLWl0IiwKICAgICJraW5kIjogImxsbSIsCiAgICAidmVyc2lvbiI6ICI4NDJkYTM3OTRlYWEwYjc3ZDVmMDhiYWU4N2ExNzQ1OWQ5MWZmNDc1IiwKICAgICJzdGF0dXMiOiAiYWRtaXR0ZWQiLAogICAgImV2aWRlbmNlX3RpZXIiOiAiVDIiLAogICAgInZpb2xhdGlvbnMiOiBbXSwKICAgICJsaWNlbmNlIjogewogICAgICAiaWRlbnRpZmllciI6ICJBcGFjaGUtMi4wIiwKICAgICAgImV2aWRlbmNlIjogInJlcG9zaXRvcnktbWV0YWRhdGEiLAogICAgICAiZGVjbGFyZWQiOiB7CiAgICAgICAgImlkZW50aWZpZXIiOiAiQXBhY2hlLTIuMCIsCiAgICAgICAgImJhc2lzIjogImNhcmQtc2VjdGlvbiIKICAgICAgfSwKICAgICAgImNvbmNsdWRlZCI6ICJBcGFjaGUtMi4wIiwKICAgICAgImJhc2Vfb2JsaWdhdGlvbnMiOiBbXSwKICAgICAgImNhbm9uaWNhbF90ZXh0IjogIkFwYWNoZS0yLjAudHh0IiwKICAgICAgImNhbm9uaWNhbF90ZXh0X2RpZ2VzdCI6ICJzaGEyNTY6Y2ZjNzc0OWI5NmY2M2JkMzFjM2M0MmI1YzQ3MWJmNzU2ODE0MDUzZTg0N2MxMGYzZWIwMDM0MTdiYzUyM2QzMCIsCiAgICAgICJzb3VyY2VfdXJsIjogImh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAudHh0IiwKICAgICAgInNvdXJjZV9kaWdlc3QiOiAic2hhMjU2OmNmYzc3NDliOTZmNjNiZDMxYzNjNDJiNWM0NzFiZjc1NjgxNDA1M2U4NDdjMTBmM2ViMDAzNDE3YmM1MjNkMzAiLAogICAgICAiYWRkZWRfY2xhdXNlX3NjcmVlbiI6IHsKICAgICAgICAiZmlsZXNfcmVhZCI6IFtdLAogICAgICAgICJmaW5kaW5ncyI6IFtdCiAgICAgIH0KICAgIH0sCiAgICAicHJvdmVuYW5jZSI6IHsKICAgICAgInNvdXJjZSI6ICJodHRwczovL2h1Z2dpbmdmYWNlLmNvL2dvb2dsZS9nZW1tYS00LTMxQi1pdCIsCiAgICAgICJvZmZpY2lhbF9saWNlbnNvcl9yZXBvIjogdHJ1ZSwKICAgICAgImZvcm1hdCI6ICJzYWZldGVuc29ycyIsCiAgICAgICJjaGVja3N1bV92ZXJpZmllZCI6IHRydWUKICAgIH0sCiAgICAiZXhwb3J0X2NvbnRyb2wiOiB7CiAgICAgICJzdGF0dXMiOiAibm90X2Fzc2Vzc2VkIiwKICAgICAgInJlc3VsdCI6ICJ1bmtub3duIiwKICAgICAgImJhc2lzIjogbnVsbCwKICAgICAgImFzc2Vzc2VkX2J5IjogbnVsbCwKICAgICAgImFzc2Vzc2VkX2RhdGUiOiBudWxsLAogICAgICAicmVmZXJlbmNlIjogbnVsbAogICAgfSwKICAgICJoYXJkd2FyZV9maXQiOiB7CiAgICAgICJtaW5fdGllciI6IDAsCiAgICAgICJ2cmFtX2ZwOCI6ICIzMUdCIiwKICAgICAgInZyYW1fZnA0IjogIjE2R0IiLAogICAgICAiY29udGV4dF9jZWlsaW5nIjogIjI2MksiLAogICAgICAiY29uY3VycmVuY3lfZW52ZWxvcGUiOiAiNS0yMCAoVGllciAwIGV2YWx1YXRpb24gdW5pdDsgZGVzaWduIDguMSBjYXZlYXQ6IHdpbGwgbm90IGhvbGQgbGF0ZW5jeSB0YXJnZXRzIHVuZGVyIGNvbmN1cnJlbnQgbG9hZCkiCiAgICB9LAogICAgImluZGVtbml0eSI6IHsKICAgICAgInByb3ZpZGVkX2J5X2xpY2Vuc29yIjogZmFsc2UsCiAgICAgICJjbGllbnRfZGlzY2xvc3VyZV9yZXF1aXJlZCI6IHRydWUKICAgIH0sCiAgICAiYXR0ZXN0YXRpb24iOiB7CiAgICAgICJrZXlfaWQiOiAiNjExM2YxNzg2NjNhZDk0YWQ0YjU2ZGRmMzYyOTFkOTI2ODNiMzc1YzE3YjAwMjMwZmQ3MDY3OWEyNzQwOGFmNCIsCiAgICAgICJpc3N1ZWRfYXQiOiAiMjAyNi0wOS0yNFQwMDowMDowMFoiLAogICAgICAiZ2F0ZV92ZXJzaW9uIjogIjIwMjYtMDktMjQiCiAgICB9LAogICAgImdhdGUiOiB7CiAgICAgICJ0b29sIjogImFkbWlzc2lvbi1nYXRlIiwKICAgICAgInZlcnNpb24iOiAiMjAyNi0wOS0yNCIsCiAgICAgICJydW5fZGlnZXN0IjogInNoYTI1Njo3NTc1OWRmOTEzM2YzMDUyODgzNjRlNGE5NWNkMDFhNTQ5NTVhYzk4MjcxOTY2YzlmNjRjN2ExZGJhMmQyNWQzIgogICAgfSwKICAgICJyZXZpZXciOiB7CiAgICAgICJyZXZpZXdlZF9ieSI6ICJ0ZWFtLXFhICh3ZWlnaHRzLmRpZ2VzdCBpcyB0aGUgTEZTIHNoYTI1NiBvZiB0aGUgcGlubmVkIHNhZmV0ZW5zb3JzIGZpbGUsIHdoaWNoIGlzIHRoZSBjb250ZW50IGRpZ2VzdCBmb3IgTEZTLXN0b3JlZCBmaWxlczsgYSBtdWx0aS1zaGFyZCBzZXQgaXMgcGlubmVkIGluIGZ1bGw6IGV2ZXJ5IHNoYXJkIGFuZCB0aGUgaW5kZXggZmlsZSBjYXJyeSB0aGVpciBvd24gZGlnZXN0IChmaW5kaW5ncyByZWdpc3RlciBWLTA0KTsgZXhwb3J0IHNjcmVlbmluZyBhbmQgY291bnNlbCBzaWduLW9mZiBwZW5kaW5nLCBkZWNpc2lvbiAwMDE3KSIsCiAgICAgICJyZXZpZXdlZF9kYXRlIjogIjIwMjYtMDktMjUiLAogICAgICAidHJpYWdlIjogW10KICAgIH0sCiAgICAiY2hhdF90ZW1wbGF0ZSI6ICJ7I1xuICBUZW1wbGF0ZTogR29vZ2xlIEdlbW1hIDQgQ2Fub25pY2FsIENoYXQgVGVtcGxhdGVcbiAgQXV0aG9yOiBHb29nbGUgR2VtbWEgRW5naW5lZXJpbmcgVGVhbVxuICBQdWJsaXNoZWQ6IDIwMjYtMDctMDlcbiAgQ29udGV4dDogRml4ZWQgdG9vbC1jYWxsaW5nIGxvb3BzLCB0dXJuIGNsb3N1cmVzLCBhbmQgdGhpbmtpbmcgY29udGVudC1vcmRlcmluZy5cbiN9XG57JS0gbWFjcm8gZm9ybWF0X3BhcmFtZXRlcnMocHJvcGVydGllcywgcmVxdWlyZWQsIGZpbHRlcl9rZXlzPWZhbHNlKSAtJX1cbiAgICB7JS0gc2V0IHN0YW5kYXJkX2tleXMgPSBbJ2Rlc2NyaXB0aW9uJywgJ3R5cGUnLCAncHJvcGVydGllcycsICdyZXF1aXJlZCcsICdudWxsYWJsZSddIC0lfVxuICAgIHslLSBzZXQgbnMgPSBuYW1lc3BhY2UoZm91bmRfZmlyc3Q9ZmFsc2UpIC0lfVxuICAgIHslLSBmb3Iga2V5LCB2YWx1ZSBpbiBwcm9wZXJ0aWVzIHwgZGljdHNvcnQgLSV9XG4gICAgICAgIHslLSBzZXQgYWRkX2NvbW1hID0gZmFsc2UgLSV9XG4gICAgICAgIHslLSBpZiBub3QgZmlsdGVyX2tleXMgb3Iga2V5IG5vdCBpbiBzdGFuZGFyZF9rZXlzIC0lfVxuICAgICAgICAgICAgeyUtIGlmIG5zLmZvdW5kX2ZpcnN0ICV9LHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgeyUtIHNldCBucy5mb3VuZF9maXJzdCA9IHRydWUgLSV9XG4gICAgICAgICAgICB7eyBrZXkgfX06e1xuICAgICAgICAgICAgeyUtIGlmIHZhbHVlWydkZXNjcmlwdGlvbiddIC0lfVxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOlx1MDAzY3xcInxcdTAwM2V7eyB2YWx1ZVsnZGVzY3JpcHRpb24nXSB9fVx1MDAzY3xcInxcdTAwM2VcbiAgICAgICAgICAgICAgICB7JS0gc2V0IGFkZF9jb21tYSA9IHRydWUgLSV9XG4gICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICB7JS0gaWYgdmFsdWVbJ3R5cGUnXSB8IHVwcGVyID09ICdTVFJJTkcnIC0lfVxuICAgICAgICAgICAgICAgIHslLSBpZiB2YWx1ZVsnZW51bSddIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gaWYgYWRkX2NvbW1hICV9LHslLSBlbHNlIC0lfSB7JS0gc2V0IGFkZF9jb21tYSA9IHRydWUgLSV9IHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICBlbnVtOnt7IGZvcm1hdF9hcmd1bWVudCh2YWx1ZVsnZW51bSddKSB9fVxuICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgIHslLSBlbGlmIHZhbHVlWyd0eXBlJ10gfCB1cHBlciA9PSAnQVJSQVknIC0lfVxuICAgICAgICAgICAgICAgIHslLSBpZiB2YWx1ZVsnaXRlbXMnXSBpcyBtYXBwaW5nIGFuZCB2YWx1ZVsnaXRlbXMnXSAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGlmIGFkZF9jb21tYSAlfSx7JS0gZWxzZSAtJX0geyUtIHNldCBhZGRfY29tbWEgPSB0cnVlIC0lfSB7JSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6e1xuICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IG5zX2l0ZW1zID0gbmFtZXNwYWNlKGZvdW5kX2ZpcnN0PWZhbHNlKSAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGZvciBpdGVtX2tleSwgaXRlbV92YWx1ZSBpbiB2YWx1ZVsnaXRlbXMnXSB8IGRpY3Rzb3J0IC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIGl0ZW1fdmFsdWUgaXMgbm90IG5vbmUgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIG5zX2l0ZW1zLmZvdW5kX2ZpcnN0ICV9LHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbnNfaXRlbXMuZm91bmRfZmlyc3QgPSB0cnVlIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiBpdGVtX2tleSA9PSAncHJvcGVydGllcycgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gaWYgaXRlbV92YWx1ZSBpcyBtYXBwaW5nIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3stIGZvcm1hdF9wYXJhbWV0ZXJzKGl0ZW1fdmFsdWUsIHZhbHVlWydpdGVtcyddWydyZXF1aXJlZCddIHwgZGVmYXVsdChbXSkpIC19fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZWxpZiBpdGVtX2tleSA9PSAncmVxdWlyZWQnIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDpbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBmb3IgcmVxX2l0ZW0gaW4gaXRlbV92YWx1ZSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx1MDAzY3xcInxcdTAwM2V7ey0gcmVxX2l0ZW0gLX19XHUwMDNjfFwifFx1MDAzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIG5vdCBsb29wLmxhc3QgJX0seyUgZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRmb3IgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZWxpZiBpdGVtX2tleSA9PSAndHlwZScgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiBpdGVtX3ZhbHVlIGlzIHN0cmluZyAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6e3sgZm9ybWF0X2FyZ3VtZW50KGl0ZW1fdmFsdWUgfCB1cHBlcikgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVsc2UgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOnt7IGZvcm1hdF9hcmd1bWVudChpdGVtX3ZhbHVlIHwgbWFwKCd1cHBlcicpIHwgbGlzdCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbHNlIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtX2tleSB9fTp7eyBmb3JtYXRfYXJndW1lbnQoaXRlbV92YWx1ZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBlbmRmb3IgLSV9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICB7JS0gaWYgdmFsdWVbJ251bGxhYmxlJ10gJX1cbiAgICAgICAgICAgICAgICB7JS0gaWYgYWRkX2NvbW1hICV9LHslLSBlbHNlIC0lfSB7JS0gc2V0IGFkZF9jb21tYSA9IHRydWUgLSV9IHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgIG51bGxhYmxlOnRydWVcbiAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgIHslLSBpZiB2YWx1ZVsndHlwZSddIHwgdXBwZXIgPT0gJ09CSkVDVCcgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGlmIHZhbHVlWydwcm9wZXJ0aWVzJ10gaXMgZGVmaW5lZCBhbmQgdmFsdWVbJ3Byb3BlcnRpZXMnXSBpcyBtYXBwaW5nIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gaWYgYWRkX2NvbW1hICV9LHslLSBlbHNlIC0lfSB7JS0gc2V0IGFkZF9jb21tYSA9IHRydWUgLSV9IHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOntcbiAgICAgICAgICAgICAgICAgICAge3stIGZvcm1hdF9wYXJhbWV0ZXJzKHZhbHVlWydwcm9wZXJ0aWVzJ10sIHZhbHVlWydyZXF1aXJlZCddIHwgZGVmYXVsdChbXSkpIC19fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeyUtIGVsaWYgdmFsdWUgaXMgbWFwcGluZyAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGlmIGFkZF9jb21tYSAlfSx7JS0gZWxzZSAtJX0geyUtIHNldCBhZGRfY29tbWEgPSB0cnVlIC0lfSB7JSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczp7XG4gICAgICAgICAgICAgICAgICAgIHt7LSBmb3JtYXRfcGFyYW1ldGVycyh2YWx1ZSwgdmFsdWVbJ3JlcXVpcmVkJ10gfCBkZWZhdWx0KFtdKSwgZmlsdGVyX2tleXM9dHJ1ZSkgLX19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGlmIHZhbHVlWydyZXF1aXJlZCddIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gaWYgYWRkX2NvbW1hICV9LHslLSBlbHNlIC0lfSB7JS0gc2V0IGFkZF9jb21tYSA9IHRydWUgLSV9IHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDpbXG4gICAgICAgICAgICAgICAgICAgIHslLSBmb3IgaXRlbSBpbiB2YWx1ZVsncmVxdWlyZWQnXSB8IGRlZmF1bHQoW10pIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgXHUwMDNjfFwifFx1MDAzZXt7LSBpdGVtIC19fVx1MDAzY3xcInxcdTAwM2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiBub3QgbG9vcC5sYXN0ICV9LHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gZW5kZm9yIC0lfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgeyUtIGlmIGFkZF9jb21tYSAlfSx7JS0gZWxzZSAtJX0geyUtIHNldCBhZGRfY29tbWEgPSB0cnVlIC0lfSB7JSBlbmRpZiAtJX1cbiAgICAgICAgICAgIHR5cGU6XHUwMDNjfFwifFx1MDAzZXt7IHZhbHVlWyd0eXBlJ10gfCB1cHBlciB9fVx1MDAzY3xcInxcdTAwM2V9XG4gICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICB7JS0gZW5kZm9yIC0lfVxueyUtIGVuZG1hY3JvIC0lfVxueyUtIG1hY3JvIGZvcm1hdF9mdW5jdGlvbl9kZWNsYXJhdGlvbih0b29sX2RhdGEpIC0lfVxuICAgIGRlY2xhcmF0aW9uOnt7LSB0b29sX2RhdGFbJ2Z1bmN0aW9uJ11bJ25hbWUnXSAtfX17ZGVzY3JpcHRpb246XHUwMDNjfFwifFx1MDAzZXt7LSB0b29sX2RhdGFbJ2Z1bmN0aW9uJ11bJ2Rlc2NyaXB0aW9uJ10gLX19XHUwMDNjfFwifFx1MDAzZVxuICAgIHslLSBzZXQgcGFyYW1zID0gdG9vbF9kYXRhWydmdW5jdGlvbiddWydwYXJhbWV0ZXJzJ10gLSV9XG4gICAgeyUtIGlmIHBhcmFtcyAtJX1cbiAgICAgICAgLHBhcmFtZXRlcnM6e1xuICAgICAgICB7JS0gaWYgcGFyYW1zWydwcm9wZXJ0aWVzJ10gLSV9XG4gICAgICAgICAgICBwcm9wZXJ0aWVzOnsge3stIGZvcm1hdF9wYXJhbWV0ZXJzKHBhcmFtc1sncHJvcGVydGllcyddLCBwYXJhbXNbJ3JlcXVpcmVkJ10pIC19fSB9LFxuICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgIHslLSBpZiBwYXJhbXNbJ3JlcXVpcmVkJ10gLSV9XG4gICAgICAgICAgICByZXF1aXJlZDpbXG4gICAgICAgICAgICB7JS0gZm9yIGl0ZW0gaW4gcGFyYW1zWydyZXF1aXJlZCddIC0lfVxuICAgICAgICAgICAgICAgIFx1MDAzY3xcInxcdTAwM2V7ey0gaXRlbSAtfX1cdTAwM2N8XCJ8XHUwMDNlXG4gICAgICAgICAgICAgICAge3stICcsJyBpZiBub3QgbG9vcC5sYXN0IC19fVxuICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgICAgIF0sXG4gICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgeyUtIGlmIHBhcmFtc1sndHlwZSddIC0lfVxuICAgICAgICAgICAgdHlwZTpcdTAwM2N8XCJ8XHUwMDNle3stIHBhcmFtc1sndHlwZSddIHwgdXBwZXIgLX19XHUwMDNjfFwifFx1MDAzZX1cbiAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgIHslLSBlbmRpZiAtJX1cbiAgICB7JS0gaWYgJ3Jlc3BvbnNlJyBpbiB0b29sX2RhdGFbJ2Z1bmN0aW9uJ10gLSV9XG4gICAgICAgIHslLSBzZXQgcmVzcG9uc2VfZGVjbGFyYXRpb24gPSB0b29sX2RhdGFbJ2Z1bmN0aW9uJ11bJ3Jlc3BvbnNlJ10gLSV9XG4gICAgICAgICxyZXNwb25zZTp7XG4gICAgICAgIHslLSBpZiByZXNwb25zZV9kZWNsYXJhdGlvblsnZGVzY3JpcHRpb24nXSAtJX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlx1MDAzY3xcInxcdTAwM2V7ey0gcmVzcG9uc2VfZGVjbGFyYXRpb25bJ2Rlc2NyaXB0aW9uJ10gLX19XHUwMDNjfFwifFx1MDAzZSxcbiAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICB7JS0gaWYgcmVzcG9uc2VfZGVjbGFyYXRpb25bJ3R5cGUnXSB8IHVwcGVyID09ICdPQkpFQ1QnIC0lfVxuICAgICAgICAgICAgdHlwZTpcdTAwM2N8XCJ8XHUwMDNle3stIHJlc3BvbnNlX2RlY2xhcmF0aW9uWyd0eXBlJ10gfCB1cHBlciAtfX1cdTAwM2N8XCJ8XHUwMDNlfVxuICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgeyUtIGVuZGlmIC0lfVxuICAgIH1cbnslLSBlbmRtYWNybyAtJX1cbnslLSBtYWNybyBmb3JtYXRfYXJndW1lbnQoYXJndW1lbnQsIGVzY2FwZV9rZXlzPVRydWUpIC0lfVxuICAgIHslLSBpZiBhcmd1bWVudCBpcyBub25lIC0lfVxuICAgICAgICB7ey0gJ251bGwnIC19fVxuICAgIHslLSBlbGlmIGFyZ3VtZW50IGlzIHN0cmluZyAtJX1cbiAgICAgICAge3stICdcdTAwM2N8XCJ8XHUwMDNlJyArIGFyZ3VtZW50ICsgJ1x1MDAzY3xcInxcdTAwM2UnIC19fVxuICAgIHslLSBlbGlmIGFyZ3VtZW50IGlzIGJvb2xlYW4gLSV9XG4gICAgICAgIHt7LSAndHJ1ZScgaWYgYXJndW1lbnQgZWxzZSAnZmFsc2UnIC19fVxuICAgIHslLSBlbGlmIGFyZ3VtZW50IGlzIG1hcHBpbmcgLSV9XG4gICAgICAgIHt7LSAneycgLX19XG4gICAgICAgIHslLSBzZXQgbnMgPSBuYW1lc3BhY2UoZm91bmRfZmlyc3Q9ZmFsc2UpIC0lfVxuICAgICAgICB7JS0gZm9yIGtleSwgdmFsdWUgaW4gYXJndW1lbnQgfCBkaWN0c29ydCAtJX1cbiAgICAgICAgICAgIHslLSBpZiBucy5mb3VuZF9maXJzdCAlfSx7JSBlbmRpZiAtJX1cbiAgICAgICAgICAgIHslLSBzZXQgbnMuZm91bmRfZmlyc3QgPSB0cnVlIC0lfVxuICAgICAgICAgICAgeyUtIGlmIGVzY2FwZV9rZXlzIC0lfVxuICAgICAgICAgICAgICAgIHt7LSAnXHUwMDNjfFwifFx1MDAzZScgKyBrZXkgKyAnXHUwMDNjfFwifFx1MDAzZScgLX19XG4gICAgICAgICAgICB7JS0gZWxzZSAtJX1cbiAgICAgICAgICAgICAgICB7ey0ga2V5IC19fVxuICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgOnt7LSBmb3JtYXRfYXJndW1lbnQodmFsdWUsIGVzY2FwZV9rZXlzPWVzY2FwZV9rZXlzKSAtfX1cbiAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAge3stICd9JyAtfX1cbiAgICB7JS0gZWxpZiBhcmd1bWVudCBpcyBzZXF1ZW5jZSAtJX1cbiAgICAgICAge3stICdbJyAtfX1cbiAgICAgICAgeyUtIGZvciBpdGVtIGluIGFyZ3VtZW50IC0lfVxuICAgICAgICAgICAge3stIGZvcm1hdF9hcmd1bWVudChpdGVtLCBlc2NhcGVfa2V5cz1lc2NhcGVfa2V5cykgLX19XG4gICAgICAgICAgICB7JS0gaWYgbm90IGxvb3AubGFzdCAlfSx7JSBlbmRpZiAtJX1cbiAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAge3stICddJyAtfX1cbiAgICB7JS0gZWxzZSAtJX1cbiAgICAgICAge3stIGFyZ3VtZW50IC19fVxuICAgIHslLSBlbmRpZiAtJX1cbnslLSBlbmRtYWNybyAtJX1cbnslLSBtYWNybyBzdHJpcF90aGlua2luZyh0ZXh0KSAtJX1cbiAgICB7JS0gc2V0IG5zID0gbmFtZXNwYWNlKHJlc3VsdD0nJykgLSV9XG4gICAgeyUtIGZvciBwYXJ0IGluIHRleHQuc3BsaXQoJ1x1MDAzY2NoYW5uZWx8XHUwMDNlJykgLSV9XG4gICAgICAgIHslLSBpZiAnXHUwMDNjfGNoYW5uZWxcdTAwM2UnIGluIHBhcnQgLSV9XG4gICAgICAgICAgICB7JS0gc2V0IG5zLnJlc3VsdCA9IG5zLnJlc3VsdCArIHBhcnQuc3BsaXQoJ1x1MDAzY3xjaGFubmVsXHUwMDNlJylbMF0gLSV9XG4gICAgICAgIHslLSBlbHNlIC0lfVxuICAgICAgICAgICAgeyUtIHNldCBucy5yZXN1bHQgPSBucy5yZXN1bHQgKyBwYXJ0IC0lfVxuICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgeyUtIGVuZGZvciAtJX1cbiAgICB7ey0gbnMucmVzdWx0IHwgdHJpbSAtfX1cbnslLSBlbmRtYWNybyAtJX1cblxueyUtIG1hY3JvIGZvcm1hdF90b29sX3Jlc3BvbnNlX2Jsb2NrKHRvb2xfbmFtZSwgcmVzcG9uc2UpIC0lfVxuICAgIHt7LSAnXHUwMDNjfHRvb2xfcmVzcG9uc2VcdTAwM2UnIC19fVxuICAgIHslLSBpZiByZXNwb25zZSBpcyBtYXBwaW5nIC0lfVxuICAgICAgICB7ey0gJ3Jlc3BvbnNlOicgKyB0b29sX25hbWUgKyAneycgLX19XG4gICAgICAgIHslLSBmb3Iga2V5LCB2YWx1ZSBpbiByZXNwb25zZSB8IGRpY3Rzb3J0IC0lfVxuICAgICAgICAgICAge3stIGtleSAtfX06e3stIGZvcm1hdF9hcmd1bWVudCh2YWx1ZSwgZXNjYXBlX2tleXM9RmFsc2UpIC19fVxuICAgICAgICAgICAgeyUtIGlmIG5vdCBsb29wLmxhc3QgJX0seyUgZW5kaWYgLSV9XG4gICAgICAgIHslLSBlbmRmb3IgLSV9XG4gICAgICAgIHt7LSAnfScgLX19XG4gICAgeyUtIGVsc2UgLSV9XG4gICAgICAgIHt7LSAncmVzcG9uc2U6JyArIHRvb2xfbmFtZSArICd7dmFsdWU6JyArIGZvcm1hdF9hcmd1bWVudChyZXNwb25zZSwgZXNjYXBlX2tleXM9RmFsc2UpICsgJ30nIC19fVxuICAgIHslLSBlbmRpZiAtJX1cbiAgICB7ey0gJ1x1MDAzY3Rvb2xfcmVzcG9uc2V8XHUwMDNlJyAtfX1cbnslLSBlbmRtYWNybyAtJX1cblxueyMtID09PT09IFNFVFVQID09PT09IC0jfVxueyUtIHNldCBucyA9IG5hbWVzcGFjZShwcmV2X21lc3NhZ2VfdHlwZT1Ob25lLCBwcmV2X25vbl90b29sX3JvbGU9Tm9uZSkgLSV9XG57JS0gc2V0IGxvb3BfbWVzc2FnZXMgPSBtZXNzYWdlcyAtJX1cbnslLSBzZXQgZW5hYmxlX3RoaW5raW5nID0gZW5hYmxlX3RoaW5raW5nIHwgZGVmYXVsdChmYWxzZSkgLSV9XG57JS0gc2V0IHByZXNlcnZlX3RoaW5raW5nID0gcHJlc2VydmVfdGhpbmtpbmcgfCBkZWZhdWx0KGZhbHNlKSAtJX1cbnt7LSBib3NfdG9rZW4gLX19XG57Iy0gSGFuZGxlIFN5c3RlbS9Ub29sIERlZmluaXRpb25zIEJsb2NrIC0jfVxueyUtIGlmIGVuYWJsZV90aGlua2luZyBvciB0b29scyBvciAobWVzc2FnZXMgYW5kIG1lc3NhZ2VzWzBdWydyb2xlJ10gaW4gWydzeXN0ZW0nLCAnZGV2ZWxvcGVyJ10pIC0lfVxuICAgIHt7LSAnXHUwMDNjfHR1cm5cdTAwM2VzeXN0ZW1cXG4nIC19fVxuICAgIHsjLSBJbmplY3QgVGhpbmtpbmcgdG9rZW4gYXQgdGhlIHZlcnkgdG9wIG9mIHRoZSBGSVJTVCBzeXN0ZW0gdHVybiAtI31cbiAgICB7JS0gaWYgZW5hYmxlX3RoaW5raW5nIC0lfVxuICAgICAgICB7ey0gJ1x1MDAzY3x0aGlua3xcdTAwM2VcXG4nIC19fVxuICAgICAgICB7JS0gc2V0IG5zLnByZXZfbWVzc2FnZV90eXBlID0gJ3RoaW5rJyAtJX1cbiAgICB7JS0gZW5kaWYgLSV9XG4gICAgeyUtIGlmIG1lc3NhZ2VzIGFuZCBtZXNzYWdlc1swXVsncm9sZSddIGluIFsnc3lzdGVtJywgJ2RldmVsb3BlciddIC0lfVxuICAgICAgICB7JS0gaWYgbWVzc2FnZXNbMF1bJ2NvbnRlbnQnXSBpcyBzdHJpbmcgLSV9XG4gICAgICAgICAgICB7ey0gbWVzc2FnZXNbMF1bJ2NvbnRlbnQnXSB8IHRyaW0gLX19XG4gICAgICAgIHslLSBlbGlmIG1lc3NhZ2VzWzBdWydjb250ZW50J10gaXMgc2VxdWVuY2UgLSV9XG4gICAgICAgICAgICB7JS0gZm9yIGl0ZW0gaW4gbWVzc2FnZXNbMF1bJ2NvbnRlbnQnXSAtJX1cbiAgICAgICAgICAgICAgICB7ey0gaXRlbVsndGV4dCddIHwgdHJpbSArICcgJy19fVxuICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICB7JS0gc2V0IGxvb3BfbWVzc2FnZXMgPSBtZXNzYWdlc1sxOl0gLSV9XG4gICAgeyUtIGVuZGlmIC0lfVxuICAgIHslLSBpZiB0b29scyAtJX1cbiAgICAgICAgeyUtIGZvciB0b29sIGluIHRvb2xzICV9XG4gICAgICAgICAgICB7ey0gJ1x1MDAzY3x0b29sXHUwMDNlJyAtfX1cbiAgICAgICAgICAgIHt7LSBmb3JtYXRfZnVuY3Rpb25fZGVjbGFyYXRpb24odG9vbCkgfCB0cmltIC19fVxuICAgICAgICAgICAge3stICdcdTAwM2N0b29sfFx1MDAzZScgLX19XG4gICAgICAgIHslLSBlbmRmb3IgJX1cbiAgICAgICAgeyUtIHNldCBucy5wcmV2X21lc3NhZ2VfdHlwZSA9ICd0b29sJyAtJX1cbiAgICB7JS0gZW5kaWYgLSV9XG4gICAge3stICdcdTAwM2N0dXJufFx1MDAzZVxcbicgLX19XG57JS0gZW5kaWYgJX1cblxueyMtIFByZS1zY2FuOiBmaW5kIGxhc3QgdXNlciBtZXNzYWdlIGluZGV4IGZvciByZWFzb25pbmcgZ3VhcmQgLSN9XG57JS0gc2V0IG5zX3R1cm4gPSBuYW1lc3BhY2UobGFzdF91c2VyX2lkeD0tMSkgLSV9XG57JS0gZm9yIGkgaW4gcmFuZ2UobG9vcF9tZXNzYWdlcyB8IGxlbmd0aCkgLSV9XG4gICAgeyUtIGlmIGxvb3BfbWVzc2FnZXNbaV1bJ3JvbGUnXSA9PSAndXNlcicgLSV9XG4gICAgICAgIHslLSBzZXQgbnNfdHVybi5sYXN0X3VzZXJfaWR4ID0gaSAtJX1cbiAgICB7JS0gZW5kaWYgLSV9XG57JS0gZW5kZm9yIC0lfVxuXG57Iy0gTG9vcCB0aHJvdWdoIG1lc3NhZ2VzIC0jfVxueyUtIGZvciBtZXNzYWdlIGluIGxvb3BfbWVzc2FnZXMgLSV9XG4gICAgeyUtIGlmIG1lc3NhZ2VbJ3JvbGUnXSAhPSAndG9vbCcgLSV9XG4gICAgeyUtIHNldCBucy5wcmV2X21lc3NhZ2VfdHlwZSA9IE5vbmUgLSV9XG4gICAgeyUtIHNldCByb2xlID0gJ21vZGVsJyBpZiBtZXNzYWdlWydyb2xlJ10gPT0gJ2Fzc2lzdGFudCcgZWxzZSBtZXNzYWdlWydyb2xlJ10gLSV9XG4gICAgeyMtIERldGVjdCBjb250aW51YXRpb24gdXNpbmcgdHJhY2tlZCBzdGF0ZSDigJQgTygxKSBpbnN0ZWFkIG9mIE8obikgYmFja3dhcmQgc2NhbiAtI31cbiAgICB7JS0gc2V0IGNvbnRpbnVlX3NhbWVfbW9kZWxfdHVybiA9IChyb2xlID09ICdtb2RlbCcgYW5kIG5zLnByZXZfbm9uX3Rvb2xfcm9sZSA9PSAnYXNzaXN0YW50JykgLSV9XG4gICAgeyUtIGlmIG5vdCBjb250aW51ZV9zYW1lX21vZGVsX3R1cm4gLSV9XG4gICAgICAgIHt7LSAnXHUwMDNjfHR1cm5cdTAwM2UnICsgcm9sZSArICdcXG4nIH19XG5cbiAgICB7JS0gZW5kaWYgLSV9XG5cbiAgICB7Iy0gUmVuZGVyIHJlYXNvbmluZy9yZWFzb25pbmdfY29udGVudCBhcyB0aGlua2luZyBjaGFubmVsIC0jfVxuICAgIHslLSBzZXQgdGhpbmtpbmdfdGV4dCA9IG1lc3NhZ2UuZ2V0KCdyZWFzb25pbmcnKSBvciBtZXNzYWdlLmdldCgncmVhc29uaW5nX2NvbnRlbnQnKSAtJX1cbiAgICB7JS0gc2V0IHRoaW5raW5nX2dhdGUgPSAobG9vcC5pbmRleDAgXHUwMDNlIG5zX3R1cm4ubGFzdF91c2VyX2lkeCkgb3IgKHByZXNlcnZlX3RoaW5raW5nIGFuZCBtZXNzYWdlLmdldCgndG9vbF9jYWxscycpKSAtJX1cbiAgICB7JS0gaWYgdGhpbmtpbmdfdGV4dCBhbmQgdGhpbmtpbmdfZ2F0ZSAtJX1cbiAgICAgICAge3stICdcdTAwM2N8Y2hhbm5lbFx1MDAzZXRob3VnaHRcXG4nICsgdGhpbmtpbmdfdGV4dCArICdcXG5cdTAwM2NjaGFubmVsfFx1MDAzZScgLX19XG4gICAgeyUtIGVuZGlmIC0lfVxuXG4gICAgICAgICAgICB7JS0gaWYgbWVzc2FnZS5nZXQoJ3Rvb2xfY2FsbHMnKSAtJX1cbiAgICAgICAgICAgICAgICB7JS0gZm9yIHRvb2xfY2FsbCBpbiBtZXNzYWdlLmdldCgndG9vbF9jYWxscycpIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IGZ1bmN0aW9uID0gdG9vbF9jYWxsWydmdW5jdGlvbiddIC0lfVxuICAgICAgICAgICAgICAgICAgICB7ey0gJ1x1MDAzY3x0b29sX2NhbGxcdTAwM2VjYWxsOicgKyBmdW5jdGlvblsnbmFtZSddICsgJ3snIC19fVxuICAgICAgICAgICAgICAgICAgICB7JS0gaWYgZnVuY3Rpb25bJ2FyZ3VtZW50cyddIGlzIG1hcHBpbmcgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IG5zX2FyZ3MgPSBuYW1lc3BhY2UoZm91bmRfZmlyc3Q9ZmFsc2UpIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGZvciBrZXksIHZhbHVlIGluIGZ1bmN0aW9uWydhcmd1bWVudHMnXSB8IGRpY3Rzb3J0IC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiBuc19hcmdzLmZvdW5kX2ZpcnN0ICV9LHslIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbnNfYXJncy5mb3VuZF9maXJzdCA9IHRydWUgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3stIGtleSAtfX06e3stIGZvcm1hdF9hcmd1bWVudCh2YWx1ZSwgZXNjYXBlX2tleXM9RmFsc2UpIC19fVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGVsaWYgZnVuY3Rpb25bJ2FyZ3VtZW50cyddIGlzIG5vbmUgLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBlbHNlIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAge3stIHJhaXNlX2V4Y2VwdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNoYXRfdGVtcGxhdGU6IHRvb2xfY2FsbHNbXS5mdW5jdGlvbi5hcmd1bWVudHMgbXVzdCBiZSBhIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJKU09OIG9iamVjdCAobWFwcGluZyksIG5vdCBhIHN0cmluZy4gRGVzZXJpYWxpemUgYXJndW1lbnRzIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgcGFzc2luZyB0byB0aGUgdGVtcGxhdGUuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgLX19XG4gICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICAgICAge3stICd9XHUwMDNjdG9vbF9jYWxsfFx1MDAzZScgLX19XG4gICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgICAgICAgICB7JS0gc2V0IG5zLnByZXZfbWVzc2FnZV90eXBlID0gJ3Rvb2xfY2FsbCcgLSV9XG4gICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG5cbiAgICAgICAgICAgIHslLSBzZXQgbnNfdHJfb3V0ID0gbmFtZXNwYWNlKGZsYWc9ZmFsc2UpIC0lfVxuICAgICAgICAgICAgeyUtIGlmIG1lc3NhZ2UuZ2V0KCd0b29sX3Jlc3BvbnNlcycpIC0lfVxuICAgICAgICAgICAgICAgIHsjLSBMZWdhY3k6IHRvb2xfcmVzcG9uc2VzIGVtYmVkZGVkIG9uIHRoZSBhc3Npc3RhbnQgbWVzc2FnZSAoR29vZ2xlL0dlbW1hIG5hdGl2ZSkgLSN9XG4gICAgICAgICAgICAgICAgeyUtIGZvciB0b29sX3Jlc3BvbnNlIGluIG1lc3NhZ2UuZ2V0KCd0b29sX3Jlc3BvbnNlcycpIC0lfVxuICAgICAgICAgICAgICAgICAgICB7ey0gZm9ybWF0X3Rvb2xfcmVzcG9uc2VfYmxvY2sodG9vbF9yZXNwb25zZVsnbmFtZSddIHwgZGVmYXVsdCgndW5rbm93bicsIHRydWUpLCB0b29sX3Jlc3BvbnNlWydyZXNwb25zZSddKSAtfX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIHNldCBuc190cl9vdXQuZmxhZyA9IHRydWUgLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbnMucHJldl9tZXNzYWdlX3R5cGUgPSAndG9vbF9yZXNwb25zZScgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgICAgIHslLSBlbGlmIG1lc3NhZ2UuZ2V0KCd0b29sX2NhbGxzJykgLSV9XG4gICAgICAgICAgICAgICAgeyMtIE9wZW5BSSBDaGF0IENvbXBsZXRpb25zOiBmb3J3YXJkLXNjYW4gY29uc2VjdXRpdmUgcm9sZTp0b29sIG1lc3NhZ2VzIC0jfVxuICAgICAgICAgICAgICAgIHslLSBzZXQgbnNfdG9vbF9zY2FuID0gbmFtZXNwYWNlKHN0b3BwZWQ9ZmFsc2UpIC0lfVxuICAgICAgICAgICAgICAgIHslLSBmb3IgayBpbiByYW5nZShsb29wLmluZGV4MCArIDEsIGxvb3BfbWVzc2FnZXMgfCBsZW5ndGgpIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gaWYgbnNfdG9vbF9zY2FuLnN0b3BwZWQgLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBlbGlmIGxvb3BfbWVzc2FnZXNba11bJ3JvbGUnXSAhPSAndG9vbCcgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IG5zX3Rvb2xfc2Nhbi5zdG9wcGVkID0gdHJ1ZSAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGVsc2UgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IGZvbGxvdyA9IGxvb3BfbWVzc2FnZXNba10gLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Iy0gUmVzb2x2ZSB0b29sX2NhbGxfaWQgdG8gZnVuY3Rpb24gbmFtZSAtI31cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbnNfdG5hbWUgPSBuYW1lc3BhY2UobmFtZT1mb2xsb3cuZ2V0KCduYW1lJykgb3IgJ3Vua25vd24nKSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBmb3IgdGMgaW4gbWVzc2FnZS5nZXQoJ3Rvb2xfY2FsbHMnKSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gaWYgdGMuZ2V0KCdpZCcpID09IGZvbGxvdy5nZXQoJ3Rvb2xfY2FsbF9pZCcpIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IG5zX3RuYW1lLm5hbWUgPSB0Y1snZnVuY3Rpb24nXVsnbmFtZSddIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRmb3IgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Iy0gSGFuZGxlIGNvbnRlbnQgYXMgc3RyaW5nIG9yIGNvbnRlbnQtcGFydHMgYXJyYXkgLSN9XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IHRvb2xfYm9keSA9IGZvbGxvdy5nZXQoJ2NvbnRlbnQnKSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiB0b29sX2JvZHkgaXMgc3RyaW5nIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7LSBmb3JtYXRfdG9vbF9yZXNwb25zZV9ibG9jayhuc190bmFtZS5uYW1lLCB0b29sX2JvZHkpIC19fVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVsaWYgdG9vbF9ib2R5IGlzIHNlcXVlbmNlIGFuZCB0b29sX2JvZHkgaXMgbm90IHN0cmluZyAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IG5zX3R4dCA9IG5hbWVzcGFjZShzPScnKSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZm9yIHBhcnQgaW4gdG9vbF9ib2R5IC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gaWYgcGFydC5nZXQoJ3R5cGUnKSA9PSAndGV4dCcgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IG5zX3R4dC5zID0gbnNfdHh0LnMgKyAocGFydC5nZXQoJ3RleHQnKSB8IGRlZmF1bHQoJycpKSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRmb3IgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3stIGZvcm1hdF90b29sX3Jlc3BvbnNlX2Jsb2NrKG5zX3RuYW1lLm5hbWUsIG5zX3R4dC5zKSAtfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZm9yIHBhcnQgaW4gdG9vbF9ib2R5IC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gaWYgcGFydC5nZXQoJ3R5cGUnKSBpbiBbJ2ltYWdlJywgJ2ltYWdlX3VybCddIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3stICdcdTAwM2N8aW1hZ2V8XHUwMDNlJyAtfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVsaWYgcGFydC5nZXQoJ3R5cGUnKSBpbiBbJ2F1ZGlvJywgJ2lucHV0X2F1ZGlvJ10gLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ey0gJ1x1MDAzY3xhdWRpb3xcdTAwM2UnIC19fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZWxpZiBwYXJ0LmdldCgndHlwZScpID09ICd2aWRlbycgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ey0gJ1x1MDAzY3x2aWRlb3xcdTAwM2UnIC19fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbHNlIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7LSBmb3JtYXRfdG9vbF9yZXNwb25zZV9ibG9jayhuc190bmFtZS5uYW1lLCB0b29sX2JvZHkpIC19fVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyUtIHNldCBuc190cl9vdXQuZmxhZyA9IHRydWUgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IG5zLnByZXZfbWVzc2FnZV90eXBlID0gJ3Rvb2xfcmVzcG9uc2UnIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cblxuICAgICAgICAgICAgeyUtIHNldCBjYXB0dXJlZF9jb250ZW50IC0lfVxuICAgICAgICAgICAgeyUtIGlmIG1lc3NhZ2UuZ2V0KCdjb250ZW50JykgaXMgc3RyaW5nIC0lfVxuICAgICAgICAgICAgICAgIHslLSBpZiByb2xlID09ICdtb2RlbCcgLSV9XG4gICAgICAgICAgICAgICAgICAgIHt7LSBzdHJpcF90aGlua2luZyhtZXNzYWdlWydjb250ZW50J10pIC19fVxuICAgICAgICAgICAgICAgIHslLSBlbHNlIC0lfVxuICAgICAgICAgICAgICAgICAgICB7ey0gbWVzc2FnZVsnY29udGVudCddIHwgdHJpbSAtfX1cbiAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICB7JS0gZWxpZiBtZXNzYWdlLmdldCgnY29udGVudCcpIGlzIHNlcXVlbmNlIC0lfVxuICAgICAgICAgICAgICAgIHslLSBmb3IgaXRlbSBpbiBtZXNzYWdlWydjb250ZW50J10gLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBpZiBpdGVtLmdldCgndHlwZScpID09ICd0ZXh0JyAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiByb2xlID09ICdtb2RlbCcgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3stIHN0cmlwX3RoaW5raW5nKGl0ZW1bJ3RleHQnXSkgLX19XG4gICAgICAgICAgICAgICAgICAgICAgICB7JS0gZWxzZSAtJX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ey0gaXRlbVsndGV4dCddIHwgdHJpbSAtfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGVsaWYgaXRlbS5nZXQoJ3R5cGUnKSBpbiBbJ2ltYWdlJywgJ2ltYWdlX3VybCddIC0lfVxuICAgICAgICAgICAgICAgICAgICAgICAge3stICdcdTAwM2N8aW1hZ2V8XHUwMDNlJyAtfX1cbiAgICAgICAgICAgICAgICAgICAgeyUtIGVsaWYgaXRlbS5nZXQoJ3R5cGUnKSBpbiBbJ2F1ZGlvJywgJ2lucHV0X2F1ZGlvJ10gLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7ey0gJ1x1MDAzY3xhdWRpb3xcdTAwM2UnIC19fVxuICAgICAgICAgICAgICAgICAgICB7JS0gZWxpZiBpdGVtLmdldCgndHlwZScpID09ICd2aWRlbycgLSV9XG4gICAgICAgICAgICAgICAgICAgICAgICB7ey0gJ1x1MDAzY3x2aWRlb3xcdTAwM2UnIC19fVxuICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX1cbiAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgIHslLSBlbmRzZXQgLSV9XG5cbiAgICAgICAgICAgIHt7LSBjYXB0dXJlZF9jb250ZW50IC19fVxuICAgICAgICAgICAgeyUtIHNldCBoYXNfY29udGVudCA9IGNhcHR1cmVkX2NvbnRlbnQgfCB0cmltIHwgbGVuZ3RoIFx1MDAzZSAwIC0lfVxuXG4gICAgICAgIHsjLSBGb3J3YXJkLXNjYW46IGZpbmQgbmV4dCBub24tdG9vbCBtZXNzYWdlIHJvbGUgZm9yIGNvbnRpbnVhdGlvbiBkZXRlY3Rpb24gLSN9XG4gICAgICAgIHslLSBzZXQgbmV4dF9udCA9IG5hbWVzcGFjZShyb2xlPU5vbmUsIGZvdW5kPWZhbHNlKSAtJX1cbiAgICAgICAgeyUtIGZvciBqIGluIHJhbmdlKGxvb3AuaW5kZXgwICsgMSwgbG9vcF9tZXNzYWdlcyB8IGxlbmd0aCkgLSV9XG4gICAgICAgICAgICB7JS0gaWYgbm90IG5leHRfbnQuZm91bmQgLSV9XG4gICAgICAgICAgICAgICAgeyUtIGlmIGxvb3BfbWVzc2FnZXNbal1bJ3JvbGUnXSAhPSAndG9vbCcgLSV9XG4gICAgICAgICAgICAgICAgICAgIHslLSBzZXQgbmV4dF9udC5yb2xlID0gbG9vcF9tZXNzYWdlc1tqXVsncm9sZSddIC0lfVxuICAgICAgICAgICAgICAgICAgICB7JS0gc2V0IG5leHRfbnQuZm91bmQgPSB0cnVlIC0lfVxuICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgICAgIHslLSBlbmRpZiAtJX1cbiAgICAgICAgeyUtIGVuZGZvciAtJX1cblxuICAgICAgICB7JS0gc2V0IGNvbnRpbnVlc19pbnRvX25leHQgPSAoXG4gICAgICAgICAgICByb2xlID09ICdtb2RlbCdcbiAgICAgICAgICAgIGFuZCBuZXh0X250LnJvbGUgPT0gJ2Fzc2lzdGFudCdcbiAgICAgICAgICAgIGFuZCAobm90IG1lc3NhZ2UuZ2V0KCd0b29sX2NhbGxzJykgb3IgbnNfdHJfb3V0LmZsYWcpXG4gICAgICAgICkgLSV9XG5cbiAgICAgICAgeyUtIGlmIG5zLnByZXZfbWVzc2FnZV90eXBlID09ICd0b29sX2NhbGwnIGFuZCBub3QgbnNfdHJfb3V0LmZsYWcgLSV9XG4gICAgICAgICAgICB7ey0gJ1x1MDAzY3x0b29sX3Jlc3BvbnNlXHUwMDNlJyAtfX1cbiAgICAgICAgeyUtIGVsaWYgY29udGludWVzX2ludG9fbmV4dCAtJX1cbiAgICAgICAgeyUtIGVsaWYgbm90IChuc190cl9vdXQuZmxhZyBhbmQgbm90IGhhc19jb250ZW50IGFuZCBub3QgbmV4dF9udC5mb3VuZCkgLSV9XG4gICAgICAgICAgICB7ey0gJ1x1MDAzY3R1cm58XHUwMDNlXFxuJyAtfX1cbiAgICAgICAgeyUtIGVuZGlmIC0lfVxuXG4gICAgeyMtIFRyYWNrIHByZXZpb3VzIG5vbi10b29sIHJvbGUgZm9yIG5leHQgaXRlcmF0aW9uIChhdm9pZHMgTyhuKSBiYWNrd2FyZCBzY2FuKSAtI31cbiAgICB7JS0gc2V0IG5zLnByZXZfbm9uX3Rvb2xfcm9sZSA9IG1lc3NhZ2VbJ3JvbGUnXSAtJX1cbiAgICB7JS0gZW5kaWYgLSV9XG57JS0gZW5kZm9yIC0lfVxuXG57JS0gaWYgYWRkX2dlbmVyYXRpb25fcHJvbXB0IC0lfVxuICAgIHslLSBpZiBucy5wcmV2X21lc3NhZ2VfdHlwZSAhPSAndG9vbF9yZXNwb25zZScgYW5kIG5zLnByZXZfbWVzc2FnZV90eXBlICE9ICd0b29sX2NhbGwnIC0lfVxuICAgICAgICB7ey0gJ1x1MDAzY3x0dXJuXHUwMDNlbW9kZWxcXG4nIC19fVxuICAgICAgICB7JS0gaWYgbm90IGVuYWJsZV90aGlua2luZyAtJX1cbiAgICAgICAgICAgIHt7LSAnXHUwMDNjfGNoYW5uZWxcdTAwM2V0aG91Z2h0XFxuXHUwMDNjY2hhbm5lbHxcdTAwM2UnIC19fVxuICAgICAgICB7JS0gZW5kaWYgLSV9XG4gICAgeyUtIGVsaWYgbnMucHJldl9tZXNzYWdlX3R5cGUgPT0gJ3Rvb2xfcmVzcG9uc2UnIGFuZCBlbmFibGVfdGhpbmtpbmcgLSV9XG4gICAgICAgIHt7LSAnXHUwMDNjfGNoYW5uZWxcdTAwM2V0aG91Z2h0XFxuJyAtfX1cbiAgICB7JS0gZW5kaWYgLSV9XG57JS0gZW5kaWYgLSV9XG4iLAogICAgInRvb2xfY2FsbGluZ19jb252ZW50aW9uIjogIkdlbW1hIDQgZnVuY3Rpb24tY2FsbGluZyBmb3JtYXQgKEpTT04tc2NoZW1hIGRlY2xhcmF0aW9ucyk7IE9wZW5BSSB0b29sX2NhbGxzIGFycmF5IG9uIHRoZSBzZXJ2aW5nIHN1cmZhY2UiCiAgfQp9Cg==",
  "signatures": [
    {
      "keyid": "b1fe8c2eae8162806ed6f0a0ae1c43d3443f99bcf617a798a033a16d8dc21950",
      "sig": "Jr1YTV2vrNMelMuGKPgMZ0R4j78yQOmctuagBQy+xBULi/zt0wXUz75hTF7jm2/nXQ1i25WYjJRBZL7aBWC6Aw=="
    }
  ]
}
