@happyvertical/smrt-core 0.40.60 → 0.40.61
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.
- package/dist/generated-client-runtime.d.ts +6 -5
- package/dist/generated-client-runtime.d.ts.map +1 -1
- package/dist/generated-client-runtime.js +49 -14
- package/dist/generated-client-runtime.js.map +1 -1
- package/dist/generators/index.d.ts +3 -2
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +3 -2
- package/dist/generators/mcp-runtime-template.d.ts +5 -0
- package/dist/generators/mcp-runtime-template.d.ts.map +1 -1
- package/dist/generators/mcp-runtime-template.js +9 -2
- package/dist/generators/mcp-runtime-template.js.map +1 -1
- package/dist/generators/mcp.d.ts +47 -0
- package/dist/generators/mcp.d.ts.map +1 -1
- package/dist/generators/mcp.js +64 -11
- package/dist/generators/mcp.js.map +1 -1
- package/dist/generators/rest.d.ts.map +1 -1
- package/dist/generators/rest.js +3 -0
- package/dist/generators/rest.js.map +1 -1
- package/dist/generators/typed-http-error.d.ts +16 -0
- package/dist/generators/typed-http-error.d.ts.map +1 -0
- package/dist/generators/typed-http-error.js +17 -0
- package/dist/generators/typed-http-error.js.map +1 -0
- package/dist/generators.js +3 -2
- package/dist/index.js +3 -2
- package/dist/manifest/static-manifest.js +1 -1
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +1 -1
- package/dist/manifest.json +1 -1
- package/dist/prebuild/index.d.ts.map +1 -1
- package/dist/prebuild/index.js +13 -1
- package/dist/prebuild/index.js.map +1 -1
- package/dist/registry/types.d.ts +15 -0
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/smrt-knowledge.json +3 -3
- package/dist/vite-plugin/index.d.ts +2 -0
- package/dist/vite-plugin/index.d.ts.map +1 -1
- package/dist/vite-plugin/index.js +24 -11
- package/dist/vite-plugin/index.js.map +1 -1
- package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -1
- package/dist/vite-plugin/sveltekit-generator.js +94 -26
- package/dist/vite-plugin/sveltekit-generator.js.map +1 -1
- package/dist/vite-plugin/web-collections.d.ts +1 -0
- package/dist/vite-plugin/web-collections.d.ts.map +1 -1
- package/dist/vite-plugin/web-collections.js +17 -2
- package/dist/vite-plugin/web-collections.js.map +1 -1
- package/package.json +5 -5
- package/dist/manifest/test-manifest-loader.d.ts +0 -3
- package/dist/manifest/test-manifest-loader.d.ts.map +0 -1
- package/dist/manifest/test-manifest-stub.d.ts +0 -4
- package/dist/manifest/test-manifest-stub.d.ts.map +0 -1
- package/dist/manifest/test-manifest-stub.js +0 -77056
- package/dist/manifest/test-manifest-stub.js.map +0 -1
package/dist/manifest/store.js
CHANGED
|
@@ -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,ewogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAidGltZXN0YW1wIjogMCwKICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAicGFja2FnZVZlcnNpb24iOiAiMC40MC42MCIsCiAgIm9iamVjdHMiOiB7CiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRDbGFzcyI6IHsKICAgICAgIm5hbWUiOiAic21ydGNsYXNzIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q2xhc3MiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydGNsYXNzZXMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvY2xhc3MudHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiZ2V0QWlVc2FnZVNuYXBzaG90IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0QWlVc2FnZVNuYXBzaG90IiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFpVXNhZ2VTbmFwc2hvdCB8IHVuZGVmaW5lZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZXNldEFpVXNhZ2UiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXNldEFpVXNhZ2UiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QWlVc2FnZSI6IHsKICAgICAgICAgICJuYW1lIjogImxpc3RBaVVzYWdlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpVXNhZ2VMaXN0T3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxTbXJ0QWlVc2FnZVJlY29yZFtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzdW1tYXJpemVBaVVzYWdlIjogewogICAgICAgICAgIm5hbWUiOiAic3VtbWFyaXplQWlVc2FnZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaVVzYWdlU3VtbWFyeU9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZywgQWlVc2FnZVN0YXRzPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZGVzdHJveSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc3Ryb3kiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb25FeHBvcnROYW1lIjogIlNtcnRDbGFzc0NvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jbGFzc2VzIiwKICAgICAgICAiZGRsIjogIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIFwic21ydF9jbGFzc2VzXCIgKFxuICBcImlkXCIgVVVJRCBQUklNQVJZIEtFWSBOT1QgTlVMTCxcbiAgXCJzbHVnXCIgVEVYVCBOT1QgTlVMTCxcbiAgXCJjb250ZXh0XCIgVEVYVCBOT1QgTlVMTCBERUZBVUxUICcnLFxuICBcImNyZWF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcCxcbiAgXCJ1cGRhdGVkX2F0XCIgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXBcbik7IiwKICAgICAgICAiY29sdW1ucyI6IHsKICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVVVJRCIsCiAgICAgICAgICAgICJwcmltYXJ5S2V5IjogdHJ1ZSwKICAgICAgICAgICAgInJlZmVyZW5jZUtpbmQiOiAiaWQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAic2x1ZyI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJjb250ZXh0IjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICIiCiAgICAgICAgICB9LAogICAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9LAogICAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5kZXhlcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX3NsdWdfY29udGV4dF9pZHgiLAogICAgICAgICAgICAiY29sdW1ucyI6IFsKICAgICAgICAgICAgICAic2x1ZyIsCiAgICAgICAgICAgICAgImNvbnRleHQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1bmlxdWUiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAidmVyc2lvbiI6ICIyMzRhNzJiMCIKICAgICAgfQogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENvbGxlY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRjb2xsZWN0aW9uIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRjb2xsZWN0aW9ucyIsCiAgICAgICJmaWxlUGF0aCI6ICJwYWNrYWdlcy9jb3JlL3NyYy9jb2xsZWN0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7fSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgImdldEl0ZW1DbGFzcyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEl0ZW1DbGFzcyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJTbXJ0Q29sbGVjdGlvbkl0ZW1DbGFzczxNb2RlbFR5cGU+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,ewogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAidGltZXN0YW1wIjogMCwKICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAicGFja2FnZVZlcnNpb24iOiAiMC40MC42MCIsCiAgIm9iamVjdHMiOiB7CiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRDbGFzcyI6IHsKICAgICAgIm5hbWUiOiAic21ydGNsYXNzIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q2xhc3MiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydGNsYXNzZXMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvY2xhc3MudHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiZ2V0QWlVc2FnZVNuYXBzaG90IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0QWlVc2FnZVNuYXBzaG90IiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFpVXNhZ2VTbmFwc2hvdCB8IHVuZGVmaW5lZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZXNldEFpVXNhZ2UiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXNldEFpVXNhZ2UiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QWlVc2FnZSI6IHsKICAgICAgICAgICJuYW1lIjogImxpc3RBaVVzYWdlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpVXNhZ2VMaXN0T3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxTbXJ0QWlVc2FnZVJlY29yZFtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzdW1tYXJpemVBaVVzYWdlIjogewogICAgICAgICAgIm5hbWUiOiAic3VtbWFyaXplQWlVc2FnZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaVVzYWdlU3VtbWFyeU9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZywgQWlVc2FnZVN0YXRzPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZGVzdHJveSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc3Ryb3kiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb25FeHBvcnROYW1lIjogIlNtcnRDbGFzc0NvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jbGFzc2VzIiwKICAgICAgICAiZGRsIjogIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIFwic21ydF9jbGFzc2VzXCIgKFxuICBcImlkXCIgVVVJRCBQUklNQVJZIEtFWSBOT1QgTlVMTCxcbiAgXCJzbHVnXCIgVEVYVCBOT1QgTlVMTCxcbiAgXCJjb250ZXh0XCIgVEVYVCBOT1QgTlVMTCBERUZBVUxUICcnLFxuICBcImNyZWF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcCxcbiAgXCJ1cGRhdGVkX2F0XCIgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXBcbik7IiwKICAgICAgICAiY29sdW1ucyI6IHsKICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVVVJRCIsCiAgICAgICAgICAgICJwcmltYXJ5S2V5IjogdHJ1ZSwKICAgICAgICAgICAgInJlZmVyZW5jZUtpbmQiOiAiaWQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAic2x1ZyI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJjb250ZXh0IjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICIiCiAgICAgICAgICB9LAogICAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9LAogICAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5kZXhlcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX3NsdWdfY29udGV4dF9pZHgiLAogICAgICAgICAgICAiY29sdW1ucyI6IFsKICAgICAgICAgICAgICAic2x1ZyIsCiAgICAgICAgICAgICAgImNvbnRleHQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1bmlxdWUiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAidmVyc2lvbiI6ICIyMzRhNzJiMCIKICAgICAgfQogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENvbGxlY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRjb2xsZWN0aW9uIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRjb2xsZWN0aW9ucyIsCiAgICAgICJmaWxlUGF0aCI6ICJwYWNrYWdlcy9jb3JlL3NyYy9jb2xsZWN0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7fSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgImdldEl0ZW1DbGFzcyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEl0ZW1DbGFzcyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJTbXJ0Q29sbGVjdGlvbkl0ZW1DbGFzczxNb2RlbFR5cGU+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,ewogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAidGltZXN0YW1wIjogMCwKICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAicGFja2FnZVZlcnNpb24iOiAiMC40MC42MSIsCiAgIm9iamVjdHMiOiB7CiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRDbGFzcyI6IHsKICAgICAgIm5hbWUiOiAic21ydGNsYXNzIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q2xhc3MiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydGNsYXNzZXMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvY2xhc3MudHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiZ2V0QWlVc2FnZVNuYXBzaG90IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0QWlVc2FnZVNuYXBzaG90IiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFpVXNhZ2VTbmFwc2hvdCB8IHVuZGVmaW5lZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZXNldEFpVXNhZ2UiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXNldEFpVXNhZ2UiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QWlVc2FnZSI6IHsKICAgICAgICAgICJuYW1lIjogImxpc3RBaVVzYWdlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpVXNhZ2VMaXN0T3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxTbXJ0QWlVc2FnZVJlY29yZFtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzdW1tYXJpemVBaVVzYWdlIjogewogICAgICAgICAgIm5hbWUiOiAic3VtbWFyaXplQWlVc2FnZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaVVzYWdlU3VtbWFyeU9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZywgQWlVc2FnZVN0YXRzPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZGVzdHJveSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc3Ryb3kiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb25FeHBvcnROYW1lIjogIlNtcnRDbGFzc0NvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jbGFzc2VzIiwKICAgICAgICAiZGRsIjogIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIFwic21ydF9jbGFzc2VzXCIgKFxuICBcImlkXCIgVVVJRCBQUklNQVJZIEtFWSBOT1QgTlVMTCxcbiAgXCJzbHVnXCIgVEVYVCBOT1QgTlVMTCxcbiAgXCJjb250ZXh0XCIgVEVYVCBOT1QgTlVMTCBERUZBVUxUICcnLFxuICBcImNyZWF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcCxcbiAgXCJ1cGRhdGVkX2F0XCIgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXBcbik7IiwKICAgICAgICAiY29sdW1ucyI6IHsKICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVVVJRCIsCiAgICAgICAgICAgICJwcmltYXJ5S2V5IjogdHJ1ZSwKICAgICAgICAgICAgInJlZmVyZW5jZUtpbmQiOiAiaWQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAic2x1ZyI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJjb250ZXh0IjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICIiCiAgICAgICAgICB9LAogICAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9LAogICAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5kZXhlcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX3NsdWdfY29udGV4dF9pZHgiLAogICAgICAgICAgICAiY29sdW1ucyI6IFsKICAgICAgICAgICAgICAic2x1ZyIsCiAgICAgICAgICAgICAgImNvbnRleHQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1bmlxdWUiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAidmVyc2lvbiI6ICIyMzRhNzJiMCIKICAgICAgfQogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENvbGxlY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRjb2xsZWN0aW9uIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRjb2xsZWN0aW9ucyIsCiAgICAgICJmaWxlUGF0aCI6ICJwYWNrYWdlcy9jb3JlL3NyYy9jb2xsZWN0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7fSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgImdldEl0ZW1DbGFzcyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEl0ZW1DbGFzcyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJTbXJ0Q29sbGVjdGlvbkl0ZW1DbGFzczxNb2RlbFR5cGU+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,ewogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAidGltZXN0YW1wIjogMCwKICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAicGFja2FnZVZlcnNpb24iOiAiMC40MC42MSIsCiAgIm9iamVjdHMiOiB7CiAgICAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlOlNtcnRDbGFzcyI6IHsKICAgICAgIm5hbWUiOiAic21ydGNsYXNzIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q2xhc3MiLAogICAgICAicXVhbGlmaWVkTmFtZSI6ICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb24iOiAic21ydGNsYXNzZXMiLAogICAgICAiZmlsZVBhdGgiOiAicGFja2FnZXMvY29yZS9zcmMvY2xhc3MudHMiLAogICAgICAicGFja2FnZU5hbWUiOiAiQGhhcHB5dmVydGljYWwvc21ydC1jb3JlIiwKICAgICAgImZpZWxkcyI6IHt9LAogICAgICAibWV0aG9kcyI6IHsKICAgICAgICAiZ2V0QWlVc2FnZVNuYXBzaG90IjogewogICAgICAgICAgIm5hbWUiOiAiZ2V0QWlVc2FnZVNuYXBzaG90IiwKICAgICAgICAgICJhc3luYyI6IGZhbHNlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIkFpVXNhZ2VTbmFwc2hvdCB8IHVuZGVmaW5lZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZXNldEFpVXNhZ2UiOiB7CiAgICAgICAgICAibmFtZSI6ICJyZXNldEFpVXNhZ2UiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJsaXN0QWlVc2FnZSI6IHsKICAgICAgICAgICJuYW1lIjogImxpc3RBaVVzYWdlIiwKICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogIm9wdGlvbnMiLAogICAgICAgICAgICAgICJ0eXBlIjogIkFpVXNhZ2VMaXN0T3B0aW9ucyIsCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJldHVyblR5cGUiOiAiUHJvbWlzZTxTbXJ0QWlVc2FnZVJlY29yZFtdPiIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJzdW1tYXJpemVBaVVzYWdlIjogewogICAgICAgICAgIm5hbWUiOiAic3VtbWFyaXplQWlVc2FnZSIsCiAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJvcHRpb25zIiwKICAgICAgICAgICAgICAidHlwZSI6ICJBaVVzYWdlU3VtbWFyeU9wdGlvbnMiLAogICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXR1cm5UeXBlIjogIlByb21pc2U8UmVjb3JkPHN0cmluZywgQWlVc2FnZVN0YXRzPj4iLAogICAgICAgICAgImlzU3RhdGljIjogZmFsc2UsCiAgICAgICAgICAiaXNQdWJsaWMiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiZGVzdHJveSI6IHsKICAgICAgICAgICJuYW1lIjogImRlc3Ryb3kiLAogICAgICAgICAgImFzeW5jIjogZmFsc2UsCiAgICAgICAgICAicGFyYW1ldGVycyI6IFtdLAogICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIsCiAgICAgICAgICAiaXNTdGF0aWMiOiBmYWxzZSwKICAgICAgICAgICJpc1B1YmxpYyI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJkZWNvcmF0b3JDb25maWciOiB7fSwKICAgICAgImV4cG9ydE5hbWUiOiAiU21ydENsYXNzIiwKICAgICAgImNvbGxlY3Rpb25FeHBvcnROYW1lIjogIlNtcnRDbGFzc0NvbGxlY3Rpb24iLAogICAgICAic2NoZW1hIjogewogICAgICAgICJ0YWJsZU5hbWUiOiAic21ydF9jbGFzc2VzIiwKICAgICAgICAiZGRsIjogIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIFwic21ydF9jbGFzc2VzXCIgKFxuICBcImlkXCIgVVVJRCBQUklNQVJZIEtFWSBOT1QgTlVMTCxcbiAgXCJzbHVnXCIgVEVYVCBOT1QgTlVMTCxcbiAgXCJjb250ZXh0XCIgVEVYVCBOT1QgTlVMTCBERUZBVUxUICcnLFxuICBcImNyZWF0ZWRfYXRcIiBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcCxcbiAgXCJ1cGRhdGVkX2F0XCIgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXBcbik7IiwKICAgICAgICAiY29sdW1ucyI6IHsKICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVVVJRCIsCiAgICAgICAgICAgICJwcmltYXJ5S2V5IjogdHJ1ZSwKICAgICAgICAgICAgInJlZmVyZW5jZUtpbmQiOiAiaWQiLAogICAgICAgICAgICAibm90TnVsbCI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAic2x1ZyI6IHsKICAgICAgICAgICAgInR5cGUiOiAiVEVYVCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJjb250ZXh0IjogewogICAgICAgICAgICAidHlwZSI6ICJURVhUIiwKICAgICAgICAgICAgIm5vdE51bGwiOiB0cnVlLAogICAgICAgICAgICAiZGVmYXVsdCI6ICIiCiAgICAgICAgICB9LAogICAgICAgICAgImNyZWF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9LAogICAgICAgICAgInVwZGF0ZWRfYXQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIlRJTUVTVEFNUCIsCiAgICAgICAgICAgICJub3ROdWxsIjogdHJ1ZSwKICAgICAgICAgICAgImRlZmF1bHQiOiAiY3VycmVudF90aW1lc3RhbXAiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5kZXhlcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX2lkX2lkeCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic21ydF9jbGFzc2VzX3NsdWdfY29udGV4dF9pZHgiLAogICAgICAgICAgICAiY29sdW1ucyI6IFsKICAgICAgICAgICAgICAic2x1ZyIsCiAgICAgICAgICAgICAgImNvbnRleHQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1bmlxdWUiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAidmVyc2lvbiI6ICIyMzRhNzJiMCIKICAgICAgfQogICAgfSwKICAgICJAaGFwcHl2ZXJ0aWNhbC9zbXJ0LWNvcmU6U21ydENvbGxlY3Rpb24iOiB7CiAgICAgICJuYW1lIjogInNtcnRjb2xsZWN0aW9uIiwKICAgICAgImNsYXNzTmFtZSI6ICJTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJxdWFsaWZpZWROYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZTpTbXJ0Q29sbGVjdGlvbiIsCiAgICAgICJjb2xsZWN0aW9uIjogInNtcnRjb2xsZWN0aW9ucyIsCiAgICAgICJmaWxlUGF0aCI6ICJwYWNrYWdlcy9jb3JlL3NyYy9jb2xsZWN0aW9uLnRzIiwKICAgICAgInBhY2thZ2VOYW1lIjogIkBoYXBweXZlcnRpY2FsL3NtcnQtY29yZSIsCiAgICAgICJmaWVsZHMiOiB7fSwKICAgICAgIm1ldGhvZHMiOiB7CiAgICAgICAgImdldEl0ZW1DbGFzcyI6IHsKICAgICAgICAgICJuYW1lIjogImdldEl0ZW1DbGFzcyIsCiAgICAgICAgICAiYXN5bmMiOiBmYWxzZSwKICAgICAgICAgICJwYXJhbWV0ZXJzIjogW10sCiAgICAgICAgICAicmV0dXJuVHlwZSI6ICJTbXJ0Q29sbGVjdGlvbkl0ZW1DbGFzczxNb2RlbFR5cGU+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"));
|
package/dist/manifest.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prebuild/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQ5D,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACvC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAkCf;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prebuild/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQ5D,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACvC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAiYD;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CAkBf"}
|
package/dist/prebuild/index.js
CHANGED
|
@@ -104,9 +104,17 @@ declare module '@smrt/manifest' {
|
|
|
104
104
|
* Auto-generated API client module declaration
|
|
105
105
|
*/
|
|
106
106
|
declare module '@smrt/client' {
|
|
107
|
+
/** Structured custom-action failure nested under an API error body's \`error\` key. */
|
|
108
|
+
export interface SmrtClientFailure {
|
|
109
|
+
ok: false;
|
|
110
|
+
code: string;
|
|
111
|
+
message: string;
|
|
112
|
+
status?: number;
|
|
113
|
+
}
|
|
114
|
+
|
|
107
115
|
/** Shape of a JSON error body carried by a rejected request (SmrtClientError.body). */
|
|
108
116
|
export interface ApiError {
|
|
109
|
-
error?: string;
|
|
117
|
+
error?: string | SmrtClientFailure;
|
|
110
118
|
message?: string;
|
|
111
119
|
}
|
|
112
120
|
|
|
@@ -114,6 +122,8 @@ declare module '@smrt/client' {
|
|
|
114
122
|
export interface SmrtClientError extends Error {
|
|
115
123
|
name: 'SmrtClientError';
|
|
116
124
|
status: number;
|
|
125
|
+
/** Machine-readable code from a structured custom-action failure, when present. */
|
|
126
|
+
code?: string;
|
|
117
127
|
body?: ApiError | string;
|
|
118
128
|
}
|
|
119
129
|
|
|
@@ -255,6 +265,8 @@ declare module '@smrt/web' {
|
|
|
255
265
|
|
|
256
266
|
export interface SmrtWebCollectionDefinition<TData = Record<string, unknown>> {
|
|
257
267
|
name: string;
|
|
268
|
+
/** Canonical qualified model identity (\`@package/name:ClassName\`) for policy APIs. */
|
|
269
|
+
objectRef: string;
|
|
258
270
|
className: string;
|
|
259
271
|
endpoint: string;
|
|
260
272
|
idField: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/prebuild/index.ts"],"sourcesContent":["/**\n * Pre-build utilities for generating TypeScript declarations\n * Solves virtual module resolution by creating physical .d.ts files\n */\n\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport type { SmartObjectManifest } from '../scanner/types';\nimport {\n renderApiClientCrudType,\n renderApiClientCustomMethodParameters,\n selectApiClientEntries,\n} from '../vite-plugin/api-client-entries.js';\nimport { selectWebCollectionEntries } from '../vite-plugin/web-collections.js';\n\nexport interface PrebuildOptions {\n /** Path to manifest file or manifest object */\n manifest: string | SmartObjectManifest;\n /** Output directory for generated types */\n outDir: string;\n /** Include virtual module declarations */\n includeVirtualModules?: boolean;\n /** Include object type definitions */\n includeObjectTypes?: boolean;\n /** Project root path for resolving relative paths */\n projectRoot?: string;\n}\n\n/**\n * Generate TypeScript declaration files from SMRT manifest\n */\nexport async function generateDeclarations(\n options: PrebuildOptions,\n): Promise<void> {\n const {\n manifest: manifestInput,\n outDir,\n includeVirtualModules = true,\n includeObjectTypes = true,\n projectRoot = process.cwd(),\n } = options;\n\n // Load manifest\n const manifest: SmartObjectManifest =\n typeof manifestInput === 'string'\n ? JSON.parse(fs.readFileSync(manifestInput, 'utf-8'))\n : manifestInput;\n\n // Ensure output directory exists\n const fullOutDir = path.isAbsolute(outDir)\n ? outDir\n : path.join(projectRoot, outDir);\n fs.mkdirSync(fullOutDir, { recursive: true });\n\n console.log(`[smrt:prebuild] Generating declarations to ${fullOutDir}`);\n\n if (includeObjectTypes) {\n await generateObjectTypeDeclarations(manifest, fullOutDir);\n }\n\n if (includeVirtualModules) {\n await generateVirtualModuleDeclarations(manifest, fullOutDir);\n }\n\n console.log(\n `[smrt:prebuild] Generated declarations for ${Object.keys(manifest.objects).length} SMRT objects`,\n );\n}\n\n/**\n * Generate TypeScript interfaces for SMRT objects\n */\nasync function generateObjectTypeDeclarations(\n manifest: SmartObjectManifest,\n outDir: string,\n): Promise<void> {\n const interfaces: string[] = [];\n\n // Generate interfaces for each discovered SMRT object\n for (const [_objectName, objectMeta] of Object.entries(manifest.objects)) {\n const fields = objectMeta.fields || {};\n const propertyLines: string[] = [];\n\n // Add standard SmrtObject properties\n propertyLines.push(' id?: string;');\n propertyLines.push(' created_at?: string;');\n propertyLines.push(' updated_at?: string;');\n\n // Add object-specific properties\n for (const [fieldName, fieldDef] of Object.entries(fields)) {\n const type = mapFieldTypeToTypeScript(fieldDef.type);\n const optional = !fieldDef.required ? '?' : '';\n propertyLines.push(` ${fieldName}${optional}: ${type};`);\n }\n\n const interfaceDef = `export interface ${objectMeta.className}Data {\n${propertyLines.join('\\n')}\n}`;\n interfaces.push(interfaceDef);\n }\n\n // Write object types file\n const objectTypesContent = `/**\n * Auto-generated TypeScript interfaces for SMRT objects\n * Generated at build time from @smrt() decorated classes\n *\n * DO NOT EDIT THIS FILE MANUALLY\n */\n\n${interfaces.join('\\n\\n')}\n`;\n\n fs.writeFileSync(path.join(outDir, 'smrt-objects.d.ts'), objectTypesContent);\n}\n\n/**\n * Generate virtual module declarations\n */\nasync function generateVirtualModuleDeclarations(\n manifest: SmartObjectManifest,\n outDir: string,\n): Promise<void> {\n // Generate manifest module declaration\n const manifestDeclaration = `/**\n * Auto-generated manifest module declaration\n */\ndeclare module '@smrt/manifest' {\n export interface SmrtObjectField {\n type: string;\n required?: boolean;\n default?: any;\n }\n\n export interface SmrtObjectMethod {\n name: string;\n parameters: Array<{\n name: string;\n type: string;\n optional?: boolean;\n default?: any;\n }>;\n returnType: string;\n async: boolean;\n isStatic: boolean;\n isPublic: boolean;\n }\n\n export interface SmrtObjectDefinition {\n name: string;\n className: string;\n collection: string;\n filePath: string;\n fields: Record<string, SmrtObjectField>;\n methods: Record<string, SmrtObjectMethod>;\n decoratorConfig: any;\n extends?: string;\n }\n\n export interface SmrtManifest {\n version: string;\n timestamp: number;\n objects: Record<string, SmrtObjectDefinition>;\n }\n\n export const manifest: SmrtManifest;\n export default manifest;\n}`;\n\n // Generate client module declaration\n const apiClientInterface = selectApiClientEntries(manifest)\n .map(({ clientKey, dataInterfaceName, crudMethods, customMethods }) => {\n const overriddenMethods = customMethods.map(({ name }) => name);\n const crudType = renderApiClientCrudType(\n dataInterfaceName,\n crudMethods,\n overriddenMethods,\n );\n const customSignatures = customMethods\n .map(\n (method) =>\n ` ${method.name}(${renderApiClientCustomMethodParameters(\n method,\n mapFieldTypeToTypeScript,\n )}): Promise<any>;`,\n )\n .join('\\n');\n\n if (customSignatures) {\n const intersection = crudType ? `${crudType} & ` : '';\n return ` ${JSON.stringify(clientKey)}: ${intersection}{\\n${customSignatures}\\n };`;\n }\n\n return ` ${JSON.stringify(clientKey)}: ${crudType ?? 'Record<string, never>'};`;\n })\n .join('\\n');\n\n // Wire-shape policy (#1797): the server returns BARE JSON — a bare array for\n // list/search, a bare object for get/create/update — with snake_case field\n // names (created_at, updated_at). These physical declarations share client\n // entry selection and method-signature rendering with the Vite declaration.\n // Fetchers reject on non-2xx with a SmrtClientError (#1796).\n const clientDeclaration = `/**\n * Auto-generated API client module declaration\n */\ndeclare module '@smrt/client' {\n /** Shape of a JSON error body carried by a rejected request (SmrtClientError.body). */\n export interface ApiError {\n error?: string;\n message?: string;\n }\n\n /** Typed error thrown by every fetcher on a non-2xx response (#1796). */\n export interface SmrtClientError extends Error {\n name: 'SmrtClientError';\n status: number;\n body?: ApiError | string;\n }\n\n export interface CrudOperations<T = any> {\n list(params?: Record<string, any>): Promise<T[]>;\n get(id: string): Promise<T>;\n create(data: Partial<T>): Promise<T>;\n update(id: string, data: Partial<T>): Promise<T>;\n delete(id: string): Promise<boolean>;\n search(query: string): Promise<T[]>;\n }\n\n export interface ApiClient {\n${apiClientInterface}\n }\n\n export function createClient(basePath?: string): ApiClient;\n export default createClient;\n}`;\n\n // Generate routes module declaration\n const routesDeclaration = `/**\n * Auto-generated routes module declaration\n */\ndeclare module '@smrt/routes' {\n export interface RouteApp {\n get(path: string, handler: (req: any, res: any) => void): void;\n post(path: string, handler: (req: any, res: any) => void): void;\n put(path: string, handler: (req: any, res: any) => void): void;\n delete(path: string, handler: (req: any, res: any) => void): void;\n }\n\n export function setupRoutes(app: RouteApp): void;\n export default setupRoutes;\n}`;\n\n // Generate MCP module declaration\n const mcpDeclaration = `/**\n * Auto-generated MCP module declaration\n */\ndeclare module '@smrt/mcp' {\n export interface McpTool {\n name: string;\n description: string;\n inputSchema: {\n type: string;\n properties: Record<string, any>;\n required?: string[];\n };\n }\n\n export const tools: McpTool[];\n export function createMCPServer(): {\n name: string;\n version: string;\n tools: McpTool[]\n };\n export default createMCPServer;\n}`;\n\n // Generate types module declaration with object imports\n const objectImports = Object.values(manifest.objects)\n .map(\n (obj) =>\n ` export type ${obj.className}Data = import('./smrt-objects').${obj.className}Data;`,\n )\n .join('\\n');\n\n const typesDeclaration = `/**\n * Auto-generated types module declaration\n */\ndeclare module '@smrt/types' {\n${objectImports}\n\n export interface Request {\n params: Record<string, string>;\n query: Record<string, any>;\n json(): Promise<any>;\n }\n\n export interface Response {\n json(data: any, init?: { status?: number }): Response;\n status(code: number): Response;\n }\n}`;\n\n // Generate web collection-definition module declaration (#1761). Selection\n // shares selectWebCollectionEntries with the vite-plugin runtime module and\n // its virt-web d.ts, so this `tsc`-only consumer declaration cannot drift\n // from the emitted values.\n const webCollectionEntries = selectWebCollectionEntries(manifest)\n .map(\n ({ collection, obj }) =>\n ` ${JSON.stringify(collection)}: SmrtWebCollectionDefinition<import('./smrt-objects').${obj.className}Data>;`,\n )\n .join('\\n');\n\n const webDeclaration = `/**\n * Auto-generated web collection-definition module declaration (#1761)\n */\ndeclare module '@smrt/web' {\n export type SmrtWebFieldType =\n | 'text'\n | 'decimal'\n | 'boolean'\n | 'integer'\n | 'datetime'\n | 'json'\n | 'foreignKey'\n | 'crossPackageRef';\n\n /** Static \\`@field({ ui })\\` hints (#2046) — the field-policy rail seed. */\n export interface SmrtWebFieldUIHints {\n basic?: boolean;\n group?: string;\n order?: number;\n locked?: boolean;\n }\n\n export interface SmrtWebFieldDefinition {\n type: SmrtWebFieldType;\n required?: boolean;\n nullable?: boolean;\n default?: unknown;\n /** Developer-authored \\`@field({ description })\\` (#2046) — end-user help seed. */\n description?: string;\n /** Static \\`@field({ ui })\\` hints (#2046). */\n ui?: SmrtWebFieldUIHints;\n }\n\n export type SmrtWebRelationshipKind =\n | 'foreignKey'\n | 'crossPackageRef'\n | 'oneToMany'\n | 'manyToMany';\n\n /**\n * A manifest-derived edge to a sibling REST collection. Mutating this\n * collection invalidates the caches of the collections named by these edges\n * (#1761 relationship-derived invalidation).\n */\n export interface SmrtWebRelationship {\n field: string;\n kind: SmrtWebRelationshipKind;\n relatedCollection: string;\n }\n\n /** A WebMCP/MCP tool descriptor for one collection action (#1812). */\n export interface WebToolDescriptor {\n action: string;\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n readOnly: boolean;\n }\n\n export interface SmrtWebCollectionDefinition<TData = Record<string, unknown>> {\n name: string;\n className: string;\n endpoint: string;\n idField: string;\n actions: string[];\n fields: Record<string, SmrtWebFieldDefinition>;\n /** Manifest-derived relationship edges to sibling REST collections. */\n relationships: SmrtWebRelationship[];\n /** WebMCP/MCP tool descriptors for the exposed actions (#1812). */\n toolDescriptors: WebToolDescriptor[];\n /** Phantom row-type carrier for inference — never present at runtime. */\n _row?: TData;\n }\n\n export interface SmrtWebCollectionDefinitions {\n${webCollectionEntries}\n }\n\n export const collectionDefinitions: SmrtWebCollectionDefinitions;\n export function getCollectionDefinition<\n K extends keyof SmrtWebCollectionDefinitions,\n >(name: K): SmrtWebCollectionDefinitions[K];\n /**\n * Build-time web-collection shape digest (#1764). A deterministic,\n * replica-stable hash of the emitted collection definitions; a change means\n * old persisted client rows may mis-hydrate. Consumers fold it into the\n * durable persistence namespace and the version-awareness updateAvailable\n * contract signal.\n */\n export const manifestHash: string;\n export default collectionDefinitions;\n}`;\n\n // Write all virtual module declarations\n fs.writeFileSync(\n path.join(outDir, 'smrt-manifest.d.ts'),\n manifestDeclaration,\n );\n fs.writeFileSync(path.join(outDir, 'smrt-client.d.ts'), clientDeclaration);\n fs.writeFileSync(path.join(outDir, 'smrt-routes.d.ts'), routesDeclaration);\n fs.writeFileSync(path.join(outDir, 'smrt-mcp.d.ts'), mcpDeclaration);\n fs.writeFileSync(path.join(outDir, 'smrt-types.d.ts'), typesDeclaration);\n fs.writeFileSync(path.join(outDir, 'smrt-web.d.ts'), webDeclaration);\n}\n\n/**\n * Map SMRT field types to TypeScript types\n */\nfunction mapFieldTypeToTypeScript(smrtType: string): string {\n switch (smrtType) {\n case 'text':\n return 'string';\n case 'decimal':\n case 'integer':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'datetime':\n return 'string | Date';\n case 'json':\n return 'any';\n case 'foreignKey':\n return 'string';\n default:\n return 'any';\n }\n}\n\n/**\n * CLI command for generating declarations\n */\nexport async function generateDeclarationsFromCLI(\n args: string[],\n): Promise<void> {\n const manifestPath = args[0];\n const outDir = args[1] || 'src/types/generated';\n\n if (!manifestPath) {\n console.error('Usage: generate-declarations <manifest-path> [output-dir]');\n process.exit(1);\n }\n\n if (!fs.existsSync(manifestPath)) {\n console.error(`Manifest file not found: ${manifestPath}`);\n process.exit(1);\n }\n\n await generateDeclarations({\n manifest: manifestPath,\n outDir,\n });\n}\n"],"mappings":";;;;;;;;;;;;AA+BA,eAAsB,qBACpB,SACe;CACf,MAAM,EACJ,UAAU,eACV,QACA,wBAAwB,MACxB,qBAAqB,MACrB,cAAc,QAAQ,IAAI,MACxB;CAGJ,MAAM,WACJ,OAAO,kBAAkB,WACrB,KAAK,MAAM,GAAG,aAAa,eAAe,OAAO,CAAC,IAClD;CAGN,MAAM,aAAa,KAAK,WAAW,MAAM,IACrC,SACA,KAAK,KAAK,aAAa,MAAM;CACjC,GAAG,UAAU,YAAY,EAAE,WAAW,KAAK,CAAC;CAE5C,QAAQ,IAAI,8CAA8C,YAAY;CAEtE,IAAI,oBACF,MAAM,+BAA+B,UAAU,UAAU;CAG3D,IAAI,uBACF,MAAM,kCAAkC,UAAU,UAAU;CAG9D,QAAQ,IACN,8CAA8C,OAAO,KAAK,SAAS,OAAO,CAAC,CAAC,OAAO,cACrF;AACF;;;;AAKA,eAAe,+BACb,UACA,QACe;CACf,MAAM,aAAuB,CAAC;CAG9B,KAAK,MAAM,CAAC,aAAa,eAAe,OAAO,QAAQ,SAAS,OAAO,GAAG;EACxE,MAAM,SAAS,WAAW,UAAU,CAAC;EACrC,MAAM,gBAA0B,CAAC;EAGjC,cAAc,KAAK,gBAAgB;EACnC,cAAc,KAAK,wBAAwB;EAC3C,cAAc,KAAK,wBAAwB;EAG3C,KAAK,MAAM,CAAC,WAAW,aAAa,OAAO,QAAQ,MAAM,GAAG;GAC1D,MAAM,OAAO,yBAAyB,SAAS,IAAI;GACnD,MAAM,WAAW,CAAC,SAAS,WAAW,MAAM;GAC5C,cAAc,KAAK,KAAK,YAAY,SAAS,IAAI,KAAK,EAAE;EAC1D;EAEA,MAAM,eAAe,oBAAoB,WAAW,UAAU;EAChE,cAAc,KAAK,IAAI,EAAE;;EAEvB,WAAW,KAAK,YAAY;CAC9B;CAGA,MAAM,qBAAqB;;;;;;;EAO3B,WAAW,KAAK,MAAM,EAAE;;CAGxB,GAAG,cAAc,KAAK,KAAK,QAAQ,mBAAmB,GAAG,kBAAkB;AAC7E;;;;AAKA,eAAe,kCACb,UACA,QACe;CAEf,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8E5B,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAhCC,uBAAuB,QAAQ,CAAC,CACxD,KAAK,EAAE,WAAW,mBAAmB,aAAa,oBAAoB;EAErE,MAAM,WAAW,wBACf,mBACA,aAHwB,cAAc,KAAK,EAAE,WAAW,IAIxD,CACF;EACA,MAAM,mBAAmB,cACtB,KACE,WACC,SAAS,OAAO,KAAK,GAAG,sCACtB,QACA,wBACF,EAAE,iBACN,CAAC,CACA,KAAK,IAAI;EAEZ,IAAI,kBAAkB;GACpB,MAAM,eAAe,WAAW,GAAG,SAAS,OAAO;GACnD,OAAO,OAAO,KAAK,UAAU,SAAS,EAAE,IAAI,aAAa,KAAK,iBAAiB;EACjF;EAEA,OAAO,OAAO,KAAK,UAAU,SAAS,EAAE,IAAI,YAAY,wBAAwB;CAClF,CAAC,CAAC,CACD,KAAK,IAkCR,EAAmB;;;;;;CAQnB,MAAM,oBAAoB;;;;;;;;;;;;;;CAgB1B,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;CA+BvB,MAAM,mBAAmB;;;;EAPH,OAAO,OAAO,SAAS,OAAO,CAAC,CAClD,KACE,QACC,iBAAiB,IAAI,UAAU,kCAAkC,IAAI,UAAU,MACnF,CAAC,CACA,KAAK,IAMR,EAAc;;;;;;;;;;;;;CAyBd,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAPM,2BAA2B,QAAQ,CAAC,CAC9D,KACE,EAAE,YAAY,UACb,OAAO,KAAK,UAAU,UAAU,EAAE,yDAAyD,IAAI,UAAU,OAC7G,CAAC,CACA,KAAK,IA6ER,EAAqB;;;;;;;;;;;;;;;;;CAmBrB,GAAG,cACD,KAAK,KAAK,QAAQ,oBAAoB,GACtC,mBACF;CACA,GAAG,cAAc,KAAK,KAAK,QAAQ,kBAAkB,GAAG,iBAAiB;CACzE,GAAG,cAAc,KAAK,KAAK,QAAQ,kBAAkB,GAAG,iBAAiB;CACzE,GAAG,cAAc,KAAK,KAAK,QAAQ,eAAe,GAAG,cAAc;CACnE,GAAG,cAAc,KAAK,KAAK,QAAQ,iBAAiB,GAAG,gBAAgB;CACvE,GAAG,cAAc,KAAK,KAAK,QAAQ,eAAe,GAAG,cAAc;AACrE;;;;AAKA,SAAS,yBAAyB,UAA0B;CAC1D,QAAQ,UAAR;EACE,KAAK,QACH,OAAO;EACT,KAAK;EACL,KAAK,WACH,OAAO;EACT,KAAK,WACH,OAAO;EACT,KAAK,YACH,OAAO;EACT,KAAK,QACH,OAAO;EACT,KAAK,cACH,OAAO;EACT,SACE,OAAO;CACX;AACF;;;;AAKA,eAAsB,4BACpB,MACe;CACf,MAAM,eAAe,KAAK;CAC1B,MAAM,SAAS,KAAK,MAAM;CAE1B,IAAI,CAAC,cAAc;EACjB,QAAQ,MAAM,2DAA2D;EACzE,QAAQ,KAAK,CAAC;CAChB;CAEA,IAAI,CAAC,GAAG,WAAW,YAAY,GAAG;EAChC,QAAQ,MAAM,4BAA4B,cAAc;EACxD,QAAQ,KAAK,CAAC;CAChB;CAEA,MAAM,qBAAqB;EACzB,UAAU;EACV;CACF,CAAC;AACH"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/prebuild/index.ts"],"sourcesContent":["/**\n * Pre-build utilities for generating TypeScript declarations\n * Solves virtual module resolution by creating physical .d.ts files\n */\n\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport type { SmartObjectManifest } from '../scanner/types';\nimport {\n renderApiClientCrudType,\n renderApiClientCustomMethodParameters,\n selectApiClientEntries,\n} from '../vite-plugin/api-client-entries.js';\nimport { selectWebCollectionEntries } from '../vite-plugin/web-collections.js';\n\nexport interface PrebuildOptions {\n /** Path to manifest file or manifest object */\n manifest: string | SmartObjectManifest;\n /** Output directory for generated types */\n outDir: string;\n /** Include virtual module declarations */\n includeVirtualModules?: boolean;\n /** Include object type definitions */\n includeObjectTypes?: boolean;\n /** Project root path for resolving relative paths */\n projectRoot?: string;\n}\n\n/**\n * Generate TypeScript declaration files from SMRT manifest\n */\nexport async function generateDeclarations(\n options: PrebuildOptions,\n): Promise<void> {\n const {\n manifest: manifestInput,\n outDir,\n includeVirtualModules = true,\n includeObjectTypes = true,\n projectRoot = process.cwd(),\n } = options;\n\n // Load manifest\n const manifest: SmartObjectManifest =\n typeof manifestInput === 'string'\n ? JSON.parse(fs.readFileSync(manifestInput, 'utf-8'))\n : manifestInput;\n\n // Ensure output directory exists\n const fullOutDir = path.isAbsolute(outDir)\n ? outDir\n : path.join(projectRoot, outDir);\n fs.mkdirSync(fullOutDir, { recursive: true });\n\n console.log(`[smrt:prebuild] Generating declarations to ${fullOutDir}`);\n\n if (includeObjectTypes) {\n await generateObjectTypeDeclarations(manifest, fullOutDir);\n }\n\n if (includeVirtualModules) {\n await generateVirtualModuleDeclarations(manifest, fullOutDir);\n }\n\n console.log(\n `[smrt:prebuild] Generated declarations for ${Object.keys(manifest.objects).length} SMRT objects`,\n );\n}\n\n/**\n * Generate TypeScript interfaces for SMRT objects\n */\nasync function generateObjectTypeDeclarations(\n manifest: SmartObjectManifest,\n outDir: string,\n): Promise<void> {\n const interfaces: string[] = [];\n\n // Generate interfaces for each discovered SMRT object\n for (const [_objectName, objectMeta] of Object.entries(manifest.objects)) {\n const fields = objectMeta.fields || {};\n const propertyLines: string[] = [];\n\n // Add standard SmrtObject properties\n propertyLines.push(' id?: string;');\n propertyLines.push(' created_at?: string;');\n propertyLines.push(' updated_at?: string;');\n\n // Add object-specific properties\n for (const [fieldName, fieldDef] of Object.entries(fields)) {\n const type = mapFieldTypeToTypeScript(fieldDef.type);\n const optional = !fieldDef.required ? '?' : '';\n propertyLines.push(` ${fieldName}${optional}: ${type};`);\n }\n\n const interfaceDef = `export interface ${objectMeta.className}Data {\n${propertyLines.join('\\n')}\n}`;\n interfaces.push(interfaceDef);\n }\n\n // Write object types file\n const objectTypesContent = `/**\n * Auto-generated TypeScript interfaces for SMRT objects\n * Generated at build time from @smrt() decorated classes\n *\n * DO NOT EDIT THIS FILE MANUALLY\n */\n\n${interfaces.join('\\n\\n')}\n`;\n\n fs.writeFileSync(path.join(outDir, 'smrt-objects.d.ts'), objectTypesContent);\n}\n\n/**\n * Generate virtual module declarations\n */\nasync function generateVirtualModuleDeclarations(\n manifest: SmartObjectManifest,\n outDir: string,\n): Promise<void> {\n // Generate manifest module declaration\n const manifestDeclaration = `/**\n * Auto-generated manifest module declaration\n */\ndeclare module '@smrt/manifest' {\n export interface SmrtObjectField {\n type: string;\n required?: boolean;\n default?: any;\n }\n\n export interface SmrtObjectMethod {\n name: string;\n parameters: Array<{\n name: string;\n type: string;\n optional?: boolean;\n default?: any;\n }>;\n returnType: string;\n async: boolean;\n isStatic: boolean;\n isPublic: boolean;\n }\n\n export interface SmrtObjectDefinition {\n name: string;\n className: string;\n collection: string;\n filePath: string;\n fields: Record<string, SmrtObjectField>;\n methods: Record<string, SmrtObjectMethod>;\n decoratorConfig: any;\n extends?: string;\n }\n\n export interface SmrtManifest {\n version: string;\n timestamp: number;\n objects: Record<string, SmrtObjectDefinition>;\n }\n\n export const manifest: SmrtManifest;\n export default manifest;\n}`;\n\n // Generate client module declaration\n const apiClientInterface = selectApiClientEntries(manifest)\n .map(({ clientKey, dataInterfaceName, crudMethods, customMethods }) => {\n const overriddenMethods = customMethods.map(({ name }) => name);\n const crudType = renderApiClientCrudType(\n dataInterfaceName,\n crudMethods,\n overriddenMethods,\n );\n const customSignatures = customMethods\n .map(\n (method) =>\n ` ${method.name}(${renderApiClientCustomMethodParameters(\n method,\n mapFieldTypeToTypeScript,\n )}): Promise<any>;`,\n )\n .join('\\n');\n\n if (customSignatures) {\n const intersection = crudType ? `${crudType} & ` : '';\n return ` ${JSON.stringify(clientKey)}: ${intersection}{\\n${customSignatures}\\n };`;\n }\n\n return ` ${JSON.stringify(clientKey)}: ${crudType ?? 'Record<string, never>'};`;\n })\n .join('\\n');\n\n // Wire-shape policy (#1797): the server returns BARE JSON — a bare array for\n // list/search, a bare object for get/create/update — with snake_case field\n // names (created_at, updated_at). These physical declarations share client\n // entry selection and method-signature rendering with the Vite declaration.\n // Fetchers reject on non-2xx with a SmrtClientError (#1796).\n const clientDeclaration = `/**\n * Auto-generated API client module declaration\n */\ndeclare module '@smrt/client' {\n /** Structured custom-action failure nested under an API error body's \\`error\\` key. */\n export interface SmrtClientFailure {\n ok: false;\n code: string;\n message: string;\n status?: number;\n }\n\n /** Shape of a JSON error body carried by a rejected request (SmrtClientError.body). */\n export interface ApiError {\n error?: string | SmrtClientFailure;\n message?: string;\n }\n\n /** Typed error thrown by every fetcher on a non-2xx response (#1796). */\n export interface SmrtClientError extends Error {\n name: 'SmrtClientError';\n status: number;\n /** Machine-readable code from a structured custom-action failure, when present. */\n code?: string;\n body?: ApiError | string;\n }\n\n export interface CrudOperations<T = any> {\n list(params?: Record<string, any>): Promise<T[]>;\n get(id: string): Promise<T>;\n create(data: Partial<T>): Promise<T>;\n update(id: string, data: Partial<T>): Promise<T>;\n delete(id: string): Promise<boolean>;\n search(query: string): Promise<T[]>;\n }\n\n export interface ApiClient {\n${apiClientInterface}\n }\n\n export function createClient(basePath?: string): ApiClient;\n export default createClient;\n}`;\n\n // Generate routes module declaration\n const routesDeclaration = `/**\n * Auto-generated routes module declaration\n */\ndeclare module '@smrt/routes' {\n export interface RouteApp {\n get(path: string, handler: (req: any, res: any) => void): void;\n post(path: string, handler: (req: any, res: any) => void): void;\n put(path: string, handler: (req: any, res: any) => void): void;\n delete(path: string, handler: (req: any, res: any) => void): void;\n }\n\n export function setupRoutes(app: RouteApp): void;\n export default setupRoutes;\n}`;\n\n // Generate MCP module declaration\n const mcpDeclaration = `/**\n * Auto-generated MCP module declaration\n */\ndeclare module '@smrt/mcp' {\n export interface McpTool {\n name: string;\n description: string;\n inputSchema: {\n type: string;\n properties: Record<string, any>;\n required?: string[];\n };\n }\n\n export const tools: McpTool[];\n export function createMCPServer(): {\n name: string;\n version: string;\n tools: McpTool[]\n };\n export default createMCPServer;\n}`;\n\n // Generate types module declaration with object imports\n const objectImports = Object.values(manifest.objects)\n .map(\n (obj) =>\n ` export type ${obj.className}Data = import('./smrt-objects').${obj.className}Data;`,\n )\n .join('\\n');\n\n const typesDeclaration = `/**\n * Auto-generated types module declaration\n */\ndeclare module '@smrt/types' {\n${objectImports}\n\n export interface Request {\n params: Record<string, string>;\n query: Record<string, any>;\n json(): Promise<any>;\n }\n\n export interface Response {\n json(data: any, init?: { status?: number }): Response;\n status(code: number): Response;\n }\n}`;\n\n // Generate web collection-definition module declaration (#1761). Selection\n // shares selectWebCollectionEntries with the vite-plugin runtime module and\n // its virt-web d.ts, so this `tsc`-only consumer declaration cannot drift\n // from the emitted values.\n const webCollectionEntries = selectWebCollectionEntries(manifest)\n .map(\n ({ collection, obj }) =>\n ` ${JSON.stringify(collection)}: SmrtWebCollectionDefinition<import('./smrt-objects').${obj.className}Data>;`,\n )\n .join('\\n');\n\n const webDeclaration = `/**\n * Auto-generated web collection-definition module declaration (#1761)\n */\ndeclare module '@smrt/web' {\n export type SmrtWebFieldType =\n | 'text'\n | 'decimal'\n | 'boolean'\n | 'integer'\n | 'datetime'\n | 'json'\n | 'foreignKey'\n | 'crossPackageRef';\n\n /** Static \\`@field({ ui })\\` hints (#2046) — the field-policy rail seed. */\n export interface SmrtWebFieldUIHints {\n basic?: boolean;\n group?: string;\n order?: number;\n locked?: boolean;\n }\n\n export interface SmrtWebFieldDefinition {\n type: SmrtWebFieldType;\n required?: boolean;\n nullable?: boolean;\n default?: unknown;\n /** Developer-authored \\`@field({ description })\\` (#2046) — end-user help seed. */\n description?: string;\n /** Static \\`@field({ ui })\\` hints (#2046). */\n ui?: SmrtWebFieldUIHints;\n }\n\n export type SmrtWebRelationshipKind =\n | 'foreignKey'\n | 'crossPackageRef'\n | 'oneToMany'\n | 'manyToMany';\n\n /**\n * A manifest-derived edge to a sibling REST collection. Mutating this\n * collection invalidates the caches of the collections named by these edges\n * (#1761 relationship-derived invalidation).\n */\n export interface SmrtWebRelationship {\n field: string;\n kind: SmrtWebRelationshipKind;\n relatedCollection: string;\n }\n\n /** A WebMCP/MCP tool descriptor for one collection action (#1812). */\n export interface WebToolDescriptor {\n action: string;\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n readOnly: boolean;\n }\n\n export interface SmrtWebCollectionDefinition<TData = Record<string, unknown>> {\n name: string;\n /** Canonical qualified model identity (\\`@package/name:ClassName\\`) for policy APIs. */\n objectRef: string;\n className: string;\n endpoint: string;\n idField: string;\n actions: string[];\n fields: Record<string, SmrtWebFieldDefinition>;\n /** Manifest-derived relationship edges to sibling REST collections. */\n relationships: SmrtWebRelationship[];\n /** WebMCP/MCP tool descriptors for the exposed actions (#1812). */\n toolDescriptors: WebToolDescriptor[];\n /** Phantom row-type carrier for inference — never present at runtime. */\n _row?: TData;\n }\n\n export interface SmrtWebCollectionDefinitions {\n${webCollectionEntries}\n }\n\n export const collectionDefinitions: SmrtWebCollectionDefinitions;\n export function getCollectionDefinition<\n K extends keyof SmrtWebCollectionDefinitions,\n >(name: K): SmrtWebCollectionDefinitions[K];\n /**\n * Build-time web-collection shape digest (#1764). A deterministic,\n * replica-stable hash of the emitted collection definitions; a change means\n * old persisted client rows may mis-hydrate. Consumers fold it into the\n * durable persistence namespace and the version-awareness updateAvailable\n * contract signal.\n */\n export const manifestHash: string;\n export default collectionDefinitions;\n}`;\n\n // Write all virtual module declarations\n fs.writeFileSync(\n path.join(outDir, 'smrt-manifest.d.ts'),\n manifestDeclaration,\n );\n fs.writeFileSync(path.join(outDir, 'smrt-client.d.ts'), clientDeclaration);\n fs.writeFileSync(path.join(outDir, 'smrt-routes.d.ts'), routesDeclaration);\n fs.writeFileSync(path.join(outDir, 'smrt-mcp.d.ts'), mcpDeclaration);\n fs.writeFileSync(path.join(outDir, 'smrt-types.d.ts'), typesDeclaration);\n fs.writeFileSync(path.join(outDir, 'smrt-web.d.ts'), webDeclaration);\n}\n\n/**\n * Map SMRT field types to TypeScript types\n */\nfunction mapFieldTypeToTypeScript(smrtType: string): string {\n switch (smrtType) {\n case 'text':\n return 'string';\n case 'decimal':\n case 'integer':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'datetime':\n return 'string | Date';\n case 'json':\n return 'any';\n case 'foreignKey':\n return 'string';\n default:\n return 'any';\n }\n}\n\n/**\n * CLI command for generating declarations\n */\nexport async function generateDeclarationsFromCLI(\n args: string[],\n): Promise<void> {\n const manifestPath = args[0];\n const outDir = args[1] || 'src/types/generated';\n\n if (!manifestPath) {\n console.error('Usage: generate-declarations <manifest-path> [output-dir]');\n process.exit(1);\n }\n\n if (!fs.existsSync(manifestPath)) {\n console.error(`Manifest file not found: ${manifestPath}`);\n process.exit(1);\n }\n\n await generateDeclarations({\n manifest: manifestPath,\n outDir,\n });\n}\n"],"mappings":";;;;;;;;;;;;AA+BA,eAAsB,qBACpB,SACe;CACf,MAAM,EACJ,UAAU,eACV,QACA,wBAAwB,MACxB,qBAAqB,MACrB,cAAc,QAAQ,IAAI,MACxB;CAGJ,MAAM,WACJ,OAAO,kBAAkB,WACrB,KAAK,MAAM,GAAG,aAAa,eAAe,OAAO,CAAC,IAClD;CAGN,MAAM,aAAa,KAAK,WAAW,MAAM,IACrC,SACA,KAAK,KAAK,aAAa,MAAM;CACjC,GAAG,UAAU,YAAY,EAAE,WAAW,KAAK,CAAC;CAE5C,QAAQ,IAAI,8CAA8C,YAAY;CAEtE,IAAI,oBACF,MAAM,+BAA+B,UAAU,UAAU;CAG3D,IAAI,uBACF,MAAM,kCAAkC,UAAU,UAAU;CAG9D,QAAQ,IACN,8CAA8C,OAAO,KAAK,SAAS,OAAO,CAAC,CAAC,OAAO,cACrF;AACF;;;;AAKA,eAAe,+BACb,UACA,QACe;CACf,MAAM,aAAuB,CAAC;CAG9B,KAAK,MAAM,CAAC,aAAa,eAAe,OAAO,QAAQ,SAAS,OAAO,GAAG;EACxE,MAAM,SAAS,WAAW,UAAU,CAAC;EACrC,MAAM,gBAA0B,CAAC;EAGjC,cAAc,KAAK,gBAAgB;EACnC,cAAc,KAAK,wBAAwB;EAC3C,cAAc,KAAK,wBAAwB;EAG3C,KAAK,MAAM,CAAC,WAAW,aAAa,OAAO,QAAQ,MAAM,GAAG;GAC1D,MAAM,OAAO,yBAAyB,SAAS,IAAI;GACnD,MAAM,WAAW,CAAC,SAAS,WAAW,MAAM;GAC5C,cAAc,KAAK,KAAK,YAAY,SAAS,IAAI,KAAK,EAAE;EAC1D;EAEA,MAAM,eAAe,oBAAoB,WAAW,UAAU;EAChE,cAAc,KAAK,IAAI,EAAE;;EAEvB,WAAW,KAAK,YAAY;CAC9B;CAGA,MAAM,qBAAqB;;;;;;;EAO3B,WAAW,KAAK,MAAM,EAAE;;CAGxB,GAAG,cAAc,KAAK,KAAK,QAAQ,mBAAmB,GAAG,kBAAkB;AAC7E;;;;AAKA,eAAe,kCACb,UACA,QACe;CAEf,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8E5B,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAhCC,uBAAuB,QAAQ,CAAC,CACxD,KAAK,EAAE,WAAW,mBAAmB,aAAa,oBAAoB;EAErE,MAAM,WAAW,wBACf,mBACA,aAHwB,cAAc,KAAK,EAAE,WAAW,IAIxD,CACF;EACA,MAAM,mBAAmB,cACtB,KACE,WACC,SAAS,OAAO,KAAK,GAAG,sCACtB,QACA,wBACF,EAAE,iBACN,CAAC,CACA,KAAK,IAAI;EAEZ,IAAI,kBAAkB;GACpB,MAAM,eAAe,WAAW,GAAG,SAAS,OAAO;GACnD,OAAO,OAAO,KAAK,UAAU,SAAS,EAAE,IAAI,aAAa,KAAK,iBAAiB;EACjF;EAEA,OAAO,OAAO,KAAK,UAAU,SAAS,EAAE,IAAI,YAAY,wBAAwB;CAClF,CAAC,CAAC,CACD,KAAK,IA4CR,EAAmB;;;;;;CAQnB,MAAM,oBAAoB;;;;;;;;;;;;;;CAgB1B,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;CA+BvB,MAAM,mBAAmB;;;;EAPH,OAAO,OAAO,SAAS,OAAO,CAAC,CAClD,KACE,QACC,iBAAiB,IAAI,UAAU,kCAAkC,IAAI,UAAU,MACnF,CAAC,CACA,KAAK,IAMR,EAAc;;;;;;;;;;;;;CAyBd,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAPM,2BAA2B,QAAQ,CAAC,CAC9D,KACE,EAAE,YAAY,UACb,OAAO,KAAK,UAAU,UAAU,EAAE,yDAAyD,IAAI,UAAU,OAC7G,CAAC,CACA,KAAK,IA+ER,EAAqB;;;;;;;;;;;;;;;;;CAmBrB,GAAG,cACD,KAAK,KAAK,QAAQ,oBAAoB,GACtC,mBACF;CACA,GAAG,cAAc,KAAK,KAAK,QAAQ,kBAAkB,GAAG,iBAAiB;CACzE,GAAG,cAAc,KAAK,KAAK,QAAQ,kBAAkB,GAAG,iBAAiB;CACzE,GAAG,cAAc,KAAK,KAAK,QAAQ,eAAe,GAAG,cAAc;CACnE,GAAG,cAAc,KAAK,KAAK,QAAQ,iBAAiB,GAAG,gBAAgB;CACvE,GAAG,cAAc,KAAK,KAAK,QAAQ,eAAe,GAAG,cAAc;AACrE;;;;AAKA,SAAS,yBAAyB,UAA0B;CAC1D,QAAQ,UAAR;EACE,KAAK,QACH,OAAO;EACT,KAAK;EACL,KAAK,WACH,OAAO;EACT,KAAK,WACH,OAAO;EACT,KAAK,YACH,OAAO;EACT,KAAK,QACH,OAAO;EACT,KAAK,cACH,OAAO;EACT,SACE,OAAO;CACX;AACF;;;;AAKA,eAAsB,4BACpB,MACe;CACf,MAAM,eAAe,KAAK;CAC1B,MAAM,SAAS,KAAK,MAAM;CAE1B,IAAI,CAAC,cAAc;EACjB,QAAQ,MAAM,2DAA2D;EACzE,QAAQ,KAAK,CAAC;CAChB;CAEA,IAAI,CAAC,GAAG,WAAW,YAAY,GAAG;EAChC,QAAQ,MAAM,4BAA4B,cAAc;EACxD,QAAQ,KAAK,CAAC;CAChB;CAEA,MAAM,qBAAqB;EACzB,UAAU;EACV;CACF,CAAC;AACH"}
|