@happyvertical/smrt-core 0.40.67 → 0.40.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -277,7 +277,7 @@ function loadStaticManifestSyncWithNode() {
277
277
  globals.__smrtManifestStatic = fallbackManifest;
278
278
  return fallbackManifest;
279
279
  }
280
- const candidates = import.meta.url.endsWith(".ts") ? [new URL("data:application/json;base64,ewogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAidGltZXN0YW1wIjogMCwKICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAicGFja2FnZVZlcnNpb24iOiAiMC40MC42NyIsCiAgIm9iamVjdHMiOiB7CiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRDbGFzcyI6IHsKICAgICAgIm5hbWUiOiAic21ydGNsYXNzIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q2xhc3MiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydGNsYXNzZXMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvY2xhc3MudHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiZ2V0QWlVc2FnZVNuYXBzaG90IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0QWlVc2FnZVNuYXBzaG90IiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFpVXNhZ2VTbmFwc2hvdCB8IHVuZGVmaW5lZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZXNldEFpVXNhZ2UiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXNldEFpVXNhZ2UiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QWlVc2FnZSI6IHsKICAgICAgICAgICJuYW1lIjogImxpc3RBaVVzYWdlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpVXNhZ2VMaXN0T3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxTbXJ0QWlVc2FnZVJlY29yZFtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzdW1tYXJpemVBaVVzYWdlIjogewogICAgICAgICAgIm5hbWUiOiAic3VtbWFyaXplQWlVc2FnZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaVVzYWdlU3VtbWFyeU9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZywgQWlVc2FnZVN0YXRzPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZGVzdHJveSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc3Ryb3kiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb25FeHBvcnROYW1lIjogIlNtcnRDbGFzc0NvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jbGFzc2VzIiwKICAgICAgICAiZGRsIjogIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIFwic21ydF9jbGFzc2VzXCIgKFxuICBcImlkXCIgVVVJRCBQUklNQVJZIEtFWSBOT1QgTlVMTCxcbiAgXCJzbHVnXCIgVEVYVCBOT1QgTlVMTCxcbiAgXCJjb250ZXh0XCIgVEVYVCBOT1QgTlVMTCBERUZBVUxUICcnLFxuICBcImNyZWF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcCxcbiAgXCJ1cGRhdGVkX2F0XCIgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXBcbik7IiwKICAgICAgICAiY29sdW1ucyI6IHsKICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVVVJRCIsCiAgICAgICAgICAgICJwcmltYXJ5S2V5IjogdHJ1ZSwKICAgICAgICAgICAgInJlZmVyZW5jZUtpbmQiOiAiaWQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAic2x1ZyI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJjb250ZXh0IjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICIiCiAgICAgICAgICB9LAogICAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9LAogICAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5kZXhlcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX3NsdWdfY29udGV4dF9pZHgiLAogICAgICAgICAgICAiY29sdW1ucyI6IFsKICAgICAgICAgICAgICAic2x1ZyIsCiAgICAgICAgICAgICAgImNvbnRleHQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1bmlxdWUiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAidmVyc2lvbiI6ICIyMzRhNzJiMCIKICAgICAgfQogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENvbGxlY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRjb2xsZWN0aW9uIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRjb2xsZWN0aW9ucyIsCiAgICAgICJmaWxlUGF0aCI6ICJwYWNrYWdlcy9jb3JlL3NyYy9jb2xsZWN0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7fSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgImdldEl0ZW1DbGFzcyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEl0ZW1DbGFzcyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJTbXJ0Q29sbGVjdGlvbkl0ZW1DbGFzczxNb2RlbFR5cGU+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInZhbGlkYXRlIjogewogICAgICAgICAgIm5hbWUiOiAidmFsaWRhdGUiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiB0cnVlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImNyZWF0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImNyZWF0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJTbXJ0Q3JlYXRlSW5wdXQ8TW9kZWxUeXBlPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpbml0aWFsaXplIjogewogICAgICAgICAgIm5hbWUiOiAiaW5pdGlhbGl6ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZW5zdXJlU3RvcmFnZVJlYWR5IjogewogICAgICAgICAgIm5hbWUiOiAiZW5zdXJlU3RvcmFnZVJlYWR5IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmaW5kT25lIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZE9uZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRCeUlkIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZEJ5SWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlIHwgbnVsbD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZmluZEFsbCI6IHsKICAgICAgICAgICJuYW1lIjogImZpbmRBbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZVtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QnlJZHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJsaXN0QnlJZHMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaWRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmdbXSIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldCI6IHsKICAgICAgICAgICJuYW1lIjogImdldCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWx0ZXIiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyB8IFNtcnRXaGVyZUNsYXVzZTxNb2RlbFR5cGU+IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxpc3QiOiB7CiAgICAgICAgICAibmFtZSI6ICJsaXN0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIlNtcnRMaXN0T3B0aW9uczxNb2RlbFR5cGU+IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZVtdIHwgUmVjb3JkPHN0cmluZz5bXT4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0T3JVcHNlcnQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRPclVwc2VydCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImRlZmF1bHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldERpZmYiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXREaWZmIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImV4aXN0aW5nIiwKICAgICAgICAgICAgICAidHlwZSI6ICJTbXJ0T2JqZWN0IHwgUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZz4gfCBudWxsPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRGaWVsZHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRGaWVsZHMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFJlY29yZDxzdHJpbmcsIENvbGxlY3Rpb25GaWVsZERlZmluaXRpb24+PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRGaWVsZHNTeW5jIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RmllbGRzU3luYyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJSZWNvcmQ8c3RyaW5nLCBDb2xsZWN0aW9uRmllbGREZWZpbml0aW9uPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZW5lcmF0ZVNjaGVtYSI6IHsKICAgICAgICAgICJuYW1lIjogImdlbmVyYXRlU2NoZW1hIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdlbmVyYXRlVGFibGVOYW1lIjogewogICAgICAgICAgIm5hbWUiOiAiZ2VuZXJhdGVUYWJsZU5hbWUiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRlbGV0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlbGV0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJpZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxib29sZWFuPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJjb3VudCI6IHsKICAgICAgICAgICJuYW1lIjogImNvdW50IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldFN0aUNoaWxkTWV0YVR5cGUiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRTdGlDaGlsZE1ldGFUeXBlIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInN0cmluZyB8IG51bGwiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicXVlcnkiOiB7CiAgICAgICAgICAibmFtZSI6ICJxdWVyeSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJzcWwiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInBhcmFtcyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiYW55IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInJlbWVtYmVyIjogewogICAgICAgICAgIm5hbWUiOiAicmVtZW1iZXIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZWNhbGwiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZWNhbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZWNhbGxBbGwiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZWNhbGxBbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1hcDxzdHJpbmc+PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmb3JnZXQiOiB7CiAgICAgICAgICAibmFtZSI6ICJmb3JnZXQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmb3JnZXRTY29wZSI6IHsKICAgICAgICAgICJuYW1lIjogImZvcmdldFNjb3BlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8bnVtYmVyPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzZW1hbnRpY1NlYXJjaCI6IHsKICAgICAgICAgICJuYW1lIjogInNlbWFudGljU2VhcmNoIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInF1ZXJ5IiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRTaW1pbGFyIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZFNpbWlsYXIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAidHlwZSI6ICJNb2RlbFR5cGUgfCBzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRTaW1pbGFyVG9FbWJlZGRpbmciOiB7CiAgICAgICAgICAibmFtZSI6ICJmaW5kU2ltaWxhclRvRW1iZWRkaW5nIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImVtYmVkZGluZyIsCiAgICAgICAgICAgICAgInR5cGUiOiAibnVtYmVyW10iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdlbmVyYXRlTWlzc2luZ0VtYmVkZGluZ3MiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZW5lcmF0ZU1pc3NpbmdFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxvYmplY3Q+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0Q2xhc3MiLAogICAgICAiZXhwb3J0TmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0Q29sbGVjdGlvbkNvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jb2xsZWN0aW9ucyIsCiAgICAgICAgImRkbCI6ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBcInNtcnRfY29sbGVjdGlvbnNcIiAoXG4gIFwiaWRcIiBVVUlEIFBSSU1BUlkgS0VZIE5PVCBOVUxMLFxuICBcInNsdWdcIiBURVhUIE5PVCBOVUxMLFxuICBcImNvbnRleHRcIiBURVhUIE5PVCBOVUxMIERFRkFVTFQgJycsXG4gIFwiY3JlYXRlZF9hdFwiIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIGN1cnJlbnRfdGltZXN0YW1wLFxuICBcInVwZGF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcFxuKTsiLAogICAgICAgICJjb2x1bW5zIjogewogICAgICAgICAgImlkIjogewogICAgICAgICAgICAidHlwZSI6ICJVVUlEIiwKICAgICAgICAgICAgInByaW1hcnlLZXkiOiB0cnVlLAogICAgICAgICAgICAicmVmZXJlbmNlS2luZCI6ICJpZCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJzbHVnIjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgImNvbnRleHQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUsCiAgICAgICAgICAgICJkZWZhdWx0IjogIiIKICAgICAgICAgIH0sCiAgICAgICAgICAiY3JlYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0sCiAgICAgICAgICAidXBkYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbmRleGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X2NvbGxlY3Rpb25zX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jb2xsZWN0aW9uc19zbHVnX2NvbnRleHRfaWR4IiwKICAgICAgICAgICAgImNvbHVtbnMiOiBbCiAgICAgICAgICAgICAgInNsdWciLAogICAgICAgICAgICAgICJjb250ZXh0IgogICAgICAgICAgICBdLAogICAgICAgICAgICAidW5pcXVlIjogdHJ1ZQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInZlcnNpb24iOiAiMjk1YjBhODAiCiAgICAgIH0KICAgIH0sCiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRIaWVyYXJjaGljYWwiOiB7CiAgICAgICJuYW1lIjogInNtcnRoaWVyYXJjaGljYWwiLAogICAgICAiY2xhc3NOYW1lIjogIlNtcnRIaWVyYXJjaGljYWwiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydEhpZXJhcmNoaWNhbCIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRoaWVyYXJjaGljYWxzIiwKICAgICAgImZpbGVQYXRoIjogInBhY2thZ2VzL2NvcmUvc3JjL2hpZXJhcmNoaWNhbC50cyIsCiAgICAgICJwYWNrYWdlTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmUiLAogICAgICAiZmllbGRzIjogewogICAgICAgICJwYXJlbnRJZCI6IHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJtZXRob2RzIjogewogICAgICAgICJnZXRQYXJlbnQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRQYXJlbnQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldENoaWxkcmVuIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0Q2hpbGRyZW4iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldEFuY2VzdG9ycyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEFuY2VzdG9ycyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RGVzY2VuZGFudHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXREZXNjZW5kYW50cyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0SGllcmFyY2h5IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0SGllcmFyY2h5IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxIaWVyYXJjaHlWaWV3PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJtb3ZlVG8iOiB7CiAgICAgICAgICAibmFtZSI6ICJtb3ZlVG8iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibmV3UGFyZW50IiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmcgfCBudWxsIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4dGVuZHMiOiAiU21ydE9iamVjdCIsCiAgICAgICJleHBvcnROYW1lIjogIlNtcnRIaWVyYXJjaGljYWwiLAogICAgICAiY29sbGVjdGlvbkV4cG9ydE5hbWUiOiAiU21ydEhpZXJhcmNoaWNhbENvbGxlY3Rpb24iCiAgICB9LAogICAgIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0SnVuY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRqdW5jdGlvbiIsCiAgICAgICJjbGFzc05hbWUiOiAiU21ydEp1bmN0aW9uIiwKICAgICAgInF1YWxpZmllZE5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRKdW5jdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRqdW5jdGlvbnMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvanVuY3Rpb24udHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiYnlMZWZ0IjogewogICAgICAgICAgIm5hbWUiOiAiYnlMZWZ0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImxlZnRJZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0cyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiSnVuY3Rpb25GaWx0ZXJPcHRpb25zIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFRJdGVtW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImJ5UmlnaHQiOiB7CiAgICAgICAgICAibmFtZSI6ICJieVJpZ2h0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInJpZ2h0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkp1bmN0aW9uRmlsdGVyT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxUSXRlbVtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJhdHRhY2giOiB7CiAgICAgICAgICAibmFtZSI6ICJhdHRhY2giLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibGVmdElkIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJyaWdodElkIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJKdW5jdGlvbkF0dGFjaE9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8VEl0ZW0+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRldGFjaCI6IHsKICAgICAgICAgICJuYW1lIjogImRldGFjaCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJsZWZ0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInJpZ2h0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkp1bmN0aW9uRmlsdGVyT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzZXRMaW5rcyI6IHsKICAgICAgICAgICJuYW1lIjogInNldExpbmtzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImxlZnRJZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAicmlnaHRJZHMiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZ1tdIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0cyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiSnVuY3Rpb25BdHRhY2hPcHRpb25zIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPHZvaWQ+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJleHRlbmRzVHlwZUFyZyI6ICJUSXRlbSIsCiAgICAgICJleHBvcnROYW1lIjogIlNtcnRKdW5jdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0SnVuY3Rpb25Db2xsZWN0aW9uIgogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydE9iamVjdCI6IHsKICAgICAgIm5hbWUiOiAic21ydG9iamVjdCIsCiAgICAgICJjbGFzc05hbWUiOiAiU21ydE9iamVjdCIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0T2JqZWN0IiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydG9iamVjdHMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvb2JqZWN0LnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7CiAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAidHlwZSI6ICJkYXRldGltZSIsCiAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAidHlwZSI6ICJkYXRldGltZSIsCiAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZQogICAgICAgIH0KICAgICAgfSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgIm1hcmtBc1BlcnNpc3RlZCI6IHsKICAgICAgICAgICJuYW1lIjogIm1hcmtBc1BlcnNpc3RlZCIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVJbnNlcnRPblNhdmUiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXF1aXJlSW5zZXJ0T25TYXZlIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaW5pdGlhbGl6ZSI6IHsKICAgICAgICAgICJuYW1lIjogImluaXRpYWxpemUiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxvYWREYXRhRnJvbURiIjogewogICAgICAgICAgIm5hbWUiOiAibG9hZERhdGFGcm9tRGIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiZGF0YSIsCiAgICAgICAgICAgICAgInR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RmllbGRzIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RmllbGRzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInRvSlNPTiI6IHsKICAgICAgICAgICJuYW1lIjogInRvSlNPTiIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAidG9QbGFpbk9iamVjdCI6IHsKICAgICAgICAgICJuYW1lIjogInRvUGxhaW5PYmplY3QiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAidG9QdWJsaWNKU09OIjogewogICAgICAgICAgIm5hbWUiOiAidG9QdWJsaWNKU09OIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJQdWJsaWNKc29uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0SWQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRJZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRTbHVnIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0U2x1ZyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRTYXZlZElkIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0U2F2ZWRJZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpc1NhdmVkIjogewogICAgICAgICAgIm5hbWUiOiAiaXNTYXZlZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzYXZlIjogewogICAgICAgICAgIm5hbWUiOiAic2F2ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJjbGFzc2lmeUNvbnN0cmFpbnRFcnJvciI6IHsKICAgICAgICAgICJuYW1lIjogImNsYXNzaWZ5Q29uc3RyYWludEVycm9yIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJtZXNzYWdlIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICIndW5pcXVlJyB8ICdub3RfbnVsbCcgfCBudWxsIiwKICAgICAgICAgICJpc1N0YXRpYyI6IHRydWUsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZEZyb21JZCI6IHsKICAgICAgICAgICJuYW1lIjogImxvYWRGcm9tSWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZEZyb21TbHVnIjogewogICAgICAgICAgIm5hbWUiOiAibG9hZEZyb21TbHVnIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImlzIjogewogICAgICAgICAgIm5hbWUiOiAiaXMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiY3JpdGVyaWEiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpT3BlcmF0aW9uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRvIjogewogICAgICAgICAgIm5hbWUiOiAiZG8iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaW5zdHJ1Y3Rpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaU9wZXJhdGlvbk9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJkZXNjcmliZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc2NyaWJlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpT3BlcmF0aW9uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRlbGV0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlbGV0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaXNSZWxhdGVkTG9hZGVkIjogewogICAgICAgICAgIm5hbWUiOiAiaXNSZWxhdGVkTG9hZGVkIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImJvb2xlYW4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiX3NldExvYWRlZFJlbGF0aW9uc2hpcCI6IHsKICAgICAgICAgICJuYW1lIjogIl9zZXRMb2FkZWRSZWxhdGlvbnNoaXAiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImZpZWxkTmFtZSIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAidmFsdWUiLAogICAgICAgICAgICAgICJ0eXBlIjogImFueSIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZFJlbGF0ZWQiOiB7CiAgICAgICAgICAibmFtZSI6ICJsb2FkUmVsYXRlZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkxvYWRSZWxhdGVkT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxvYWRSZWxhdGVkTWFueSI6IHsKICAgICAgICAgICJuYW1lIjogImxvYWRSZWxhdGVkTWFueSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkxvYWRSZWxhdGVkT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnlbXT4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0UmVsYXRlZCI6IHsKICAgICAgICAgICJuYW1lIjogImdldFJlbGF0ZWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiZmllbGROYW1lIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJMb2FkUmVsYXRlZE9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8YW55PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRBdmFpbGFibGVUb29scyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEF2YWlsYWJsZVRvb2xzIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFJVG9vbFtdIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImV4ZWN1dGVUb29sQ2FsbCI6IHsKICAgICAgICAgICJuYW1lIjogImV4ZWN1dGVUb29sQ2FsbCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJ0b29sQ2FsbCIsCiAgICAgICAgICAgICAgInR5cGUiOiAiVG9vbENhbGwiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFRvb2xDYWxsUmVzdWx0PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZW1lbWJlciI6IHsKICAgICAgICAgICJuYW1lIjogInJlbWVtYmVyIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicmVjYWxsIjogewogICAgICAgICAgIm5hbWUiOiAicmVjYWxsIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicmVjYWxsQWxsIjogewogICAgICAgICAgIm5hbWUiOiAicmVjYWxsQWxsIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxNYXA8c3RyaW5nPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZm9yZ2V0IjogewogICAgICAgICAgIm5hbWUiOiAiZm9yZ2V0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZm9yZ2V0U2NvcGUiOiB7CiAgICAgICAgICAibmFtZSI6ICJmb3JnZXRTY29wZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPG51bWJlcj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2VuZXJhdGVFbWJlZGRpbmdzIjogewogICAgICAgICAgIm5hbWUiOiAiZ2VuZXJhdGVFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkdlbmVyYXRlRW1iZWRkaW5nc09wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RW1iZWRkaW5nIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RW1iZWRkaW5nIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImZpZWxkTmFtZSIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibW9kZWwiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxudW1iZXJbXSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImhhc1N0YWxlRW1iZWRkaW5ncyI6IHsKICAgICAgICAgICJuYW1lIjogImhhc1N0YWxlRW1iZWRkaW5ncyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8Ym9vbGVhbj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiY2xlYXJFbWJlZGRpbmdzIjogewogICAgICAgICAgIm5hbWUiOiAiY2xlYXJFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4dGVuZHMiOiAiU21ydENsYXNzIiwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydE9iamVjdCIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0T2JqZWN0Q29sbGVjdGlvbiIsCiAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgInRhYmxlTmFtZSI6ICJzbXJ0X29iamVjdHMiLAogICAgICAgICJkZGwiOiAiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgXCJzbXJ0X29iamVjdHNcIiAoXG4gIFwiaWRcIiBVVUlEIFBSSU1BUlkgS0VZIE5PVCBOVUxMLFxuICBcInNsdWdcIiBURVhUIE5PVCBOVUxMLFxuICBcImNvbnRleHRcIiBURVhUIE5PVCBOVUxMIERFRkFVTFQgJycsXG4gIFwiY3JlYXRlZF9hdFwiIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIGN1cnJlbnRfdGltZXN0YW1wLFxuICBcInVwZGF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcFxuKTsiLAogICAgICAgICJjb2x1bW5zIjogewogICAgICAgICAgImlkIjogewogICAgICAgICAgICAidHlwZSI6ICJVVUlEIiwKICAgICAgICAgICAgInByaW1hcnlLZXkiOiB0cnVlLAogICAgICAgICAgICAicmVmZXJlbmNlS2luZCI6ICJpZCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJzbHVnIjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgImNvbnRleHQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUsCiAgICAgICAgICAgICJkZWZhdWx0IjogIiIKICAgICAgICAgIH0sCiAgICAgICAgICAiY3JlYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0sCiAgICAgICAgICAidXBkYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbmRleGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X29iamVjdHNfaWRfaWR4IiwKICAgICAgICAgICAgImNvbHVtbnMiOiBbCiAgICAgICAgICAgICAgImlkIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X29iamVjdHNfc2x1Z19jb250ZXh0X2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJzbHVnIiwKICAgICAgICAgICAgICAiY29udGV4dCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInVuaXF1ZSI6IHRydWUKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJ2ZXJzaW9uIjogIjIwNGJmM2M0IgogICAgICB9CiAgICB9LAogICAgIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0UG9seW1vcnBoaWNBc3NvY2lhdGlvbiI6IHsKICAgICAgIm5hbWUiOiAic21ydHBvbHltb3JwaGljYXNzb2NpYXRpb24iLAogICAgICAiY2xhc3NOYW1lIjogIlNtcnRQb2x5bW9ycGhpY0Fzc29jaWF0aW9uIiwKICAgICAgInF1YWxpZmllZE5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRQb2x5bW9ycGhpY0Fzc29jaWF0aW9uIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydHBvbHltb3JwaGljYXNzb2NpYXRpb25zIiwKICAgICAgImZpbGVQYXRoIjogInBhY2thZ2VzL2NvcmUvc3JjL3BvbHltb3JwaGljLWFzc29jaWF0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7CiAgICAgICAgIm1ldGFUeXBlIjogewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgIl9tZXRhIjogewogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAibWV0YUlkIjogewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgIl9tZXRhIjogewogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicm9sZSI6IHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwKICAgICAgICAgICJfbWV0YSI6IHsKICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInNvcnRPcmRlciI6IHsKICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsCiAgICAgICAgICAiZGVmYXVsdCI6IDAKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJtZXRob2RzIjogewogICAgICAgICJoeWRyYXRlIjogewogICAgICAgICAgIm5hbWUiOiAiaHlkcmF0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8VCB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0T2JqZWN0IiwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydFBvbHltb3JwaGljQXNzb2NpYXRpb24iLAogICAgICAiY29sbGVjdGlvbkV4cG9ydE5hbWUiOiAiU21ydFBvbHltb3JwaGljQXNzb2NpYXRpb25Db2xsZWN0aW9uIiwKICAgICAgInZhbGlkYXRpb25SdWxlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZmllbGQiOiAibWV0YVR5cGUiLAogICAgICAgICAgInJ1bGUiOiAicmVxdWlyZWQiLAogICAgICAgICAgImZpZWxkVHlwZSI6ICJ0ZXh0IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImZpZWxkIjogIm1ldGFJZCIsCiAgICAgICAgICAicnVsZSI6ICJyZXF1aXJlZCIsCiAgICAgICAgICAiZmllbGRUeXBlIjogInRleHQiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZmllbGQiOiAicm9sZSIsCiAgICAgICAgICAicnVsZSI6ICJyZXF1aXJlZCIsCiAgICAgICAgICAiZmllbGRUeXBlIjogInRleHQiCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgfSwKICAibW9kdWxlVHlwZSI6ICJzbXJ0Igp9", "" + import.meta.url), new URL("data:application/json;base64,ewogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAidGltZXN0YW1wIjogMCwKICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAicGFja2FnZVZlcnNpb24iOiAiMC40MC42NyIsCiAgIm9iamVjdHMiOiB7CiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRDbGFzcyI6IHsKICAgICAgIm5hbWUiOiAic21ydGNsYXNzIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q2xhc3MiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydGNsYXNzZXMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvY2xhc3MudHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiZ2V0QWlVc2FnZVNuYXBzaG90IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0QWlVc2FnZVNuYXBzaG90IiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFpVXNhZ2VTbmFwc2hvdCB8IHVuZGVmaW5lZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZXNldEFpVXNhZ2UiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXNldEFpVXNhZ2UiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QWlVc2FnZSI6IHsKICAgICAgICAgICJuYW1lIjogImxpc3RBaVVzYWdlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpVXNhZ2VMaXN0T3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxTbXJ0QWlVc2FnZVJlY29yZFtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzdW1tYXJpemVBaVVzYWdlIjogewogICAgICAgICAgIm5hbWUiOiAic3VtbWFyaXplQWlVc2FnZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaVVzYWdlU3VtbWFyeU9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZywgQWlVc2FnZVN0YXRzPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZGVzdHJveSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc3Ryb3kiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb25FeHBvcnROYW1lIjogIlNtcnRDbGFzc0NvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jbGFzc2VzIiwKICAgICAgICAiZGRsIjogIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIFwic21ydF9jbGFzc2VzXCIgKFxuICBcImlkXCIgVVVJRCBQUklNQVJZIEtFWSBOT1QgTlVMTCxcbiAgXCJzbHVnXCIgVEVYVCBOT1QgTlVMTCxcbiAgXCJjb250ZXh0XCIgVEVYVCBOT1QgTlVMTCBERUZBVUxUICcnLFxuICBcImNyZWF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcCxcbiAgXCJ1cGRhdGVkX2F0XCIgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXBcbik7IiwKICAgICAgICAiY29sdW1ucyI6IHsKICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVVVJRCIsCiAgICAgICAgICAgICJwcmltYXJ5S2V5IjogdHJ1ZSwKICAgICAgICAgICAgInJlZmVyZW5jZUtpbmQiOiAiaWQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAic2x1ZyI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJjb250ZXh0IjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICIiCiAgICAgICAgICB9LAogICAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9LAogICAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5kZXhlcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX3NsdWdfY29udGV4dF9pZHgiLAogICAgICAgICAgICAiY29sdW1ucyI6IFsKICAgICAgICAgICAgICAic2x1ZyIsCiAgICAgICAgICAgICAgImNvbnRleHQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1bmlxdWUiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAidmVyc2lvbiI6ICIyMzRhNzJiMCIKICAgICAgfQogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENvbGxlY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRjb2xsZWN0aW9uIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRjb2xsZWN0aW9ucyIsCiAgICAgICJmaWxlUGF0aCI6ICJwYWNrYWdlcy9jb3JlL3NyYy9jb2xsZWN0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7fSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgImdldEl0ZW1DbGFzcyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEl0ZW1DbGFzcyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJTbXJ0Q29sbGVjdGlvbkl0ZW1DbGFzczxNb2RlbFR5cGU+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInZhbGlkYXRlIjogewogICAgICAgICAgIm5hbWUiOiAidmFsaWRhdGUiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiB0cnVlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImNyZWF0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImNyZWF0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJTbXJ0Q3JlYXRlSW5wdXQ8TW9kZWxUeXBlPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpbml0aWFsaXplIjogewogICAgICAgICAgIm5hbWUiOiAiaW5pdGlhbGl6ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZW5zdXJlU3RvcmFnZVJlYWR5IjogewogICAgICAgICAgIm5hbWUiOiAiZW5zdXJlU3RvcmFnZVJlYWR5IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmaW5kT25lIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZE9uZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRCeUlkIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZEJ5SWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlIHwgbnVsbD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZmluZEFsbCI6IHsKICAgICAgICAgICJuYW1lIjogImZpbmRBbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZVtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QnlJZHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJsaXN0QnlJZHMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaWRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmdbXSIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldCI6IHsKICAgICAgICAgICJuYW1lIjogImdldCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWx0ZXIiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyB8IFNtcnRXaGVyZUNsYXVzZTxNb2RlbFR5cGU+IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxpc3QiOiB7CiAgICAgICAgICAibmFtZSI6ICJsaXN0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIlNtcnRMaXN0T3B0aW9uczxNb2RlbFR5cGU+IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZVtdIHwgUmVjb3JkPHN0cmluZz5bXT4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0T3JVcHNlcnQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRPclVwc2VydCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImRlZmF1bHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldERpZmYiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXREaWZmIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImV4aXN0aW5nIiwKICAgICAgICAgICAgICAidHlwZSI6ICJTbXJ0T2JqZWN0IHwgUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZz4gfCBudWxsPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRGaWVsZHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRGaWVsZHMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFJlY29yZDxzdHJpbmcsIENvbGxlY3Rpb25GaWVsZERlZmluaXRpb24+PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRGaWVsZHNTeW5jIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RmllbGRzU3luYyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJSZWNvcmQ8c3RyaW5nLCBDb2xsZWN0aW9uRmllbGREZWZpbml0aW9uPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZW5lcmF0ZVNjaGVtYSI6IHsKICAgICAgICAgICJuYW1lIjogImdlbmVyYXRlU2NoZW1hIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdlbmVyYXRlVGFibGVOYW1lIjogewogICAgICAgICAgIm5hbWUiOiAiZ2VuZXJhdGVUYWJsZU5hbWUiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRlbGV0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlbGV0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJpZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxib29sZWFuPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJjb3VudCI6IHsKICAgICAgICAgICJuYW1lIjogImNvdW50IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldFN0aUNoaWxkTWV0YVR5cGUiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRTdGlDaGlsZE1ldGFUeXBlIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInN0cmluZyB8IG51bGwiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicXVlcnkiOiB7CiAgICAgICAgICAibmFtZSI6ICJxdWVyeSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJzcWwiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInBhcmFtcyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiYW55IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInJlbWVtYmVyIjogewogICAgICAgICAgIm5hbWUiOiAicmVtZW1iZXIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZWNhbGwiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZWNhbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZWNhbGxBbGwiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZWNhbGxBbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1hcDxzdHJpbmc+PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmb3JnZXQiOiB7CiAgICAgICAgICAibmFtZSI6ICJmb3JnZXQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmb3JnZXRTY29wZSI6IHsKICAgICAgICAgICJuYW1lIjogImZvcmdldFNjb3BlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8bnVtYmVyPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzZW1hbnRpY1NlYXJjaCI6IHsKICAgICAgICAgICJuYW1lIjogInNlbWFudGljU2VhcmNoIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInF1ZXJ5IiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRTaW1pbGFyIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZFNpbWlsYXIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAidHlwZSI6ICJNb2RlbFR5cGUgfCBzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRTaW1pbGFyVG9FbWJlZGRpbmciOiB7CiAgICAgICAgICAibmFtZSI6ICJmaW5kU2ltaWxhclRvRW1iZWRkaW5nIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImVtYmVkZGluZyIsCiAgICAgICAgICAgICAgInR5cGUiOiAibnVtYmVyW10iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdlbmVyYXRlTWlzc2luZ0VtYmVkZGluZ3MiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZW5lcmF0ZU1pc3NpbmdFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxvYmplY3Q+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0Q2xhc3MiLAogICAgICAiZXhwb3J0TmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0Q29sbGVjdGlvbkNvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jb2xsZWN0aW9ucyIsCiAgICAgICAgImRkbCI6ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBcInNtcnRfY29sbGVjdGlvbnNcIiAoXG4gIFwiaWRcIiBVVUlEIFBSSU1BUlkgS0VZIE5PVCBOVUxMLFxuICBcInNsdWdcIiBURVhUIE5PVCBOVUxMLFxuICBcImNvbnRleHRcIiBURVhUIE5PVCBOVUxMIERFRkFVTFQgJycsXG4gIFwiY3JlYXRlZF9hdFwiIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIGN1cnJlbnRfdGltZXN0YW1wLFxuICBcInVwZGF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcFxuKTsiLAogICAgICAgICJjb2x1bW5zIjogewogICAgICAgICAgImlkIjogewogICAgICAgICAgICAidHlwZSI6ICJVVUlEIiwKICAgICAgICAgICAgInByaW1hcnlLZXkiOiB0cnVlLAogICAgICAgICAgICAicmVmZXJlbmNlS2luZCI6ICJpZCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJzbHVnIjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgImNvbnRleHQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUsCiAgICAgICAgICAgICJkZWZhdWx0IjogIiIKICAgICAgICAgIH0sCiAgICAgICAgICAiY3JlYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0sCiAgICAgICAgICAidXBkYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbmRleGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X2NvbGxlY3Rpb25zX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jb2xsZWN0aW9uc19zbHVnX2NvbnRleHRfaWR4IiwKICAgICAgICAgICAgImNvbHVtbnMiOiBbCiAgICAgICAgICAgICAgInNsdWciLAogICAgICAgICAgICAgICJjb250ZXh0IgogICAgICAgICAgICBdLAogICAgICAgICAgICAidW5pcXVlIjogdHJ1ZQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInZlcnNpb24iOiAiMjk1YjBhODAiCiAgICAgIH0KICAgIH0sCiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRIaWVyYXJjaGljYWwiOiB7CiAgICAgICJuYW1lIjogInNtcnRoaWVyYXJjaGljYWwiLAogICAgICAiY2xhc3NOYW1lIjogIlNtcnRIaWVyYXJjaGljYWwiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydEhpZXJhcmNoaWNhbCIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRoaWVyYXJjaGljYWxzIiwKICAgICAgImZpbGVQYXRoIjogInBhY2thZ2VzL2NvcmUvc3JjL2hpZXJhcmNoaWNhbC50cyIsCiAgICAgICJwYWNrYWdlTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmUiLAogICAgICAiZmllbGRzIjogewogICAgICAgICJwYXJlbnRJZCI6IHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJtZXRob2RzIjogewogICAgICAgICJnZXRQYXJlbnQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRQYXJlbnQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldENoaWxkcmVuIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0Q2hpbGRyZW4iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldEFuY2VzdG9ycyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEFuY2VzdG9ycyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RGVzY2VuZGFudHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXREZXNjZW5kYW50cyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0SGllcmFyY2h5IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0SGllcmFyY2h5IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxIaWVyYXJjaHlWaWV3PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJtb3ZlVG8iOiB7CiAgICAgICAgICAibmFtZSI6ICJtb3ZlVG8iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibmV3UGFyZW50IiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmcgfCBudWxsIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4dGVuZHMiOiAiU21ydE9iamVjdCIsCiAgICAgICJleHBvcnROYW1lIjogIlNtcnRIaWVyYXJjaGljYWwiLAogICAgICAiY29sbGVjdGlvbkV4cG9ydE5hbWUiOiAiU21ydEhpZXJhcmNoaWNhbENvbGxlY3Rpb24iCiAgICB9LAogICAgIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0SnVuY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRqdW5jdGlvbiIsCiAgICAgICJjbGFzc05hbWUiOiAiU21ydEp1bmN0aW9uIiwKICAgICAgInF1YWxpZmllZE5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRKdW5jdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRqdW5jdGlvbnMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvanVuY3Rpb24udHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiYnlMZWZ0IjogewogICAgICAgICAgIm5hbWUiOiAiYnlMZWZ0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImxlZnRJZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0cyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiSnVuY3Rpb25GaWx0ZXJPcHRpb25zIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFRJdGVtW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImJ5UmlnaHQiOiB7CiAgICAgICAgICAibmFtZSI6ICJieVJpZ2h0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInJpZ2h0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkp1bmN0aW9uRmlsdGVyT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxUSXRlbVtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJhdHRhY2giOiB7CiAgICAgICAgICAibmFtZSI6ICJhdHRhY2giLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibGVmdElkIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJyaWdodElkIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJKdW5jdGlvbkF0dGFjaE9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8VEl0ZW0+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRldGFjaCI6IHsKICAgICAgICAgICJuYW1lIjogImRldGFjaCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJsZWZ0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInJpZ2h0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkp1bmN0aW9uRmlsdGVyT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzZXRMaW5rcyI6IHsKICAgICAgICAgICJuYW1lIjogInNldExpbmtzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImxlZnRJZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAicmlnaHRJZHMiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZ1tdIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0cyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiSnVuY3Rpb25BdHRhY2hPcHRpb25zIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPHZvaWQ+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJleHRlbmRzVHlwZUFyZyI6ICJUSXRlbSIsCiAgICAgICJleHBvcnROYW1lIjogIlNtcnRKdW5jdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0SnVuY3Rpb25Db2xsZWN0aW9uIgogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydE9iamVjdCI6IHsKICAgICAgIm5hbWUiOiAic21ydG9iamVjdCIsCiAgICAgICJjbGFzc05hbWUiOiAiU21ydE9iamVjdCIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0T2JqZWN0IiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydG9iamVjdHMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvb2JqZWN0LnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7CiAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAidHlwZSI6ICJkYXRldGltZSIsCiAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAidHlwZSI6ICJkYXRldGltZSIsCiAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZQogICAgICAgIH0KICAgICAgfSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgIm1hcmtBc1BlcnNpc3RlZCI6IHsKICAgICAgICAgICJuYW1lIjogIm1hcmtBc1BlcnNpc3RlZCIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVJbnNlcnRPblNhdmUiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXF1aXJlSW5zZXJ0T25TYXZlIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaW5pdGlhbGl6ZSI6IHsKICAgICAgICAgICJuYW1lIjogImluaXRpYWxpemUiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxvYWREYXRhRnJvbURiIjogewogICAgICAgICAgIm5hbWUiOiAibG9hZERhdGFGcm9tRGIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiZGF0YSIsCiAgICAgICAgICAgICAgInR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RmllbGRzIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RmllbGRzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInRvSlNPTiI6IHsKICAgICAgICAgICJuYW1lIjogInRvSlNPTiIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAidG9QbGFpbk9iamVjdCI6IHsKICAgICAgICAgICJuYW1lIjogInRvUGxhaW5PYmplY3QiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAidG9QdWJsaWNKU09OIjogewogICAgICAgICAgIm5hbWUiOiAidG9QdWJsaWNKU09OIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJQdWJsaWNKc29uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0SWQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRJZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRTbHVnIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0U2x1ZyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRTYXZlZElkIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0U2F2ZWRJZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpc1NhdmVkIjogewogICAgICAgICAgIm5hbWUiOiAiaXNTYXZlZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzYXZlIjogewogICAgICAgICAgIm5hbWUiOiAic2F2ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJjbGFzc2lmeUNvbnN0cmFpbnRFcnJvciI6IHsKICAgICAgICAgICJuYW1lIjogImNsYXNzaWZ5Q29uc3RyYWludEVycm9yIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJtZXNzYWdlIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICIndW5pcXVlJyB8ICdub3RfbnVsbCcgfCBudWxsIiwKICAgICAgICAgICJpc1N0YXRpYyI6IHRydWUsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZEZyb21JZCI6IHsKICAgICAgICAgICJuYW1lIjogImxvYWRGcm9tSWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZEZyb21TbHVnIjogewogICAgICAgICAgIm5hbWUiOiAibG9hZEZyb21TbHVnIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImlzIjogewogICAgICAgICAgIm5hbWUiOiAiaXMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiY3JpdGVyaWEiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpT3BlcmF0aW9uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRvIjogewogICAgICAgICAgIm5hbWUiOiAiZG8iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaW5zdHJ1Y3Rpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaU9wZXJhdGlvbk9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJkZXNjcmliZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc2NyaWJlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpT3BlcmF0aW9uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRlbGV0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlbGV0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaXNSZWxhdGVkTG9hZGVkIjogewogICAgICAgICAgIm5hbWUiOiAiaXNSZWxhdGVkTG9hZGVkIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImJvb2xlYW4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiX3NldExvYWRlZFJlbGF0aW9uc2hpcCI6IHsKICAgICAgICAgICJuYW1lIjogIl9zZXRMb2FkZWRSZWxhdGlvbnNoaXAiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImZpZWxkTmFtZSIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAidmFsdWUiLAogICAgICAgICAgICAgICJ0eXBlIjogImFueSIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZFJlbGF0ZWQiOiB7CiAgICAgICAgICAibmFtZSI6ICJsb2FkUmVsYXRlZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkxvYWRSZWxhdGVkT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxvYWRSZWxhdGVkTWFueSI6IHsKICAgICAgICAgICJuYW1lIjogImxvYWRSZWxhdGVkTWFueSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkxvYWRSZWxhdGVkT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnlbXT4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0UmVsYXRlZCI6IHsKICAgICAgICAgICJuYW1lIjogImdldFJlbGF0ZWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiZmllbGROYW1lIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJMb2FkUmVsYXRlZE9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8YW55PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRBdmFpbGFibGVUb29scyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEF2YWlsYWJsZVRvb2xzIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFJVG9vbFtdIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImV4ZWN1dGVUb29sQ2FsbCI6IHsKICAgICAgICAgICJuYW1lIjogImV4ZWN1dGVUb29sQ2FsbCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJ0b29sQ2FsbCIsCiAgICAgICAgICAgICAgInR5cGUiOiAiVG9vbENhbGwiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFRvb2xDYWxsUmVzdWx0PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZW1lbWJlciI6IHsKICAgICAgICAgICJuYW1lIjogInJlbWVtYmVyIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicmVjYWxsIjogewogICAgICAgICAgIm5hbWUiOiAicmVjYWxsIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicmVjYWxsQWxsIjogewogICAgICAgICAgIm5hbWUiOiAicmVjYWxsQWxsIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxNYXA8c3RyaW5nPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZm9yZ2V0IjogewogICAgICAgICAgIm5hbWUiOiAiZm9yZ2V0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZm9yZ2V0U2NvcGUiOiB7CiAgICAgICAgICAibmFtZSI6ICJmb3JnZXRTY29wZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPG51bWJlcj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2VuZXJhdGVFbWJlZGRpbmdzIjogewogICAgICAgICAgIm5hbWUiOiAiZ2VuZXJhdGVFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkdlbmVyYXRlRW1iZWRkaW5nc09wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RW1iZWRkaW5nIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RW1iZWRkaW5nIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImZpZWxkTmFtZSIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibW9kZWwiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxudW1iZXJbXSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImhhc1N0YWxlRW1iZWRkaW5ncyI6IHsKICAgICAgICAgICJuYW1lIjogImhhc1N0YWxlRW1iZWRkaW5ncyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8Ym9vbGVhbj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiY2xlYXJFbWJlZGRpbmdzIjogewogICAgICAgICAgIm5hbWUiOiAiY2xlYXJFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4dGVuZHMiOiAiU21ydENsYXNzIiwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydE9iamVjdCIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0T2JqZWN0Q29sbGVjdGlvbiIsCiAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgInRhYmxlTmFtZSI6ICJzbXJ0X29iamVjdHMiLAogICAgICAgICJkZGwiOiAiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgXCJzbXJ0X29iamVjdHNcIiAoXG4gIFwiaWRcIiBVVUlEIFBSSU1BUlkgS0VZIE5PVCBOVUxMLFxuICBcInNsdWdcIiBURVhUIE5PVCBOVUxMLFxuICBcImNvbnRleHRcIiBURVhUIE5PVCBOVUxMIERFRkFVTFQgJycsXG4gIFwiY3JlYXRlZF9hdFwiIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIGN1cnJlbnRfdGltZXN0YW1wLFxuICBcInVwZGF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcFxuKTsiLAogICAgICAgICJjb2x1bW5zIjogewogICAgICAgICAgImlkIjogewogICAgICAgICAgICAidHlwZSI6ICJVVUlEIiwKICAgICAgICAgICAgInByaW1hcnlLZXkiOiB0cnVlLAogICAgICAgICAgICAicmVmZXJlbmNlS2luZCI6ICJpZCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJzbHVnIjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgImNvbnRleHQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUsCiAgICAgICAgICAgICJkZWZhdWx0IjogIiIKICAgICAgICAgIH0sCiAgICAgICAgICAiY3JlYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0sCiAgICAgICAgICAidXBkYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbmRleGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X29iamVjdHNfaWRfaWR4IiwKICAgICAgICAgICAgImNvbHVtbnMiOiBbCiAgICAgICAgICAgICAgImlkIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X29iamVjdHNfc2x1Z19jb250ZXh0X2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJzbHVnIiwKICAgICAgICAgICAgICAiY29udGV4dCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInVuaXF1ZSI6IHRydWUKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJ2ZXJzaW9uIjogIjIwNGJmM2M0IgogICAgICB9CiAgICB9LAogICAgIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0UG9seW1vcnBoaWNBc3NvY2lhdGlvbiI6IHsKICAgICAgIm5hbWUiOiAic21ydHBvbHltb3JwaGljYXNzb2NpYXRpb24iLAogICAgICAiY2xhc3NOYW1lIjogIlNtcnRQb2x5bW9ycGhpY0Fzc29jaWF0aW9uIiwKICAgICAgInF1YWxpZmllZE5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRQb2x5bW9ycGhpY0Fzc29jaWF0aW9uIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydHBvbHltb3JwaGljYXNzb2NpYXRpb25zIiwKICAgICAgImZpbGVQYXRoIjogInBhY2thZ2VzL2NvcmUvc3JjL3BvbHltb3JwaGljLWFzc29jaWF0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7CiAgICAgICAgIm1ldGFUeXBlIjogewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgIl9tZXRhIjogewogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAibWV0YUlkIjogewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgIl9tZXRhIjogewogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicm9sZSI6IHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwKICAgICAgICAgICJfbWV0YSI6IHsKICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInNvcnRPcmRlciI6IHsKICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsCiAgICAgICAgICAiZGVmYXVsdCI6IDAKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJtZXRob2RzIjogewogICAgICAgICJoeWRyYXRlIjogewogICAgICAgICAgIm5hbWUiOiAiaHlkcmF0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8VCB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0T2JqZWN0IiwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydFBvbHltb3JwaGljQXNzb2NpYXRpb24iLAogICAgICAiY29sbGVjdGlvbkV4cG9ydE5hbWUiOiAiU21ydFBvbHltb3JwaGljQXNzb2NpYXRpb25Db2xsZWN0aW9uIiwKICAgICAgInZhbGlkYXRpb25SdWxlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZmllbGQiOiAibWV0YVR5cGUiLAogICAgICAgICAgInJ1bGUiOiAicmVxdWlyZWQiLAogICAgICAgICAgImZpZWxkVHlwZSI6ICJ0ZXh0IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImZpZWxkIjogIm1ldGFJZCIsCiAgICAgICAgICAicnVsZSI6ICJyZXF1aXJlZCIsCiAgICAgICAgICAiZmllbGRUeXBlIjogInRleHQiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZmllbGQiOiAicm9sZSIsCiAgICAgICAgICAicnVsZSI6ICJyZXF1aXJlZCIsCiAgICAgICAgICAiZmllbGRUeXBlIjogInRleHQiCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgfSwKICAibW9kdWxlVHlwZSI6ICJzbXJ0Igp9", "" + import.meta.url)] : [new URL("../manifest.json", "" + import.meta.url)];
280
+ const candidates = import.meta.url.endsWith(".ts") ? [new URL("data:application/json;base64,ewogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAidGltZXN0YW1wIjogMCwKICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAicGFja2FnZVZlcnNpb24iOiAiMC40MC42OCIsCiAgIm9iamVjdHMiOiB7CiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRDbGFzcyI6IHsKICAgICAgIm5hbWUiOiAic21ydGNsYXNzIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q2xhc3MiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydGNsYXNzZXMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvY2xhc3MudHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiZ2V0QWlVc2FnZVNuYXBzaG90IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0QWlVc2FnZVNuYXBzaG90IiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFpVXNhZ2VTbmFwc2hvdCB8IHVuZGVmaW5lZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZXNldEFpVXNhZ2UiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXNldEFpVXNhZ2UiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QWlVc2FnZSI6IHsKICAgICAgICAgICJuYW1lIjogImxpc3RBaVVzYWdlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpVXNhZ2VMaXN0T3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxTbXJ0QWlVc2FnZVJlY29yZFtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzdW1tYXJpemVBaVVzYWdlIjogewogICAgICAgICAgIm5hbWUiOiAic3VtbWFyaXplQWlVc2FnZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaVVzYWdlU3VtbWFyeU9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZywgQWlVc2FnZVN0YXRzPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZGVzdHJveSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc3Ryb3kiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb25FeHBvcnROYW1lIjogIlNtcnRDbGFzc0NvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jbGFzc2VzIiwKICAgICAgICAiZGRsIjogIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIFwic21ydF9jbGFzc2VzXCIgKFxuICBcImlkXCIgVVVJRCBQUklNQVJZIEtFWSBOT1QgTlVMTCxcbiAgXCJzbHVnXCIgVEVYVCBOT1QgTlVMTCxcbiAgXCJjb250ZXh0XCIgVEVYVCBOT1QgTlVMTCBERUZBVUxUICcnLFxuICBcImNyZWF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcCxcbiAgXCJ1cGRhdGVkX2F0XCIgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXBcbik7IiwKICAgICAgICAiY29sdW1ucyI6IHsKICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVVVJRCIsCiAgICAgICAgICAgICJwcmltYXJ5S2V5IjogdHJ1ZSwKICAgICAgICAgICAgInJlZmVyZW5jZUtpbmQiOiAiaWQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAic2x1ZyI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJjb250ZXh0IjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICIiCiAgICAgICAgICB9LAogICAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9LAogICAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5kZXhlcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX3NsdWdfY29udGV4dF9pZHgiLAogICAgICAgICAgICAiY29sdW1ucyI6IFsKICAgICAgICAgICAgICAic2x1ZyIsCiAgICAgICAgICAgICAgImNvbnRleHQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1bmlxdWUiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAidmVyc2lvbiI6ICIyMzRhNzJiMCIKICAgICAgfQogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENvbGxlY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRjb2xsZWN0aW9uIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRjb2xsZWN0aW9ucyIsCiAgICAgICJmaWxlUGF0aCI6ICJwYWNrYWdlcy9jb3JlL3NyYy9jb2xsZWN0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7fSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgImdldEl0ZW1DbGFzcyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEl0ZW1DbGFzcyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJTbXJ0Q29sbGVjdGlvbkl0ZW1DbGFzczxNb2RlbFR5cGU+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInZhbGlkYXRlIjogewogICAgICAgICAgIm5hbWUiOiAidmFsaWRhdGUiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiB0cnVlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImNyZWF0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImNyZWF0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJTbXJ0Q3JlYXRlSW5wdXQ8TW9kZWxUeXBlPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpbml0aWFsaXplIjogewogICAgICAgICAgIm5hbWUiOiAiaW5pdGlhbGl6ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZW5zdXJlU3RvcmFnZVJlYWR5IjogewogICAgICAgICAgIm5hbWUiOiAiZW5zdXJlU3RvcmFnZVJlYWR5IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmaW5kT25lIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZE9uZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRCeUlkIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZEJ5SWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlIHwgbnVsbD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZmluZEFsbCI6IHsKICAgICAgICAgICJuYW1lIjogImZpbmRBbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZVtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QnlJZHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJsaXN0QnlJZHMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaWRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmdbXSIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldCI6IHsKICAgICAgICAgICJuYW1lIjogImdldCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWx0ZXIiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyB8IFNtcnRXaGVyZUNsYXVzZTxNb2RlbFR5cGU+IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxpc3QiOiB7CiAgICAgICAgICAibmFtZSI6ICJsaXN0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIlNtcnRMaXN0T3B0aW9uczxNb2RlbFR5cGU+IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZVtdIHwgUmVjb3JkPHN0cmluZz5bXT4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0T3JVcHNlcnQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRPclVwc2VydCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImRlZmF1bHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldERpZmYiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXREaWZmIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImV4aXN0aW5nIiwKICAgICAgICAgICAgICAidHlwZSI6ICJTbXJ0T2JqZWN0IHwgUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZz4gfCBudWxsPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRGaWVsZHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRGaWVsZHMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFJlY29yZDxzdHJpbmcsIENvbGxlY3Rpb25GaWVsZERlZmluaXRpb24+PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRGaWVsZHNTeW5jIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RmllbGRzU3luYyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJSZWNvcmQ8c3RyaW5nLCBDb2xsZWN0aW9uRmllbGREZWZpbml0aW9uPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZW5lcmF0ZVNjaGVtYSI6IHsKICAgICAgICAgICJuYW1lIjogImdlbmVyYXRlU2NoZW1hIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdlbmVyYXRlVGFibGVOYW1lIjogewogICAgICAgICAgIm5hbWUiOiAiZ2VuZXJhdGVUYWJsZU5hbWUiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRlbGV0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlbGV0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJpZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxib29sZWFuPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJjb3VudCI6IHsKICAgICAgICAgICJuYW1lIjogImNvdW50IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldFN0aUNoaWxkTWV0YVR5cGUiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRTdGlDaGlsZE1ldGFUeXBlIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInN0cmluZyB8IG51bGwiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicXVlcnkiOiB7CiAgICAgICAgICAibmFtZSI6ICJxdWVyeSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJzcWwiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInBhcmFtcyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiYW55IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInJlbWVtYmVyIjogewogICAgICAgICAgIm5hbWUiOiAicmVtZW1iZXIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZWNhbGwiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZWNhbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZWNhbGxBbGwiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZWNhbGxBbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1hcDxzdHJpbmc+PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmb3JnZXQiOiB7CiAgICAgICAgICAibmFtZSI6ICJmb3JnZXQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmb3JnZXRTY29wZSI6IHsKICAgICAgICAgICJuYW1lIjogImZvcmdldFNjb3BlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8bnVtYmVyPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzZW1hbnRpY1NlYXJjaCI6IHsKICAgICAgICAgICJuYW1lIjogInNlbWFudGljU2VhcmNoIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInF1ZXJ5IiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRTaW1pbGFyIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZFNpbWlsYXIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAidHlwZSI6ICJNb2RlbFR5cGUgfCBzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRTaW1pbGFyVG9FbWJlZGRpbmciOiB7CiAgICAgICAgICAibmFtZSI6ICJmaW5kU2ltaWxhclRvRW1iZWRkaW5nIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImVtYmVkZGluZyIsCiAgICAgICAgICAgICAgInR5cGUiOiAibnVtYmVyW10iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdlbmVyYXRlTWlzc2luZ0VtYmVkZGluZ3MiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZW5lcmF0ZU1pc3NpbmdFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxvYmplY3Q+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0Q2xhc3MiLAogICAgICAiZXhwb3J0TmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0Q29sbGVjdGlvbkNvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jb2xsZWN0aW9ucyIsCiAgICAgICAgImRkbCI6ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBcInNtcnRfY29sbGVjdGlvbnNcIiAoXG4gIFwiaWRcIiBVVUlEIFBSSU1BUlkgS0VZIE5PVCBOVUxMLFxuICBcInNsdWdcIiBURVhUIE5PVCBOVUxMLFxuICBcImNvbnRleHRcIiBURVhUIE5PVCBOVUxMIERFRkFVTFQgJycsXG4gIFwiY3JlYXRlZF9hdFwiIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIGN1cnJlbnRfdGltZXN0YW1wLFxuICBcInVwZGF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcFxuKTsiLAogICAgICAgICJjb2x1bW5zIjogewogICAgICAgICAgImlkIjogewogICAgICAgICAgICAidHlwZSI6ICJVVUlEIiwKICAgICAgICAgICAgInByaW1hcnlLZXkiOiB0cnVlLAogICAgICAgICAgICAicmVmZXJlbmNlS2luZCI6ICJpZCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJzbHVnIjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgImNvbnRleHQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUsCiAgICAgICAgICAgICJkZWZhdWx0IjogIiIKICAgICAgICAgIH0sCiAgICAgICAgICAiY3JlYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0sCiAgICAgICAgICAidXBkYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbmRleGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X2NvbGxlY3Rpb25zX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jb2xsZWN0aW9uc19zbHVnX2NvbnRleHRfaWR4IiwKICAgICAgICAgICAgImNvbHVtbnMiOiBbCiAgICAgICAgICAgICAgInNsdWciLAogICAgICAgICAgICAgICJjb250ZXh0IgogICAgICAgICAgICBdLAogICAgICAgICAgICAidW5pcXVlIjogdHJ1ZQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInZlcnNpb24iOiAiMjk1YjBhODAiCiAgICAgIH0KICAgIH0sCiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRIaWVyYXJjaGljYWwiOiB7CiAgICAgICJuYW1lIjogInNtcnRoaWVyYXJjaGljYWwiLAogICAgICAiY2xhc3NOYW1lIjogIlNtcnRIaWVyYXJjaGljYWwiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydEhpZXJhcmNoaWNhbCIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRoaWVyYXJjaGljYWxzIiwKICAgICAgImZpbGVQYXRoIjogInBhY2thZ2VzL2NvcmUvc3JjL2hpZXJhcmNoaWNhbC50cyIsCiAgICAgICJwYWNrYWdlTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmUiLAogICAgICAiZmllbGRzIjogewogICAgICAgICJwYXJlbnRJZCI6IHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJtZXRob2RzIjogewogICAgICAgICJnZXRQYXJlbnQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRQYXJlbnQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldENoaWxkcmVuIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0Q2hpbGRyZW4iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldEFuY2VzdG9ycyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEFuY2VzdG9ycyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RGVzY2VuZGFudHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXREZXNjZW5kYW50cyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0SGllcmFyY2h5IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0SGllcmFyY2h5IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxIaWVyYXJjaHlWaWV3PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJtb3ZlVG8iOiB7CiAgICAgICAgICAibmFtZSI6ICJtb3ZlVG8iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibmV3UGFyZW50IiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmcgfCBudWxsIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4dGVuZHMiOiAiU21ydE9iamVjdCIsCiAgICAgICJleHBvcnROYW1lIjogIlNtcnRIaWVyYXJjaGljYWwiLAogICAgICAiY29sbGVjdGlvbkV4cG9ydE5hbWUiOiAiU21ydEhpZXJhcmNoaWNhbENvbGxlY3Rpb24iCiAgICB9LAogICAgIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0SnVuY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRqdW5jdGlvbiIsCiAgICAgICJjbGFzc05hbWUiOiAiU21ydEp1bmN0aW9uIiwKICAgICAgInF1YWxpZmllZE5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRKdW5jdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRqdW5jdGlvbnMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvanVuY3Rpb24udHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiYnlMZWZ0IjogewogICAgICAgICAgIm5hbWUiOiAiYnlMZWZ0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImxlZnRJZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0cyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiSnVuY3Rpb25GaWx0ZXJPcHRpb25zIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFRJdGVtW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImJ5UmlnaHQiOiB7CiAgICAgICAgICAibmFtZSI6ICJieVJpZ2h0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInJpZ2h0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkp1bmN0aW9uRmlsdGVyT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxUSXRlbVtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJhdHRhY2giOiB7CiAgICAgICAgICAibmFtZSI6ICJhdHRhY2giLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibGVmdElkIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJyaWdodElkIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJKdW5jdGlvbkF0dGFjaE9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8VEl0ZW0+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRldGFjaCI6IHsKICAgICAgICAgICJuYW1lIjogImRldGFjaCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJsZWZ0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInJpZ2h0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkp1bmN0aW9uRmlsdGVyT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzZXRMaW5rcyI6IHsKICAgICAgICAgICJuYW1lIjogInNldExpbmtzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImxlZnRJZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAicmlnaHRJZHMiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZ1tdIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0cyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiSnVuY3Rpb25BdHRhY2hPcHRpb25zIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPHZvaWQ+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJleHRlbmRzVHlwZUFyZyI6ICJUSXRlbSIsCiAgICAgICJleHBvcnROYW1lIjogIlNtcnRKdW5jdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0SnVuY3Rpb25Db2xsZWN0aW9uIgogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydE9iamVjdCI6IHsKICAgICAgIm5hbWUiOiAic21ydG9iamVjdCIsCiAgICAgICJjbGFzc05hbWUiOiAiU21ydE9iamVjdCIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0T2JqZWN0IiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydG9iamVjdHMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvb2JqZWN0LnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7CiAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAidHlwZSI6ICJkYXRldGltZSIsCiAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAidHlwZSI6ICJkYXRldGltZSIsCiAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZQogICAgICAgIH0KICAgICAgfSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgIm1hcmtBc1BlcnNpc3RlZCI6IHsKICAgICAgICAgICJuYW1lIjogIm1hcmtBc1BlcnNpc3RlZCIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVJbnNlcnRPblNhdmUiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXF1aXJlSW5zZXJ0T25TYXZlIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaW5pdGlhbGl6ZSI6IHsKICAgICAgICAgICJuYW1lIjogImluaXRpYWxpemUiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxvYWREYXRhRnJvbURiIjogewogICAgICAgICAgIm5hbWUiOiAibG9hZERhdGFGcm9tRGIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiZGF0YSIsCiAgICAgICAgICAgICAgInR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RmllbGRzIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RmllbGRzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInRvSlNPTiI6IHsKICAgICAgICAgICJuYW1lIjogInRvSlNPTiIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAidG9QbGFpbk9iamVjdCI6IHsKICAgICAgICAgICJuYW1lIjogInRvUGxhaW5PYmplY3QiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAidG9QdWJsaWNKU09OIjogewogICAgICAgICAgIm5hbWUiOiAidG9QdWJsaWNKU09OIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJQdWJsaWNKc29uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0SWQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRJZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRTbHVnIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0U2x1ZyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRTYXZlZElkIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0U2F2ZWRJZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpc1NhdmVkIjogewogICAgICAgICAgIm5hbWUiOiAiaXNTYXZlZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzYXZlIjogewogICAgICAgICAgIm5hbWUiOiAic2F2ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJjbGFzc2lmeUNvbnN0cmFpbnRFcnJvciI6IHsKICAgICAgICAgICJuYW1lIjogImNsYXNzaWZ5Q29uc3RyYWludEVycm9yIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJtZXNzYWdlIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICIndW5pcXVlJyB8ICdub3RfbnVsbCcgfCBudWxsIiwKICAgICAgICAgICJpc1N0YXRpYyI6IHRydWUsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZEZyb21JZCI6IHsKICAgICAgICAgICJuYW1lIjogImxvYWRGcm9tSWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZEZyb21TbHVnIjogewogICAgICAgICAgIm5hbWUiOiAibG9hZEZyb21TbHVnIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImlzIjogewogICAgICAgICAgIm5hbWUiOiAiaXMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiY3JpdGVyaWEiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpT3BlcmF0aW9uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRvIjogewogICAgICAgICAgIm5hbWUiOiAiZG8iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaW5zdHJ1Y3Rpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaU9wZXJhdGlvbk9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJkZXNjcmliZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc2NyaWJlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpT3BlcmF0aW9uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRlbGV0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlbGV0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaXNSZWxhdGVkTG9hZGVkIjogewogICAgICAgICAgIm5hbWUiOiAiaXNSZWxhdGVkTG9hZGVkIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImJvb2xlYW4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiX3NldExvYWRlZFJlbGF0aW9uc2hpcCI6IHsKICAgICAgICAgICJuYW1lIjogIl9zZXRMb2FkZWRSZWxhdGlvbnNoaXAiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImZpZWxkTmFtZSIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAidmFsdWUiLAogICAgICAgICAgICAgICJ0eXBlIjogImFueSIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZFJlbGF0ZWQiOiB7CiAgICAgICAgICAibmFtZSI6ICJsb2FkUmVsYXRlZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkxvYWRSZWxhdGVkT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxvYWRSZWxhdGVkTWFueSI6IHsKICAgICAgICAgICJuYW1lIjogImxvYWRSZWxhdGVkTWFueSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkxvYWRSZWxhdGVkT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnlbXT4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0UmVsYXRlZCI6IHsKICAgICAgICAgICJuYW1lIjogImdldFJlbGF0ZWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiZmllbGROYW1lIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJMb2FkUmVsYXRlZE9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8YW55PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRBdmFpbGFibGVUb29scyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEF2YWlsYWJsZVRvb2xzIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFJVG9vbFtdIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImV4ZWN1dGVUb29sQ2FsbCI6IHsKICAgICAgICAgICJuYW1lIjogImV4ZWN1dGVUb29sQ2FsbCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJ0b29sQ2FsbCIsCiAgICAgICAgICAgICAgInR5cGUiOiAiVG9vbENhbGwiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFRvb2xDYWxsUmVzdWx0PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZW1lbWJlciI6IHsKICAgICAgICAgICJuYW1lIjogInJlbWVtYmVyIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicmVjYWxsIjogewogICAgICAgICAgIm5hbWUiOiAicmVjYWxsIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicmVjYWxsQWxsIjogewogICAgICAgICAgIm5hbWUiOiAicmVjYWxsQWxsIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxNYXA8c3RyaW5nPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZm9yZ2V0IjogewogICAgICAgICAgIm5hbWUiOiAiZm9yZ2V0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZm9yZ2V0U2NvcGUiOiB7CiAgICAgICAgICAibmFtZSI6ICJmb3JnZXRTY29wZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPG51bWJlcj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2VuZXJhdGVFbWJlZGRpbmdzIjogewogICAgICAgICAgIm5hbWUiOiAiZ2VuZXJhdGVFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkdlbmVyYXRlRW1iZWRkaW5nc09wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RW1iZWRkaW5nIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RW1iZWRkaW5nIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImZpZWxkTmFtZSIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibW9kZWwiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxudW1iZXJbXSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImhhc1N0YWxlRW1iZWRkaW5ncyI6IHsKICAgICAgICAgICJuYW1lIjogImhhc1N0YWxlRW1iZWRkaW5ncyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8Ym9vbGVhbj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiY2xlYXJFbWJlZGRpbmdzIjogewogICAgICAgICAgIm5hbWUiOiAiY2xlYXJFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4dGVuZHMiOiAiU21ydENsYXNzIiwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydE9iamVjdCIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0T2JqZWN0Q29sbGVjdGlvbiIsCiAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgInRhYmxlTmFtZSI6ICJzbXJ0X29iamVjdHMiLAogICAgICAgICJkZGwiOiAiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgXCJzbXJ0X29iamVjdHNcIiAoXG4gIFwiaWRcIiBVVUlEIFBSSU1BUlkgS0VZIE5PVCBOVUxMLFxuICBcInNsdWdcIiBURVhUIE5PVCBOVUxMLFxuICBcImNvbnRleHRcIiBURVhUIE5PVCBOVUxMIERFRkFVTFQgJycsXG4gIFwiY3JlYXRlZF9hdFwiIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIGN1cnJlbnRfdGltZXN0YW1wLFxuICBcInVwZGF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcFxuKTsiLAogICAgICAgICJjb2x1bW5zIjogewogICAgICAgICAgImlkIjogewogICAgICAgICAgICAidHlwZSI6ICJVVUlEIiwKICAgICAgICAgICAgInByaW1hcnlLZXkiOiB0cnVlLAogICAgICAgICAgICAicmVmZXJlbmNlS2luZCI6ICJpZCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJzbHVnIjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgImNvbnRleHQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUsCiAgICAgICAgICAgICJkZWZhdWx0IjogIiIKICAgICAgICAgIH0sCiAgICAgICAgICAiY3JlYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0sCiAgICAgICAgICAidXBkYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbmRleGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X29iamVjdHNfaWRfaWR4IiwKICAgICAgICAgICAgImNvbHVtbnMiOiBbCiAgICAgICAgICAgICAgImlkIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X29iamVjdHNfc2x1Z19jb250ZXh0X2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJzbHVnIiwKICAgICAgICAgICAgICAiY29udGV4dCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInVuaXF1ZSI6IHRydWUKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJ2ZXJzaW9uIjogIjIwNGJmM2M0IgogICAgICB9CiAgICB9LAogICAgIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0UG9seW1vcnBoaWNBc3NvY2lhdGlvbiI6IHsKICAgICAgIm5hbWUiOiAic21ydHBvbHltb3JwaGljYXNzb2NpYXRpb24iLAogICAgICAiY2xhc3NOYW1lIjogIlNtcnRQb2x5bW9ycGhpY0Fzc29jaWF0aW9uIiwKICAgICAgInF1YWxpZmllZE5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRQb2x5bW9ycGhpY0Fzc29jaWF0aW9uIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydHBvbHltb3JwaGljYXNzb2NpYXRpb25zIiwKICAgICAgImZpbGVQYXRoIjogInBhY2thZ2VzL2NvcmUvc3JjL3BvbHltb3JwaGljLWFzc29jaWF0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7CiAgICAgICAgIm1ldGFUeXBlIjogewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgIl9tZXRhIjogewogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAibWV0YUlkIjogewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgIl9tZXRhIjogewogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicm9sZSI6IHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwKICAgICAgICAgICJfbWV0YSI6IHsKICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInNvcnRPcmRlciI6IHsKICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsCiAgICAgICAgICAiZGVmYXVsdCI6IDAKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJtZXRob2RzIjogewogICAgICAgICJoeWRyYXRlIjogewogICAgICAgICAgIm5hbWUiOiAiaHlkcmF0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8VCB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0T2JqZWN0IiwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydFBvbHltb3JwaGljQXNzb2NpYXRpb24iLAogICAgICAiY29sbGVjdGlvbkV4cG9ydE5hbWUiOiAiU21ydFBvbHltb3JwaGljQXNzb2NpYXRpb25Db2xsZWN0aW9uIiwKICAgICAgInZhbGlkYXRpb25SdWxlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZmllbGQiOiAibWV0YVR5cGUiLAogICAgICAgICAgInJ1bGUiOiAicmVxdWlyZWQiLAogICAgICAgICAgImZpZWxkVHlwZSI6ICJ0ZXh0IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImZpZWxkIjogIm1ldGFJZCIsCiAgICAgICAgICAicnVsZSI6ICJyZXF1aXJlZCIsCiAgICAgICAgICAiZmllbGRUeXBlIjogInRleHQiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZmllbGQiOiAicm9sZSIsCiAgICAgICAgICAicnVsZSI6ICJyZXF1aXJlZCIsCiAgICAgICAgICAiZmllbGRUeXBlIjogInRleHQiCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgfSwKICAibW9kdWxlVHlwZSI6ICJzbXJ0Igp9", "" + import.meta.url), new URL("data:application/json;base64,ewogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAidGltZXN0YW1wIjogMCwKICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAicGFja2FnZVZlcnNpb24iOiAiMC40MC42OCIsCiAgIm9iamVjdHMiOiB7CiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRDbGFzcyI6IHsKICAgICAgIm5hbWUiOiAic21ydGNsYXNzIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q2xhc3MiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydGNsYXNzZXMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvY2xhc3MudHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiZ2V0QWlVc2FnZVNuYXBzaG90IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0QWlVc2FnZVNuYXBzaG90IiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFpVXNhZ2VTbmFwc2hvdCB8IHVuZGVmaW5lZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZXNldEFpVXNhZ2UiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXNldEFpVXNhZ2UiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QWlVc2FnZSI6IHsKICAgICAgICAgICJuYW1lIjogImxpc3RBaVVzYWdlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpVXNhZ2VMaXN0T3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxTbXJ0QWlVc2FnZVJlY29yZFtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzdW1tYXJpemVBaVVzYWdlIjogewogICAgICAgICAgIm5hbWUiOiAic3VtbWFyaXplQWlVc2FnZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaVVzYWdlU3VtbWFyeU9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZywgQWlVc2FnZVN0YXRzPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZGVzdHJveSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc3Ryb3kiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb25FeHBvcnROYW1lIjogIlNtcnRDbGFzc0NvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jbGFzc2VzIiwKICAgICAgICAiZGRsIjogIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIFwic21ydF9jbGFzc2VzXCIgKFxuICBcImlkXCIgVVVJRCBQUklNQVJZIEtFWSBOT1QgTlVMTCxcbiAgXCJzbHVnXCIgVEVYVCBOT1QgTlVMTCxcbiAgXCJjb250ZXh0XCIgVEVYVCBOT1QgTlVMTCBERUZBVUxUICcnLFxuICBcImNyZWF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcCxcbiAgXCJ1cGRhdGVkX2F0XCIgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXBcbik7IiwKICAgICAgICAiY29sdW1ucyI6IHsKICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVVVJRCIsCiAgICAgICAgICAgICJwcmltYXJ5S2V5IjogdHJ1ZSwKICAgICAgICAgICAgInJlZmVyZW5jZUtpbmQiOiAiaWQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAic2x1ZyI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJjb250ZXh0IjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICIiCiAgICAgICAgICB9LAogICAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9LAogICAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5kZXhlcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX3NsdWdfY29udGV4dF9pZHgiLAogICAgICAgICAgICAiY29sdW1ucyI6IFsKICAgICAgICAgICAgICAic2x1ZyIsCiAgICAgICAgICAgICAgImNvbnRleHQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1bmlxdWUiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAidmVyc2lvbiI6ICIyMzRhNzJiMCIKICAgICAgfQogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENvbGxlY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRjb2xsZWN0aW9uIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRjb2xsZWN0aW9ucyIsCiAgICAgICJmaWxlUGF0aCI6ICJwYWNrYWdlcy9jb3JlL3NyYy9jb2xsZWN0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7fSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgImdldEl0ZW1DbGFzcyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEl0ZW1DbGFzcyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJTbXJ0Q29sbGVjdGlvbkl0ZW1DbGFzczxNb2RlbFR5cGU+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInZhbGlkYXRlIjogewogICAgICAgICAgIm5hbWUiOiAidmFsaWRhdGUiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiB0cnVlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImNyZWF0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImNyZWF0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJTbXJ0Q3JlYXRlSW5wdXQ8TW9kZWxUeXBlPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpbml0aWFsaXplIjogewogICAgICAgICAgIm5hbWUiOiAiaW5pdGlhbGl6ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZW5zdXJlU3RvcmFnZVJlYWR5IjogewogICAgICAgICAgIm5hbWUiOiAiZW5zdXJlU3RvcmFnZVJlYWR5IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmaW5kT25lIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZE9uZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRCeUlkIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZEJ5SWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlIHwgbnVsbD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZmluZEFsbCI6IHsKICAgICAgICAgICJuYW1lIjogImZpbmRBbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZVtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QnlJZHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJsaXN0QnlJZHMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaWRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmdbXSIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldCI6IHsKICAgICAgICAgICJuYW1lIjogImdldCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWx0ZXIiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyB8IFNtcnRXaGVyZUNsYXVzZTxNb2RlbFR5cGU+IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxpc3QiOiB7CiAgICAgICAgICAibmFtZSI6ICJsaXN0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIlNtcnRMaXN0T3B0aW9uczxNb2RlbFR5cGU+IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1vZGVsVHlwZVtdIHwgUmVjb3JkPHN0cmluZz5bXT4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0T3JVcHNlcnQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRPclVwc2VydCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImRlZmF1bHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldERpZmYiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXREaWZmIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImV4aXN0aW5nIiwKICAgICAgICAgICAgICAidHlwZSI6ICJTbXJ0T2JqZWN0IHwgUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAidHlwZSI6ICJSZWNvcmQ8c3RyaW5nPiIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZz4gfCBudWxsPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRGaWVsZHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRGaWVsZHMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFJlY29yZDxzdHJpbmcsIENvbGxlY3Rpb25GaWVsZERlZmluaXRpb24+PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRGaWVsZHNTeW5jIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RmllbGRzU3luYyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJSZWNvcmQ8c3RyaW5nLCBDb2xsZWN0aW9uRmllbGREZWZpbml0aW9uPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZW5lcmF0ZVNjaGVtYSI6IHsKICAgICAgICAgICJuYW1lIjogImdlbmVyYXRlU2NoZW1hIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdlbmVyYXRlVGFibGVOYW1lIjogewogICAgICAgICAgIm5hbWUiOiAiZ2VuZXJhdGVUYWJsZU5hbWUiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRlbGV0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlbGV0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJpZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxib29sZWFuPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJjb3VudCI6IHsKICAgICAgICAgICJuYW1lIjogImNvdW50IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldFN0aUNoaWxkTWV0YVR5cGUiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRTdGlDaGlsZE1ldGFUeXBlIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInN0cmluZyB8IG51bGwiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicXVlcnkiOiB7CiAgICAgICAgICAibmFtZSI6ICJxdWVyeSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJzcWwiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInBhcmFtcyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiYW55IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8TW9kZWxUeXBlW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInJlbWVtYmVyIjogewogICAgICAgICAgIm5hbWUiOiAicmVtZW1iZXIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZWNhbGwiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZWNhbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZWNhbGxBbGwiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZWNhbGxBbGwiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPE1hcDxzdHJpbmc+PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmb3JnZXQiOiB7CiAgICAgICAgICAibmFtZSI6ICJmb3JnZXQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0aW9ucyIsCiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJmb3JnZXRTY29wZSI6IHsKICAgICAgICAgICJuYW1lIjogImZvcmdldFNjb3BlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8bnVtYmVyPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzZW1hbnRpY1NlYXJjaCI6IHsKICAgICAgICAgICJuYW1lIjogInNlbWFudGljU2VhcmNoIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInF1ZXJ5IiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRTaW1pbGFyIjogewogICAgICAgICAgIm5hbWUiOiAiZmluZFNpbWlsYXIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAidHlwZSI6ICJNb2RlbFR5cGUgfCBzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImZpbmRTaW1pbGFyVG9FbWJlZGRpbmciOiB7CiAgICAgICAgICAibmFtZSI6ICJmaW5kU2ltaWxhclRvRW1iZWRkaW5nIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImVtYmVkZGluZyIsCiAgICAgICAgICAgICAgInR5cGUiOiAibnVtYmVyW10iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8QXJyYXk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdlbmVyYXRlTWlzc2luZ0VtYmVkZGluZ3MiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZW5lcmF0ZU1pc3NpbmdFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxvYmplY3Q+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0Q2xhc3MiLAogICAgICAiZXhwb3J0TmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0Q29sbGVjdGlvbkNvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jb2xsZWN0aW9ucyIsCiAgICAgICAgImRkbCI6ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBcInNtcnRfY29sbGVjdGlvbnNcIiAoXG4gIFwiaWRcIiBVVUlEIFBSSU1BUlkgS0VZIE5PVCBOVUxMLFxuICBcInNsdWdcIiBURVhUIE5PVCBOVUxMLFxuICBcImNvbnRleHRcIiBURVhUIE5PVCBOVUxMIERFRkFVTFQgJycsXG4gIFwiY3JlYXRlZF9hdFwiIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIGN1cnJlbnRfdGltZXN0YW1wLFxuICBcInVwZGF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcFxuKTsiLAogICAgICAgICJjb2x1bW5zIjogewogICAgICAgICAgImlkIjogewogICAgICAgICAgICAidHlwZSI6ICJVVUlEIiwKICAgICAgICAgICAgInByaW1hcnlLZXkiOiB0cnVlLAogICAgICAgICAgICAicmVmZXJlbmNlS2luZCI6ICJpZCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJzbHVnIjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgImNvbnRleHQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUsCiAgICAgICAgICAgICJkZWZhdWx0IjogIiIKICAgICAgICAgIH0sCiAgICAgICAgICAiY3JlYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0sCiAgICAgICAgICAidXBkYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbmRleGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X2NvbGxlY3Rpb25zX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jb2xsZWN0aW9uc19zbHVnX2NvbnRleHRfaWR4IiwKICAgICAgICAgICAgImNvbHVtbnMiOiBbCiAgICAgICAgICAgICAgInNsdWciLAogICAgICAgICAgICAgICJjb250ZXh0IgogICAgICAgICAgICBdLAogICAgICAgICAgICAidW5pcXVlIjogdHJ1ZQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInZlcnNpb24iOiAiMjk1YjBhODAiCiAgICAgIH0KICAgIH0sCiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRIaWVyYXJjaGljYWwiOiB7CiAgICAgICJuYW1lIjogInNtcnRoaWVyYXJjaGljYWwiLAogICAgICAiY2xhc3NOYW1lIjogIlNtcnRIaWVyYXJjaGljYWwiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydEhpZXJhcmNoaWNhbCIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRoaWVyYXJjaGljYWxzIiwKICAgICAgImZpbGVQYXRoIjogInBhY2thZ2VzL2NvcmUvc3JjL2hpZXJhcmNoaWNhbC50cyIsCiAgICAgICJwYWNrYWdlTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmUiLAogICAgICAiZmllbGRzIjogewogICAgICAgICJwYXJlbnRJZCI6IHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJtZXRob2RzIjogewogICAgICAgICJnZXRQYXJlbnQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRQYXJlbnQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldENoaWxkcmVuIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0Q2hpbGRyZW4iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdldEFuY2VzdG9ycyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEFuY2VzdG9ycyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RGVzY2VuZGFudHMiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXREZXNjZW5kYW50cyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0SGllcmFyY2h5IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0SGllcmFyY2h5IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxIaWVyYXJjaHlWaWV3PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJtb3ZlVG8iOiB7CiAgICAgICAgICAibmFtZSI6ICJtb3ZlVG8iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibmV3UGFyZW50IiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmcgfCBudWxsIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4dGVuZHMiOiAiU21ydE9iamVjdCIsCiAgICAgICJleHBvcnROYW1lIjogIlNtcnRIaWVyYXJjaGljYWwiLAogICAgICAiY29sbGVjdGlvbkV4cG9ydE5hbWUiOiAiU21ydEhpZXJhcmNoaWNhbENvbGxlY3Rpb24iCiAgICB9LAogICAgIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0SnVuY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRqdW5jdGlvbiIsCiAgICAgICJjbGFzc05hbWUiOiAiU21ydEp1bmN0aW9uIiwKICAgICAgInF1YWxpZmllZE5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRKdW5jdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRqdW5jdGlvbnMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvanVuY3Rpb24udHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiYnlMZWZ0IjogewogICAgICAgICAgIm5hbWUiOiAiYnlMZWZ0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImxlZnRJZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0cyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiSnVuY3Rpb25GaWx0ZXJPcHRpb25zIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFRJdGVtW10+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImJ5UmlnaHQiOiB7CiAgICAgICAgICAibmFtZSI6ICJieVJpZ2h0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInJpZ2h0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkp1bmN0aW9uRmlsdGVyT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxUSXRlbVtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJhdHRhY2giOiB7CiAgICAgICAgICAibmFtZSI6ICJhdHRhY2giLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibGVmdElkIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJyaWdodElkIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJKdW5jdGlvbkF0dGFjaE9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8VEl0ZW0+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRldGFjaCI6IHsKICAgICAgICAgICJuYW1lIjogImRldGFjaCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJsZWZ0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogInJpZ2h0SWQiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkp1bmN0aW9uRmlsdGVyT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzZXRMaW5rcyI6IHsKICAgICAgICAgICJuYW1lIjogInNldExpbmtzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImxlZnRJZCIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAicmlnaHRJZHMiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZ1tdIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAib3B0cyIsCiAgICAgICAgICAgICAgInR5cGUiOiAiSnVuY3Rpb25BdHRhY2hPcHRpb25zIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPHZvaWQ+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJleHRlbmRzVHlwZUFyZyI6ICJUSXRlbSIsCiAgICAgICJleHBvcnROYW1lIjogIlNtcnRKdW5jdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0SnVuY3Rpb25Db2xsZWN0aW9uIgogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydE9iamVjdCI6IHsKICAgICAgIm5hbWUiOiAic21ydG9iamVjdCIsCiAgICAgICJjbGFzc05hbWUiOiAiU21ydE9iamVjdCIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0T2JqZWN0IiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydG9iamVjdHMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvb2JqZWN0LnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7CiAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAidHlwZSI6ICJkYXRldGltZSIsCiAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAidHlwZSI6ICJkYXRldGltZSIsCiAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZQogICAgICAgIH0KICAgICAgfSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgIm1hcmtBc1BlcnNpc3RlZCI6IHsKICAgICAgICAgICJuYW1lIjogIm1hcmtBc1BlcnNpc3RlZCIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVJbnNlcnRPblNhdmUiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXF1aXJlSW5zZXJ0T25TYXZlIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaW5pdGlhbGl6ZSI6IHsKICAgICAgICAgICJuYW1lIjogImluaXRpYWxpemUiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxvYWREYXRhRnJvbURiIjogewogICAgICAgICAgIm5hbWUiOiAibG9hZERhdGFGcm9tRGIiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiZGF0YSIsCiAgICAgICAgICAgICAgInR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RmllbGRzIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RmllbGRzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInRvSlNPTiI6IHsKICAgICAgICAgICJuYW1lIjogInRvSlNPTiIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAidG9QbGFpbk9iamVjdCI6IHsKICAgICAgICAgICJuYW1lIjogInRvUGxhaW5PYmplY3QiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAidG9QdWJsaWNKU09OIjogewogICAgICAgICAgIm5hbWUiOiAidG9QdWJsaWNKU09OIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJQdWJsaWNKc29uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUmVjb3JkPHN0cmluZz4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0SWQiOiB7CiAgICAgICAgICAibmFtZSI6ICJnZXRJZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRTbHVnIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0U2x1ZyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRTYXZlZElkIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0U2F2ZWRJZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpc1NhdmVkIjogewogICAgICAgICAgIm5hbWUiOiAiaXNTYXZlZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzYXZlIjogewogICAgICAgICAgIm5hbWUiOiAic2F2ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJjbGFzc2lmeUNvbnN0cmFpbnRFcnJvciI6IHsKICAgICAgICAgICJuYW1lIjogImNsYXNzaWZ5Q29uc3RyYWludEVycm9yIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJtZXNzYWdlIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICIndW5pcXVlJyB8ICdub3RfbnVsbCcgfCBudWxsIiwKICAgICAgICAgICJpc1N0YXRpYyI6IHRydWUsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZEZyb21JZCI6IHsKICAgICAgICAgICJuYW1lIjogImxvYWRGcm9tSWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJhbnkiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZEZyb21TbHVnIjogewogICAgICAgICAgIm5hbWUiOiAibG9hZEZyb21TbHVnIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImlzIjogewogICAgICAgICAgIm5hbWUiOiAiaXMiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiY3JpdGVyaWEiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpT3BlcmF0aW9uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRvIjogewogICAgICAgICAgIm5hbWUiOiAiZG8iLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiaW5zdHJ1Y3Rpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaU9wZXJhdGlvbk9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImFueSIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJkZXNjcmliZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc2NyaWJlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpT3BlcmF0aW9uT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiYW55IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImRlbGV0ZSI6IHsKICAgICAgICAgICJuYW1lIjogImRlbGV0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaXNSZWxhdGVkTG9hZGVkIjogewogICAgICAgICAgIm5hbWUiOiAiaXNSZWxhdGVkTG9hZGVkIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogImJvb2xlYW4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiX3NldExvYWRlZFJlbGF0aW9uc2hpcCI6IHsKICAgICAgICAgICJuYW1lIjogIl9zZXRMb2FkZWRSZWxhdGlvbnNoaXAiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImZpZWxkTmFtZSIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAidmFsdWUiLAogICAgICAgICAgICAgICJ0eXBlIjogImFueSIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAibG9hZFJlbGF0ZWQiOiB7CiAgICAgICAgICAibmFtZSI6ICJsb2FkUmVsYXRlZCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkxvYWRSZWxhdGVkT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnk+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImxvYWRSZWxhdGVkTWFueSI6IHsKICAgICAgICAgICJuYW1lIjogImxvYWRSZWxhdGVkTWFueSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJmaWVsZE5hbWUiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdHMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkxvYWRSZWxhdGVkT3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxhbnlbXT4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0UmVsYXRlZCI6IHsKICAgICAgICAgICJuYW1lIjogImdldFJlbGF0ZWQiLAogICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiZmllbGROYW1lIiwKICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRzIiwKICAgICAgICAgICAgICAidHlwZSI6ICJMb2FkUmVsYXRlZE9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8YW55PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJnZXRBdmFpbGFibGVUb29scyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEF2YWlsYWJsZVRvb2xzIiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFJVG9vbFtdIiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImV4ZWN1dGVUb29sQ2FsbCI6IHsKICAgICAgICAgICJuYW1lIjogImV4ZWN1dGVUb29sQ2FsbCIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJ0b29sQ2FsbCIsCiAgICAgICAgICAgICAgInR5cGUiOiAiVG9vbENhbGwiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPFRvb2xDYWxsUmVzdWx0PiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZW1lbWJlciI6IHsKICAgICAgICAgICJuYW1lIjogInJlbWVtYmVyIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicmVjYWxsIjogewogICAgICAgICAgIm5hbWUiOiAicmVjYWxsIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2UiLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicmVjYWxsQWxsIjogewogICAgICAgICAgIm5hbWUiOiAicmVjYWxsQWxsIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxNYXA8c3RyaW5nPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZm9yZ2V0IjogewogICAgICAgICAgIm5hbWUiOiAiZm9yZ2V0IiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZm9yZ2V0U2NvcGUiOiB7CiAgICAgICAgICAibmFtZSI6ICJmb3JnZXRTY29wZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJQcm9taXNlPG51bWJlcj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2VuZXJhdGVFbWJlZGRpbmdzIjogewogICAgICAgICAgIm5hbWUiOiAiZ2VuZXJhdGVFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkdlbmVyYXRlRW1iZWRkaW5nc09wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8dm9pZD4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZ2V0RW1iZWRkaW5nIjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0RW1iZWRkaW5nIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImZpZWxkTmFtZSIsCiAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAib3B0aW9uYWwiOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAibW9kZWwiLAogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxudW1iZXJbXSB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImhhc1N0YWxlRW1iZWRkaW5ncyI6IHsKICAgICAgICAgICJuYW1lIjogImhhc1N0YWxlRW1iZWRkaW5ncyIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8Ym9vbGVhbj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiY2xlYXJFbWJlZGRpbmdzIjogewogICAgICAgICAgIm5hbWUiOiAiY2xlYXJFbWJlZGRpbmdzIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTx2b2lkPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4dGVuZHMiOiAiU21ydENsYXNzIiwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydE9iamVjdCIsCiAgICAgICJjb2xsZWN0aW9uRXhwb3J0TmFtZSI6ICJTbXJ0T2JqZWN0Q29sbGVjdGlvbiIsCiAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgInRhYmxlTmFtZSI6ICJzbXJ0X29iamVjdHMiLAogICAgICAgICJkZGwiOiAiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgXCJzbXJ0X29iamVjdHNcIiAoXG4gIFwiaWRcIiBVVUlEIFBSSU1BUlkgS0VZIE5PVCBOVUxMLFxuICBcInNsdWdcIiBURVhUIE5PVCBOVUxMLFxuICBcImNvbnRleHRcIiBURVhUIE5PVCBOVUxMIERFRkFVTFQgJycsXG4gIFwiY3JlYXRlZF9hdFwiIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIGN1cnJlbnRfdGltZXN0YW1wLFxuICBcInVwZGF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcFxuKTsiLAogICAgICAgICJjb2x1bW5zIjogewogICAgICAgICAgImlkIjogewogICAgICAgICAgICAidHlwZSI6ICJVVUlEIiwKICAgICAgICAgICAgInByaW1hcnlLZXkiOiB0cnVlLAogICAgICAgICAgICAicmVmZXJlbmNlS2luZCI6ICJpZCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJzbHVnIjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgImNvbnRleHQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRFWFQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUsCiAgICAgICAgICAgICJkZWZhdWx0IjogIiIKICAgICAgICAgIH0sCiAgICAgICAgICAiY3JlYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0sCiAgICAgICAgICAidXBkYXRlZF9hdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVElNRVNUQU1QIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICJjdXJyZW50X3RpbWVzdGFtcCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbmRleGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X29iamVjdHNfaWRfaWR4IiwKICAgICAgICAgICAgImNvbHVtbnMiOiBbCiAgICAgICAgICAgICAgImlkIgogICAgICAgICAgICBdCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzbXJ0X29iamVjdHNfc2x1Z19jb250ZXh0X2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJzbHVnIiwKICAgICAgICAgICAgICAiY29udGV4dCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInVuaXF1ZSI6IHRydWUKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJ2ZXJzaW9uIjogIjIwNGJmM2M0IgogICAgICB9CiAgICB9LAogICAgIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0UG9seW1vcnBoaWNBc3NvY2lhdGlvbiI6IHsKICAgICAgIm5hbWUiOiAic21ydHBvbHltb3JwaGljYXNzb2NpYXRpb24iLAogICAgICAiY2xhc3NOYW1lIjogIlNtcnRQb2x5bW9ycGhpY0Fzc29jaWF0aW9uIiwKICAgICAgInF1YWxpZmllZE5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRQb2x5bW9ycGhpY0Fzc29jaWF0aW9uIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydHBvbHltb3JwaGljYXNzb2NpYXRpb25zIiwKICAgICAgImZpbGVQYXRoIjogInBhY2thZ2VzL2NvcmUvc3JjL3BvbHltb3JwaGljLWFzc29jaWF0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7CiAgICAgICAgIm1ldGFUeXBlIjogewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgIl9tZXRhIjogewogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAibWV0YUlkIjogewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgIl9tZXRhIjogewogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicm9sZSI6IHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwKICAgICAgICAgICJfbWV0YSI6IHsKICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInNvcnRPcmRlciI6IHsKICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsCiAgICAgICAgICAiZGVmYXVsdCI6IDAKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJtZXRob2RzIjogewogICAgICAgICJoeWRyYXRlIjogewogICAgICAgICAgIm5hbWUiOiAiaHlkcmF0ZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8VCB8IG51bGw+IiwKICAgICAgICAgICJpc1N0YXRpYyI6IGZhbHNlLAogICAgICAgICAgImlzUHVibGljIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgImRlY29yYXRvckNvbmZpZyI6IHt9LAogICAgICAiZXh0ZW5kcyI6ICJTbXJ0T2JqZWN0IiwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydFBvbHltb3JwaGljQXNzb2NpYXRpb24iLAogICAgICAiY29sbGVjdGlvbkV4cG9ydE5hbWUiOiAiU21ydFBvbHltb3JwaGljQXNzb2NpYXRpb25Db2xsZWN0aW9uIiwKICAgICAgInZhbGlkYXRpb25SdWxlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZmllbGQiOiAibWV0YVR5cGUiLAogICAgICAgICAgInJ1bGUiOiAicmVxdWlyZWQiLAogICAgICAgICAgImZpZWxkVHlwZSI6ICJ0ZXh0IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImZpZWxkIjogIm1ldGFJZCIsCiAgICAgICAgICAicnVsZSI6ICJyZXF1aXJlZCIsCiAgICAgICAgICAiZmllbGRUeXBlIjogInRleHQiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZmllbGQiOiAicm9sZSIsCiAgICAgICAgICAicnVsZSI6ICJyZXF1aXJlZCIsCiAgICAgICAgICAiZmllbGRUeXBlIjogInRleHQiCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgfSwKICAibW9kdWxlVHlwZSI6ICJzbXJ0Igp9", "" + import.meta.url)] : [new URL("../manifest.json", "" + import.meta.url)];
281
281
  for (const candidate of candidates) try {
282
282
  if (!builtins.fs.existsSync(candidate)) continue;
283
283
  const manifest = JSON.parse(builtins.fs.readFileSync(candidate, "utf-8"));
@@ -2,7 +2,7 @@
2
2
  "version": "1.0.0",
3
3
  "timestamp": 0,
4
4
  "packageName": "@happyvertical/smrt-core",
5
- "packageVersion": "0.40.67",
5
+ "packageVersion": "0.40.68",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-core:SmrtClass": {
8
8
  "name": "smrtclass",
@@ -3,13 +3,13 @@
3
3
  "sensitiveFieldsExcluded": true,
4
4
  "generatedAt": "1970-01-01T00:00:00.000Z",
5
5
  "packageName": "@happyvertical/smrt-core",
6
- "packageVersion": "0.40.67",
6
+ "packageVersion": "0.40.68",
7
7
  "sourceManifestPath": "dist/manifest.json",
8
8
  "agentDocPath": "AGENTS.md",
9
9
  "sourceHashes": {
10
- "manifest": "d46f11f06b5edc0a94060a11e3819cf413b13a42e50e0d40282d4d1d3ea2fb6f",
11
- "packageJson": "95c12c3a4dbb61d87e318d547b77ef640aa934d7e40384101658468a30e456d0",
12
- "agents": "cd549496058522b65d18c2f2bc3492e56eee57b14fefd0d8eea5329a3b0de004",
10
+ "manifest": "2e89ec737168f01c7ee8c9fe6748e399c18f55b3f499a21db29abaa536bd5244",
11
+ "packageJson": "9a08364b340fc072e042cb77aa44c2906d97bb796725de2784dbaa8e9d6b6dc1",
12
+ "agents": "1ccd94951a29e8ee7a94be7df31520091885780119a0970d54a0ffb598260fa6",
13
13
  "moduleDoc:agents/change-feed.md": "5278797d6c049ea21071b011182a9fcd79d17f9d74e0f90a93caa4c05c25294f",
14
14
  "moduleDoc:agents/change-signals.md": "d9cb6a5541728ffea46607a6b1d4fa61d4621849f2b4ea86a0645fbb0af892e9",
15
15
  "moduleDoc:agents/generators.md": "2b6ccd5ff557293f2ce84d25cc254ceb518f4c274d93b7e3175985b18f36f564"
@@ -911,7 +911,7 @@
911
911
  "polymorphicAssociations": 1,
912
912
  "uuidColumns": 3
913
913
  },
914
- "agentDoc": "# @happyvertical/smrt-core\n\nORM, code generation, AI integration, and the DispatchBus. Everything else builds on this.\n\nKey surfaces are `SmrtObject`, `SmrtCollection`, `ObjectRegistry`,\n`DispatchBus`, `GlobalInterceptors`, and `LearningMemory`; this file documents\ntheir invariants and source locations, and the module docs below cover the\nper-subsystem semantics.\n\n## Modules\n\nSubsystem semantics live in sibling module docs — read the one for the\nsubsystem you are editing. This file keeps what holds across all of them.\n\n| Module | Scope | Module doc |\n|---|---|---|\n| `src/change-feed.ts` | the adapter-agnostic change-observation spine — `_smrt_changes`, cursors, table versions, generated `_changes` routes, retention | [agents/change-feed.md](agents/change-feed.md) |\n| `src/change-signals.ts` + the generated `_events` SSE route | the push companion to the change feed — the signal bus, cross-replica fan-out, the SSE route, and its documented gaps | [agents/change-signals.md](agents/change-signals.md) |\n| `src/generators/` + `src/vite-plugin/web-collections.ts` | REST/CLI/MCP/web-collection generation, the `manifestHash` emission sites, and generated conditional-GET / ETag v2 semantics | [agents/generators.md](agents/generators.md) |\n\n## SmrtObject Lifecycle\n\n`constructor(options)` → `initialize()` → ready for `save()`/`delete()`/`loadFromId()`\n\n- `initialize()`: loads field initializers, applies option values (options override initializers), loads from DB if id/slug provided\n- `save()`: upsert with STI validation, interceptor execution, auto-embeddings. Persisted objects (`isPersisted` — set by DB hydration and successful saves) upsert on `['id']` so natural-key edits (e.g. slug renames) update in place; new objects upsert on the natural-key conflict columns for ingestion-style dedup (#1472)\n- `is(criteria)` / `do(instructions)` / `describe()`: AI operations via function calling. They inject the object's own `toPublicJSON()` (sensitive fields stripped) as a \"content body\" so the model reasons over the instance. Options: `includeData: false` skips injection (for callers that already curate the relevant fields into the instruction); `maxDataLength` overrides the truncation budget. Neither key is forwarded to `ai.message()`. (#1567)\n- `getSlug()`: auto-generates from name → title → label → id\n- `loadRelated(fieldName)`: lazy-loads relationships (cached in `_loadedRelationships` Map)\n\n## LearningMemory (#1886)\n\n`LearningMemory` provides tenant-isolated, confidence-scored recall over\n`_smrt_contexts` plus optional injected semantic search. `capture()` reinforces\nsuccesses and decays failures while updating outcome counters; `recall()`\napplies confidence, expiry, time-decay, and hierarchical-scope filters and\nrefreshes `last_used_at`. Keep semantic search behind the\n`SmrtCollection.semanticSearch`-compatible injection boundary.\n\n## SmrtCollection Query\n\n```typescript\nawait collection.list({\n where: { status: 'active', 'price >': 10 },\n limit: 50, offset: 0, orderBy: 'created_at DESC'\n});\n```\n\nProjection primitive (#1902): pass `select: ['id', 'title', 'tenantId']` to\n`list()` when an admin/list workflow needs compact rows. `select` uses SMRT\nfield names, maps them to DB columns internally, and returns plain objects keyed\nby the same SMRT field names without hydrating `SmrtObject` instances. It\ncomposes with `where`, `orderBy`, `limit`, and `offset`; `beforeList`\ninterceptors still run. It is for column-backed fields only and cannot combine\nwith `include`/relationship eager loading.\n\n`list()` and `query()` hydrate model instances serially in result order because\nan `initialize()` hook may query through the same transaction-bound PostgreSQL\nclient. Keep this serialization invariant; use `select` when callers need plain\nrows without model hydration.\n\n**WHERE operators**: `=`, `>`, `<`, `>=`, `<=`, `!=`, `in`, `not in`, `like`.\nArrays auto-detect `IN`. NULL is a value, not an operator: `{ deletedAt: null }`\nrenders `IS NULL` and `{ 'deletedAt !=': null }` renders `IS NOT NULL`.\n\nThis list is the set `@happyvertical/sql`'s `buildWhere` can execute, and\n`convertWhereKeys` accepts nothing outside it — an operator accepted here but\nunknown there fails inside the query builder, after the API said the query was\nvalid (#2276). Two entries were removed for that reason and now reject at the\nAPI boundary: `contains` (never existed in the SQL layer; use `like` with\nexplicit wildcards) and dot-notation JSON paths such as `metadata.userId` (never\nrewritten into an extraction expression, so they reached SQL as qualified column\nreferences). Re-adding either requires the query builder to support it first;\n`src/__tests__/issue-2276-where-contract.test.ts` executes every accepted\noperator against a database to keep the two in step.\n\nSTI child collections auto-filter by `_meta_type`.\n\n## Bounded Collection Read Plans\n\nUse `executeCollectionReadPlan()` when one operation needs several independent\ncollections. It bounds top-level `collection.list()` concurrency while keeping\nall reads on the normal registry/collection path. Callers must choose an\nexplicit positive `maxConcurrency` and pass their normal shared\n`collectionOptions` when database or tenant context matters.\n\nThe executor deliberately does not compose SQL, cache the plan, or change pool\ndefaults. On failure it stops starting queued entries, drains operations already\nin flight, and rethrows the first error.\n\n## Object Memory & Semantic Search\n\nTwo persistence primitives every `SmrtObject`/`SmrtCollection` inherits — load-bearing for learning agents, usable by any object. Full guide: `docs/content/core.md` → \"Context Memory System\".\n\n- **Context memory** (`remember`/`recall`/`recallAll`/`forget`/`forgetScope`, table `_smrt_contexts`): stores any JSON value keyed by `(owner_class, owner_id, scope, key, version)` with a `confidence` score (0–1) and a stored `expiresAt` (metadata — `recall()` does **not** filter expired rows; expiry is caller-managed). `recall()` returns the highest-confidence match with an optional `minConfidence` floor and **opt-in** hierarchical scope fallback (`includeAncestors: true` → `'a/b/c' → 'a/b' → 'a' → 'global'`; default off); `recallAll()` returns a `Map`. Typical use: cache a learned strategy (e.g. a working selector per host) and reuse it across sessions. `success_count`/`failure_count` columns exist for outcome-weighting: `SmrtObject.remember()` leaves them untouched, `SmrtCollection.remember()` resets them to zero, and neither recall path updates them. `LearningMemory` is the layer that maintains them (and that does filter expired rows).\n- **Semantic search** (on `SmrtCollection`, table `_smrt_embeddings`): `semanticSearch(query)`, `findSimilar(object)`, `findSimilarToEmbedding(vector)` — cosine ranking over embeddings of the fields declared in `@smrt({ embeddings })`. Native pgvector/HNSW when configured, in-memory `CosineSimilarity` fallback otherwise; default local model `Xenova/bge-base-en-v1.5` (768-dim) or AI `text-embedding-3-small`. Hits hydrate via `list({ 'id in': … })`, so `@TenantScoped` isolation applies to results.\n\n## @smrt() Decorator Options\n\nKey options: `tableName`, `tableStrategy` ('cti'|'sti'), `conflictColumns`, `api`/`mcp`/`cli` (generation config), `ai` (callable methods), `hooks` (beforeSave/afterSave/beforeDelete/afterDelete), `embeddings` (auto-generate), `tenantScoped`, `agent`, `ui` (`{ icon, label, description }` — nav/help hints round-tripped through the manifest as plain data; `description` is the object-level seed for form-level help, #2046).\n\nRegistration sets `SMRT_TABLE_NAME` static property (survives minification).\n\n## @field() UI hints (#2046)\n\n`@field({ ui: { basic, group, order, locked } })` — a static, presentation-only\nseed for the field-policy rail (epic #2045). Carried in the manifest under the\nfield's `_meta.ui` (never a top-level `FieldDefinition` key), readable at\nruntime via `getAllFields()` at `field._meta.ui`, and emitted (sanitized) with\n`description` into generated web-collection definitions and browser MCP tool\nschemas. No schema/persistence/security effect — `sensitive`/`readPermission`\nstay the security rail, and `sensitive`/`transient` fields never emit to the\nclient at all.\n\n## Domain Knowledge Artifacts\n\n`smrtPlugin()` writes runtime manifests and agent/developer knowledge artifacts:\n\n- local dev/build: `.smrt/manifest.json` and `.smrt/smrt-knowledge.json`\n- package build: `dist/manifest.json` and `dist/smrt-knowledge.json`\n\nKeep `manifest.json` runtime-focused. `smrt-knowledge.json` is the deterministic\nagent contract for downstream review and architecture tools.\n\nThe schema-version-1 object projection is additive and high-signal: it retains\nnormalized tenant mode/field, explicit `cti`/`sti` strategy, conflict columns,\nmethod signatures, and field defaults/constraints/readonly/transient flags.\nSensitive fields are removed before both `fields` and `relationships` are\nderived, including legacy flags stored under `_meta`; matching field and\nsnake-case column names are also removed from projected conflict columns, and a\nsensitive custom tenant field is omitted while retaining scope and mode.\nGenerated artifacts assert this boundary with `sensitiveFieldsExcluded: true`;\nthe optional marker keeps schema version 1 additive while letting readers\nidentify older artifacts that require raw-manifest corroboration.\n\nConfig precedence for knowledge is defaults → top-level `knowledge` in\n`smrt.config.ts` → `packages[packageName].knowledge` → plugin option →\nobject-level `@smrt({ knowledge })`.\n\nObject-level `knowledge: false` excludes an object from authored context only;\nit must not change runtime manifest registration. Use\n`knowledge: { tags, summary, risks }` for review-sensitive domain objects.\n\nHTTP knowledge routes are disabled by default. If `knowledge.api.enabled` is\ntrue, generated SvelteKit routes must stay GET-only and guarded by dev mode or\nadmin auth.\n\n## DispatchBus\n\n- `emit(signalType, payload, metadata)` → creates persistent Dispatch record\n- `on(pattern, handler)` → in-memory handler (immediate)\n- `subscribe({ signalType, subscriber })` → persistent subscription (survives restarts)\n- `process(subscriberName, handler)` → process pending dispatches\n- Wildcards: `campaign.*` matches `campaign.completed` (single segment only)\n- Tables: `_smrt_dispatch`, `_smrt_dispatch_subscriptions`\n- Status: `pending → processing → completed` (or `failed`)\n\n## Single Table Inheritance (STI)\n\n- Base: `@smrt({ tableStrategy: 'sti' })` — children inherit, share one table\n- Discriminator: `_meta_type` column with qualified names (`@happyvertical/smrt-content:Article`)\n- Child fields: `@meta()` decorator → stored in `_meta_data` JSONB (not as columns)\n- Polymorphic queries: collection loads `_meta_type`, creates correct subclass dynamically\n- Validation: fail-fast on save if `_meta_type` missing or mismatched\n\n## Child Accessors (R10)\n\n`src/child-accessors.ts` installs a consistent `get<FieldName>()` instance method for every `@oneToMany` field at `@smrt()` registration time (e.g. `@oneToMany('OrderItem') items` → `order.getItems()`), delegating to `loadRelatedMany`. Two invariants:\n\n- **Additive** — never overwrites a hand-rolled method of the same name (checks the whole prototype chain). `Profile.getMetadata()` (key-value) and `ProfileRelationship.getTerms()` are preserved.\n- **Runtime-only** — attached to the prototype, invisible to the build-time manifest, so it never leaks into the REST/CLI/MCP surface.\n\nWhen the target declares multiple FKs back to the parent, annotate `@oneToMany(Target, { foreignKey: '<inverseField>' })`; `loadRelatedMany` and the eager `include:` loader both honor it (else first-match).\n\n## Vite Plugin\n\n```typescript\n// vite.config.ts — required for @smrt() decorators (Vite 8+, oxc transform)\nexport default defineConfig({\n oxc: {\n decorator: {\n legacy: true,\n emitDecoratorMetadata: true,\n },\n },\n});\n```\n\nUnder Vite 8 the oxc transform does not honor the pre-Vite-8 `esbuild.tsconfigRaw`\nrecipe (or tsconfig `experimentalDecorators` reached through SvelteKit's\n`extends \"./.svelte-kit/tsconfig.json\"` chain), so that recipe throws\n`SyntaxError: Invalid or unexpected token` on the first SSR request. Configure\ndecorators through `oxc.decorator` instead. Consumers still pinned on vite<8 need\nthe legacy `esbuild.tsconfigRaw` form with `experimentalDecorators: true,\nemitDecoratorMetadata: true`.\n\n## Gotchas\n\n- **Filesystem support is a lazy boundary (#1979)**: `SmrtClass` acquires `options.fs` adapters via `createFilesystemAdapter()` (`src/filesystem-loader.ts`), never a static `@happyvertical/files` import — the files SDK statically pulls @aws-sdk/client-s3 and reaches googleapis, and a static edge here would land it in every downstream SSR bundle. Node/tsx/vite-dev runtimes resolve it on first use; fully-bundled deployments import `@happyvertical/smrt-core/filesystem` at startup. Use `importOptionalDependency()` (`src/lazy-external.ts`) for any similar optional heavyweight dependency.\n- **Never override toJSON()** — handles STI discriminator + meta field extraction. Use `transformJSON()`\n- **Property init order**: TypeScript initializers run first, then `initialize()` applies option values (options win)\n- **No runtime schema creation**: application tables must be prepared explicitly via migrations/tooling; runtime only verifies and fails clearly\n- **Retry logic**: `db.get()` (3 retries, 250ms) and `db.upsert()` (3 retries, 500ms) have built-in retry\n- **Field caching**: `_cachedFields` populated during `Collection.create()` — eliminates async `getFields()` per query\n- **Smart cloning**: arrays/objects shallow-cloned in property init to prevent aliasing (Issue #22)\n- **Table verification cache**: `isTableVerified(dbUrl, tableName)` avoids redundant `tableExists()` calls\n- **Manifest required**: build-time AST scanning creates manifest. Without vitest plugin → \"No field metadata\"\n- **ManifestBuilder fails on scanner errors**: every production manifest path\n must abort before adapting partial scan results. A syntax error or unresolved\n `@smrt()` config spread cannot be allowed to emit a default-open manifest.\n- **Vite plugin loads scanner from `dist/` first**: `src/vite-plugin/import-build-aware.ts` prefers `dist/` when it exists on disk; it only falls back to `src/` on fresh clones. So if you edit `src/scanner/*.ts` or `src/schema/generator.ts` and want those edits reflected in consumer manifest generation, you must rebuild (`pnpm build` or have `pnpm dev` / `pnpm build:watch` running in core). This is intentional — sniffing `.ts` vs `.js` via `import.meta.url` was non-deterministic under tsx and broke 12–13 publishes (#1139).\n- **Bundled registry ownership**: flattened production bundles can rewrite constructor names and make decorator-time stack inference attribute provider code to the consumer. Generated registration repairs identity only from the exact imported constructor plus an explicit package and isolated one-object manifest; never infer ownership from output paths, simple names, or table names. Distinct packages may export the same simple name under qualified keys. The production-consumer gate lives in `packages/bundle-gate/src/__tests__/registry-identity.spec.ts` (#2308).\n",
914
+ "agentDoc": "# @happyvertical/smrt-core\n\nORM, code generation, AI integration, and the DispatchBus. Everything else builds on this.\n\nKey surfaces are `SmrtObject`, `SmrtCollection`, `ObjectRegistry`,\n`DispatchBus`, `GlobalInterceptors`, and `LearningMemory`; this file documents\ntheir invariants and source locations, and the module docs below cover the\nper-subsystem semantics.\n\n## Modules\n\nSubsystem semantics live in sibling module docs — read the one for the\nsubsystem you are editing. This file keeps what holds across all of them.\n\n| Module | Scope | Module doc |\n|---|---|---|\n| `src/change-feed.ts` | the adapter-agnostic change-observation spine — `_smrt_changes`, cursors, table versions, generated `_changes` routes, retention | [agents/change-feed.md](agents/change-feed.md) |\n| `src/change-signals.ts` + the generated `_events` SSE route | the push companion to the change feed — the signal bus, cross-replica fan-out, the SSE route, and its documented gaps | [agents/change-signals.md](agents/change-signals.md) |\n| `src/generators/` + `src/vite-plugin/web-collections.ts` | REST/CLI/MCP/web-collection generation, the `manifestHash` emission sites, and generated conditional-GET / ETag v2 semantics | [agents/generators.md](agents/generators.md) |\n\n## SmrtObject Lifecycle\n\n`constructor(options)` → `initialize()` → ready for `save()`/`delete()`/`loadFromId()`\n\n- `initialize()`: loads field initializers, applies option values (options override initializers), loads from DB if id/slug provided\n- `save()`: upsert with STI validation, interceptor execution, auto-embeddings. Persisted objects (`isPersisted` — set by DB hydration and successful saves) upsert on `['id']` so natural-key edits (e.g. slug renames) update in place; new objects upsert on the natural-key conflict columns for ingestion-style dedup (#1472)\n- `is(criteria)` / `do(instructions)` / `describe()`: AI operations via function calling. They inject the object's own `toPublicJSON()` (sensitive fields stripped) as a \"content body\" so the model reasons over the instance. Options: `includeData: false` skips injection (for callers that already curate the relevant fields into the instruction); `maxDataLength` overrides the truncation budget. Neither key is forwarded to `ai.message()`. (#1567)\n- `getSlug()`: auto-generates from name → title → label → id\n- `loadRelated(fieldName)`: lazy-loads relationships (cached in `_loadedRelationships` Map)\n\n## LearningMemory (#1886)\n\n`LearningMemory` provides tenant-isolated, confidence-scored recall over\n`_smrt_contexts` plus optional injected semantic search. `capture()` reinforces\nsuccesses and decays failures while updating outcome counters; `recall()`\napplies confidence, expiry, time-decay, and hierarchical-scope filters and\nrefreshes `last_used_at`. Keep semantic search behind the\n`SmrtCollection.semanticSearch`-compatible injection boundary.\n\n## SmrtCollection Query\n\n```typescript\nawait collection.list({\n where: { status: 'active', 'price >': 10 },\n limit: 50, offset: 0, orderBy: 'created_at DESC'\n});\n```\n\nProjection primitive (#1902): pass `select: ['id', 'title', 'tenantId']` to\n`list()` when an admin/list workflow needs compact rows. `select` uses SMRT\nfield names, maps them to DB columns internally, and returns plain objects keyed\nby the same SMRT field names without hydrating `SmrtObject` instances. It\ncomposes with `where`, `orderBy`, `limit`, and `offset`; `beforeList`\ninterceptors still run. It is for column-backed fields only and cannot combine\nwith `include`/relationship eager loading.\n\n`list()` and `query()` hydrate model instances serially in result order because\nan `initialize()` hook may query through the same transaction-bound PostgreSQL\nclient. Keep this serialization invariant; use `select` when callers need plain\nrows without model hydration.\n\n**WHERE operators**: `=`, `>`, `<`, `>=`, `<=`, `!=`, `in`, `not in`, `like`.\nArrays auto-detect `IN`. NULL is a value, not an operator: `{ deletedAt: null }`\nrenders `IS NULL` and `{ 'deletedAt !=': null }` renders `IS NOT NULL`.\n\nThis list is the set `@happyvertical/sql`'s `buildWhere` can execute, and\n`convertWhereKeys` accepts nothing outside it — an operator accepted here but\nunknown there fails inside the query builder, after the API said the query was\nvalid (#2276). Two entries were removed for that reason and now reject at the\nAPI boundary: `contains` (never existed in the SQL layer; use `like` with\nexplicit wildcards) and dot-notation JSON paths such as `metadata.userId` (never\nrewritten into an extraction expression, so they reached SQL as qualified column\nreferences). Re-adding either requires the query builder to support it first;\n`src/__tests__/issue-2276-where-contract.test.ts` executes every accepted\noperator against a database to keep the two in step.\n\nSTI child collections auto-filter by `_meta_type`.\n\n## Bounded Collection Read Plans\n\nUse `executeCollectionReadPlan()` when one operation needs several independent\ncollections. It bounds top-level `collection.list()` concurrency while keeping\nall reads on the normal registry/collection path. Callers must choose an\nexplicit positive `maxConcurrency` and pass their normal shared\n`collectionOptions` when database or tenant context matters.\n\nThe executor deliberately does not compose SQL, cache the plan, or change pool\ndefaults. On failure it stops starting queued entries, drains operations already\nin flight, and rethrows the first error.\n\n## Object Memory & Semantic Search\n\nTwo persistence primitives every `SmrtObject`/`SmrtCollection` inherits — load-bearing for learning agents, usable by any object. Full guide: `docs/content/core.md` → \"Context Memory System\".\n\n- **Context memory** (`remember`/`recall`/`recallAll`/`forget`/`forgetScope`, table `_smrt_contexts`): stores any JSON value keyed by `(owner_class, owner_id, scope, key, version)` with a `confidence` score (0–1) and a stored `expiresAt` (metadata — `recall()` does **not** filter expired rows; expiry is caller-managed). `recall()` returns the highest-confidence match with an optional `minConfidence` floor and **opt-in** hierarchical scope fallback (`includeAncestors: true` → `'a/b/c' → 'a/b' → 'a' → 'global'`; default off); `recallAll()` returns a `Map`. Typical use: cache a learned strategy (e.g. a working selector per host) and reuse it across sessions. `success_count`/`failure_count` columns exist for outcome-weighting: `SmrtObject.remember()` leaves them untouched, `SmrtCollection.remember()` resets them to zero, and neither recall path updates them. `LearningMemory` is the layer that maintains them (and that does filter expired rows).\n- **Semantic search** (on `SmrtCollection`, table `_smrt_embeddings`): `semanticSearch(query)`, `findSimilar(object)`, `findSimilarToEmbedding(vector)` — cosine ranking over embeddings of the fields declared in `@smrt({ embeddings })`. Native pgvector/HNSW when configured, in-memory `CosineSimilarity` fallback otherwise; default local model `Xenova/bge-base-en-v1.5` (768-dim) or AI `text-embedding-3-small`. Hits hydrate via `list({ 'id in': … })`, so `@TenantScoped` isolation applies to results.\n\n## @smrt() Decorator Options\n\nKey options: `tableName`, `tableStrategy` ('cti'|'sti'), `conflictColumns`, `api`/`mcp`/`cli` (generation config), `ai` (callable methods), `hooks` (beforeSave/afterSave/beforeDelete/afterDelete), `embeddings` (auto-generate), `tenantScoped`, `agent`, `ui` (`{ icon, label, description }` — nav/help hints round-tripped through the manifest as plain data; `description` is the object-level seed for form-level help, #2046).\n\nRegistration sets `SMRT_TABLE_NAME` static property (survives minification).\n\n## @field() UI hints (#2046)\n\n`@field({ ui: { basic, group, order, locked } })` — a static, presentation-only\nseed for the field-policy rail (epic #2045). Carried in the manifest under the\nfield's `_meta.ui` (never a top-level `FieldDefinition` key), readable at\nruntime via `getAllFields()` at `field._meta.ui`, and emitted (sanitized) with\n`description` into generated web-collection definitions and browser MCP tool\nschemas. No schema/persistence/security effect — `sensitive`/`readPermission`\nstay the security rail, and `sensitive`/`transient` fields never emit to the\nclient at all.\n\n## Domain Knowledge Artifacts\n\n`smrtPlugin()` writes runtime manifests and agent/developer knowledge artifacts:\n\n- local dev/build: `.smrt/manifest.json` and `.smrt/smrt-knowledge.json`\n- package build: `dist/manifest.json` and `dist/smrt-knowledge.json`\n\nKeep `manifest.json` runtime-focused. `smrt-knowledge.json` is the deterministic\nagent contract for downstream review and architecture tools.\n\nThe schema-version-1 object projection is additive and high-signal: it retains\nnormalized tenant mode/field, explicit `cti`/`sti` strategy, conflict columns,\nmethod signatures, and field defaults/constraints/readonly/transient flags.\nSensitive fields are removed before both `fields` and `relationships` are\nderived, including legacy flags stored under `_meta`; matching field and\nsnake-case column names are also removed from projected conflict columns, and a\nsensitive custom tenant field is omitted while retaining scope and mode.\nGenerated artifacts assert this boundary with `sensitiveFieldsExcluded: true`;\nthe optional marker keeps schema version 1 additive while letting readers\nidentify older artifacts that require raw-manifest corroboration.\n\nConfig precedence for knowledge is defaults → top-level `knowledge` in\n`smrt.config.ts` → `packages[packageName].knowledge` → plugin option →\nobject-level `@smrt({ knowledge })`.\n\nObject-level `knowledge: false` excludes an object from authored context only;\nit must not change runtime manifest registration. Use\n`knowledge: { tags, summary, risks }` for review-sensitive domain objects.\n\nHTTP knowledge routes are disabled by default. If `knowledge.api.enabled` is\ntrue, generated SvelteKit routes must stay GET-only and guarded by dev mode or\nadmin auth.\n\n## DispatchBus\n\n- `emit(signalType, payload, metadata)` → creates persistent Dispatch record\n- `on(pattern, handler)` → in-memory handler (immediate)\n- `subscribe({ signalType, subscriber })` → persistent subscription (survives restarts)\n- `process(subscriberName, handler)` → process pending dispatches\n- Wildcards: `campaign.*` matches `campaign.completed` (single segment only)\n- Tables: `_smrt_dispatch`, `_smrt_dispatch_subscriptions`\n- Status: `pending → processing → completed` (or `failed`)\n\n## Single Table Inheritance (STI)\n\n- Base: `@smrt({ tableStrategy: 'sti' })` — children inherit, share one table\n- Discriminator: `_meta_type` column with qualified names (`@happyvertical/smrt-content:Article`)\n- Child fields: `@meta()` decorator → stored in `_meta_data` JSONB (not as columns)\n- Polymorphic queries: collection loads `_meta_type`, creates correct subclass dynamically\n- Validation: fail-fast on save if `_meta_type` missing or mismatched\n\n## Child Accessors (R10)\n\n`src/child-accessors.ts` installs a consistent `get<FieldName>()` instance method for every `@oneToMany` field at `@smrt()` registration time (e.g. `@oneToMany('OrderItem') items` → `order.getItems()`), delegating to `loadRelatedMany`. Two invariants:\n\n- **Additive** — never overwrites a hand-rolled method of the same name (checks the whole prototype chain). `Profile.getMetadata()` (key-value) and `ProfileRelationship.getTerms()` are preserved.\n- **Runtime-only** — attached to the prototype, invisible to the build-time manifest, so it never leaks into the REST/CLI/MCP surface.\n\nWhen the target declares multiple FKs back to the parent, annotate `@oneToMany(Target, { foreignKey: '<inverseField>' })`; `loadRelatedMany` and the eager `include:` loader both honor it (else first-match).\n\n## Vite Plugin\n\n```typescript\n// vite.config.ts — required for @smrt() decorators (Vite 8+, oxc transform)\nexport default defineConfig({\n oxc: {\n decorator: {\n legacy: true,\n emitDecoratorMetadata: true,\n },\n },\n});\n```\n\nUnder Vite 8 the oxc transform does not honor the pre-Vite-8 `esbuild.tsconfigRaw`\nrecipe (or tsconfig `experimentalDecorators` reached through SvelteKit's\n`extends \"./.svelte-kit/tsconfig.json\"` chain), so that recipe throws\n`SyntaxError: Invalid or unexpected token` on the first SSR request. Configure\ndecorators through `oxc.decorator` instead. Consumers still pinned on vite<8 need\nthe legacy `esbuild.tsconfigRaw` form with `experimentalDecorators: true,\nemitDecoratorMetadata: true`.\n\nFor independent CI invocations, both `smrtPlugin()` and `smrtConsumer()` accept\nthe same `generationSnapshot: { path, sha256, provenance, sourceRoot }`. The\nschema-v1 snapshot produced by `serializeSmrtGenerationSnapshot()` contains the\nmerged project/dependency manifest, portable source paths, and source-file\ndigests; each plugin selects its own view. Reuse mode fails closed on\nbyte/provenance/path/content drift, skips scans and manifest writes, and still\ngenerates routes, types, registration, and virtual modules. Omit it for normal\nlocal development and watch mode.\n\n## Gotchas\n\n- **Filesystem support is a lazy boundary (#1979)**: `SmrtClass` acquires `options.fs` adapters via `createFilesystemAdapter()` (`src/filesystem-loader.ts`), never a static `@happyvertical/files` import — the files SDK statically pulls @aws-sdk/client-s3 and reaches googleapis, and a static edge here would land it in every downstream SSR bundle. Node/tsx/vite-dev runtimes resolve it on first use; fully-bundled deployments import `@happyvertical/smrt-core/filesystem` at startup. Use `importOptionalDependency()` (`src/lazy-external.ts`) for any similar optional heavyweight dependency.\n- **Never override toJSON()** — handles STI discriminator + meta field extraction. Use `transformJSON()`\n- **Property init order**: TypeScript initializers run first, then `initialize()` applies option values (options win)\n- **No runtime schema creation**: application tables must be prepared explicitly via migrations/tooling; runtime only verifies and fails clearly\n- **Retry logic**: `db.get()` (3 retries, 250ms) and `db.upsert()` (3 retries, 500ms) have built-in retry\n- **Field caching**: `_cachedFields` populated during `Collection.create()` — eliminates async `getFields()` per query\n- **Smart cloning**: arrays/objects shallow-cloned in property init to prevent aliasing (Issue #22)\n- **Table verification cache**: `isTableVerified(dbUrl, tableName)` avoids redundant `tableExists()` calls\n- **Manifest required**: build-time AST scanning creates manifest. Without vitest plugin → \"No field metadata\"\n- **ManifestBuilder fails on scanner errors**: every production manifest path\n must abort before adapting partial scan results. A syntax error or unresolved\n `@smrt()` config spread cannot be allowed to emit a default-open manifest.\n- **Vite plugin loads scanner from `dist/` first**: `src/vite-plugin/import-build-aware.ts` prefers `dist/` when it exists on disk; it only falls back to `src/` on fresh clones. So if you edit `src/scanner/*.ts` or `src/schema/generator.ts` and want those edits reflected in consumer manifest generation, you must rebuild (`pnpm build` or have `pnpm dev` / `pnpm build:watch` running in core). This is intentional — sniffing `.ts` vs `.js` via `import.meta.url` was non-deterministic under tsx and broke 12–13 publishes (#1139).\n- **Bundled registry ownership**: flattened production bundles can rewrite constructor names and make decorator-time stack inference attribute provider code to the consumer. Generated registration repairs identity only from the exact imported constructor plus an explicit package and isolated one-object manifest; never infer ownership from output paths, simple names, or table names. Distinct packages may export the same simple name under qualified keys. The production-consumer gate lives in `packages/bundle-gate/src/__tests__/registry-identity.spec.ts` (#2308).\n",
915
915
  "moduleDocs": [
916
916
  {
917
917
  "path": "agents/change-feed.md",
@@ -1,11 +1,19 @@
1
1
  import { DomainKnowledgeConfig } from '@happyvertical/smrt-types';
2
2
  import { Plugin } from 'vite';
3
+ import { SmrtGenerationSnapshotOptions } from '../generation-snapshot.js';
3
4
  import { SmartObjectManifest } from '../scanner/types.js';
5
+ export { loadVerifiedSmrtGenerationSnapshot, type SerializeSmrtGenerationSnapshotOptions, type SmrtGenerationSnapshotArtifact, type SmrtGenerationSnapshotOptions, type SmrtGenerationSnapshotView, serializeSmrtGenerationSnapshot, sha256SmrtGenerationSnapshot, } from '../generation-snapshot.js';
4
6
  export type { CliApiCoherenceViolation, SvelteKitOptions, } from './sveltekit-generator.js';
5
7
  export { findCliApiCoherenceViolations, generateSvelteKitRoutes, methodNameToKebab, resolveApiActionRouteConfig, resolveApiActionSet, validateCliIncludeAgainstApi, } from './sveltekit-generator.js';
6
8
  export interface SmrtPluginOptions {
7
9
  /** Root directory that owns generated manifests and SvelteKit routes. */
8
10
  projectRoot?: string;
11
+ /**
12
+ * Reuse an immutable, verified manifest instead of scanning sources or
13
+ * writing manifest files. Generated routes, virtual modules, and type
14
+ * declarations still consume the verified manifest.
15
+ */
16
+ generationSnapshot?: SmrtGenerationSnapshotOptions;
9
17
  /** Glob patterns for SMRT source files */
10
18
  include?: string[];
11
19
  /** Patterns to exclude */