Back to Templates
Open Analytics logo

Open Analytics

vv0.5.0

Open Analytics is an open-source, AI-native web analytics platform: realtime dashboards, funnels, visitor journeys, custom events, revenue analytics, and an MCP server for AI agents. Deploys the complete official self-hosted stack.

Deploy on Dokploy

Deploy Open Analytics on Dokploy

  1. Install Dokploy on your server if you haven't already.
  2. In your Dokploy panel, open a project and click Create Service → Template.
  3. Search for Open Analytics and click Create — Dokploy configures domains, environment variables, and volumes for you.

Alternatively, create a Compose service, go to Advanced → Import from Base64, and paste this payload:

base64
ewogICJjb21wb3NlIjogIiMgT3BlbkFuYWx5dGljcyBmb3IgRG9rcGxveSdzIHRlbXBsYXRlIGNhdGFsb2d1ZS5cbiNcbiMgVGhpcyBmb2xkZXIgaXMgdGhlIGJsdWVwcmludCBzdWJtaXR0ZWQgdG8gYERva3Bsb3kvdGVtcGxhdGVzYCBhc1xuIyBgYmx1ZXByaW50cy9vcGVuYW5hbHl0aWNzL2A7IHRoZSBjb3B5IGhlcmUgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aCBhbmQgdGhlIHR3b1xuIyBtdXN0IG5vdCBkcmlmdC4gVGhlIG9wZXJhdG9yIHdhbGt0aHJvdWdoIGlzIGAuLi9ET0tQTE9ZLm1kYC5cbiNcbiMgRGVyaXZlZCBmcm9tIGAuLi9kb2NrZXItY29tcG9zZS5jb29saWZ5LnltbGAsIHRoZSB0ZXN0ZWQgb25lLWNsaWNrIHNoYXBlLlxuIyBXaGF0IGNoYW5nZWQgZm9yIHRoaXMgcGxhdGZvcm0sIGFuZCBub3RoaW5nIGVsc2UgZGlkOlxuI1xuIyAxLiAqKkdlbmVyYXRlZCB2YWx1ZXMgYXJyaXZlIHRocm91Z2ggdGhlIHByb2plY3QgYC5lbnZgLioqIERva3Bsb3kgcmVuZGVyc1xuIyAgICBgdGVtcGxhdGUudG9tbGAncyB2YXJpYWJsZXMgaW50byBvbmUgYC5lbnZgIGZpbGUsIGFuZCB0aGlzIGZpbGUgcmVmZXJlbmNlc1xuIyAgICB0aGVtIHdpdGggYCR7Li4ufWAgcGVyIHNlcnZpY2UuIERPIE5PVCBcInNpbXBsaWZ5XCIgdGhpcyBpbnRvIGEgc2hhcmVkXG4jICAgIGBlbnZfZmlsZTpgOiBldmVyeSBzZXJ2aWNlIGhhcyBhIEZPUkJJRERFTl9LRVlTIGxpc3QgYW5kIEVYSVRTIEFUIFNUQVJUVVBcbiMgICAgd2hlbiBoYW5kZWQgYSBzZWNyZXQgaXQgbXVzdCBub3QgaG9sZCAoYHBhY2thZ2VzL2RvbWFpbi9zcmMvZW52LnRzYCkuIE9uZVxuIyAgICBzaGFyZWQgZW52IGJsb2NrIHdvdWxkIGhhbmQgZXZlcnkgc2VydmljZSBldmVyeSBzZWNyZXQgYW5kIG5vdGhpbmcgd291bGRcbiMgICAgYm9vdC4gVGhhdCBpcyB0aGUgZGVzaWduIHdvcmtpbmcsIG5vdCBhIGJ1ZzogdGhlIGNvbGxlY3RvciBpc1xuIyAgICBpbnRlcm5ldC1mYWNpbmcgYW5kIG11c3Qgbm90IHJlYWNoIENsaWNrSG91c2U7IHRoZSBnYXRld2F5IHZlcmlmaWVzXG4jICAgIHNpZ25hdHVyZXMgYW5kIG11c3Qgbm90IGhvbGQgdGhlIGtleSB0aGF0IG1pbnRzIHRoZW0uXG4jXG4jIDIuICoqQSBDYWRkeSBlZGdlIHJlcGxhY2VzIENvb2xpZnkncyBUcmFlZmlrLWxhYmVsIG1pZGRsZXdhcmUuKiogRG9rcGxveSdzXG4jICAgIFRyYWVmaWsgb3ducyBUTFMgYW5kIHdyaXRlcyBgWC1Gb3J3YXJkZWQtRm9yYCBhbmQgYFgtUmVhbC1JcGAgZnJvbSB0aGVcbiMgICAgY29ubmVjdGlvbiwgYnV0IGl0IHBhc3NlcyBgQ0YtQ29ubmVjdGluZy1JUGAgYW5kIGl0cyBmYW1pbHkgdGhyb3VnaCxcbiMgICAgYmVjYXVzZSB0aGV5IGFyZSBub2JvZHkncyBzdGFuZGFyZC4gV2l0aG91dCBzdHJpcHBpbmcgdGhlbSwgYW55IHZpc2l0b3JcbiMgICAgcGlja3MgdGhlaXIgb3duIHJhdGUtbGltaXQgYnVja2V0IG9yIHdyaXRlcyB0aGVpciBvd24gY291bnRyeSBpbnRvIHlvdXJcbiMgICAgYW5hbHl0aWNzLiBBbGwgZm91ciBkb21haW5zIHRoZXJlZm9yZSBwb2ludCBhdCBgZWRnZWAsIHdoaWNoIGRlbGV0ZXMgdGhhdFxuIyAgICBmYW1pbHkgYmVmb3JlIGFueXRoaW5nIGludGVybmFsIHNlZXMgaXQuIFRoZSBDYWRkeWZpbGUgYXJyaXZlcyBhcyBhXG4jICAgIHRlbXBsYXRlIG1vdW50IChgLi4vZmlsZXMvQ2FkZHlmaWxlYCkuXG4jXG4jIDMuICoqYG1lbV9saW1pdGAgaXMgZ29uZTsgdGhlIENsaWNrSG91c2UgdWxpbWl0cyBzdGF5LioqIFRoZSB2YWxrZXktcXVldWVcbiMgICAgbWVtb3J5IGJvdW5kIHN0aWxsIGhvbGRzOiBgbWF4bWVtb3J5YCBsaXZlcyBpbiB0aGUgY29uZiBiYWtlZCBpbnRvIHRoZVxuIyAgICBpbWFnZS5cbiNcbiMgIyMgSW1hZ2VzXG4jXG4jIFBpbm5lZCB0byBgdjAuNS4wYC4gVGhlIGZsb29yIGlzIGB2MC40LjBgLCB0aGUgZmlyc3QgcmVsZWFzZSB3aG9zZVxuIyBgY29sbGVjdG9yYCBpbWFnZSBzZXJ2ZXMgYG9hLmpzYCBpdHNlbGYg4oCUIGJlZm9yZSBpdCwgdGhlIG9uZSBmaWxlIGEgY3VzdG9tZXJcbiMgcGFzdGVzIGludG8gdGhlaXIgcGFnZSBhbnN3ZXJlZCA0MDQgb24gaW5zdGFsbHMgd2l0aCBubyB0cmFja2VyIGJ1aWxkZXIuXG4jIE5vdGhpbmcgaGVyZSBidWlsZHM6IHRoZSBwbGF0Zm9ybSBwdWxscyBuaW5lIG9mIG91ciBpbWFnZXMgcGx1cyBwb3N0Z3JlcyxcbiMgYWxwaW5lIGFuZCBjYWRkeS4gYE9BX0lNQUdFX1RBR2AgaW4gdGhlIGVudmlyb25tZW50IHRhYiBvdmVycmlkZXMgdGhlIHBpbjtcbiMgbW92ZSBpdCBvbmx5IHRvZ2V0aGVyIHdpdGggdGhpcyBmaWxlICh0aGUgZW52IHNoYXBlIGFuZCB0aGUgbWlncmF0aW9ucyBhcmVcbiMgdmVyc2lvbmVkIHdpdGggdGhlIGltYWdlcykuXG5cbngtbm9kZS1oZWFsdGhjaGVjazogJm5vZGUtaGVhbHRoY2hlY2tcbiAgdGVzdDpcbiAgICBbXG4gICAgICAnQ01EJyxcbiAgICAgICdub2RlJyxcbiAgICAgICctZScsXG4gICAgICBcImZldGNoKCdodHRwOi8vMTI3LjAuMC4xOicrcHJvY2Vzcy5lbnYuUE9SVCsnL2hlYWx0aCcpLnRoZW4ocj0+cHJvY2Vzcy5leGl0KHIub2s/MDoxKSkuY2F0Y2goKCk9PnByb2Nlc3MuZXhpdCgxKSlcIixcbiAgICBdXG4gIGludGVydmFsOiAxNXNcbiAgdGltZW91dDogNXNcbiAgcmV0cmllczogMTBcbiAgc3RhcnRfcGVyaW9kOiAzMHNcblxuc2VydmljZXM6XG4gICMgLS0tIHN0b3JlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwb3N0Z3JlczpcbiAgICBpbWFnZTogcG9zdGdyZXM6MTctYWxwaW5lXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIFBPU1RHUkVTX1VTRVI6IG9wZW5hbmFseXRpY3NcbiAgICAgIFBPU1RHUkVTX0RCOiBvcGVuYW5hbHl0aWNzXG4gICAgICBQT1NUR1JFU19QQVNTV09SRDogJHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICB2b2x1bWVzOlxuICAgICAgLSBwZy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YVxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDogWydDTUQtU0hFTEwnLCAncGdfaXNyZWFkeSAtVSBcIiQkUE9TVEdSRVNfVVNFUlwiIC1kIFwiJCRQT1NUR1JFU19EQlwiJ11cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiAxMFxuXG4gICMgVXBzdHJlYW0ncyBzZXJ2ZXIgcGx1cyBvdXIgY29uZmlnIGRyb3AtaW4gYW5kIHRoZSBlbnRyeXBvaW50IHRoYXQgcmVuZGVyc1xuICAjIHRoZSBmb3VyIHVzZXJzLCBiYWtlZCBpbnRvIHRoZSBpbWFnZSAoYSBvbmUtY2xpY2sgcGxhdGZvcm0gaGFzIG5vIGNoZWNrb3V0XG4gICMgdG8gYmluZC1tb3VudCB0aGVtIGZyb20pLlxuICBjbGlja2hvdXNlOlxuICAgIGltYWdlOiAke09BX0lNQUdFX1JFUE86LWdoY3IuaW8vb3BlbmxhYnMtc28vb3BlbmFuYWx5dGljc30vY2xpY2tob3VzZToke09BX0lNQUdFX1RBRzotdjAuNS4wfVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBDTElDS0hPVVNFX0lOR0VTVF9QQVNTV09SRDogJHtDTElDS0hPVVNFX0lOR0VTVF9QQVNTV09SRH1cbiAgICAgIENMSUNLSE9VU0VfUkVBRF9QQVNTV09SRDogJHtDTElDS0hPVVNFX1JFQURfUEFTU1dPUkR9XG4gICAgICBDTElDS0hPVVNFX01BSU5URU5BTkNFX1BBU1NXT1JEOiAke0NMSUNLSE9VU0VfTUFJTlRFTkFOQ0VfUEFTU1dPUkR9XG4gICAgICBDTElDS0hPVVNFX01JR1JBVElPTl9QQVNTV09SRDogJHtDTElDS0hPVVNFX01JR1JBVElPTl9QQVNTV09SRH1cbiAgICB2b2x1bWVzOlxuICAgICAgLSBjaC1kYXRhOi92YXIvbGliL2NsaWNraG91c2VcbiAgICB1bGltaXRzOlxuICAgICAgbm9maWxlOlxuICAgICAgICBzb2Z0OiAyNjIxNDRcbiAgICAgICAgaGFyZDogMjYyMTQ0XG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbJ0NNRCcsICdjbGlja2hvdXNlLWNsaWVudCcsICctLXF1ZXJ5JywgJ1NFTEVDVCAxJ11cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiAyMFxuICAgICAgc3RhcnRfcGVyaW9kOiAyMHNcblxuICAjIFRoZSBkdXJhYmxlIGV2ZW50IHF1ZXVlLiBCZXR3ZWVuIHRoZSBjb2xsZWN0b3IncyAyMDIgYW5kIHRoZSB3b3JrZXInc1xuICAjIGluc2VydCB0aGlzIGluc3RhbmNlIGhvbGRzIHRoZSBvbmx5IGNvcHkgb2YgYW4gZXZlbnQuXG4gIHZhbGtleS1xdWV1ZTpcbiAgICBpbWFnZTogJHtPQV9JTUFHRV9SRVBPOi1naGNyLmlvL29wZW5sYWJzLXNvL29wZW5hbmFseXRpY3N9L3ZhbGtleToke09BX0lNQUdFX1RBRzotdjAuNS4wfVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBWQUxLRVlfUEFTU1dPUkQ6ICR7VkFMS0VZX1FVRVVFX1BBU1NXT1JEfVxuICAgICAgIyBPbmUgaW1hZ2UsIHR3byBwb2xpY2llcy4gRHVyYWJsZTogYXBwZW5kb25seSwgbm8gZXZpY3Rpb24uIE5hbWVkIHJhdGhlclxuICAgICAgIyB0aGFuIGRlZmF1bHRlZCwgYmVjYXVzZSBhIGRlZmF1bHQgd291bGQgYmUgYSBndWVzcyBhYm91dCB3aGV0aGVyIGFuXG4gICAgICAjIGFja25vd2xlZGdlZCBldmVudCBtYXkgYmUgZXZpY3RlZCBiZWZvcmUgdGhlIHdvcmtlciBpbnNlcnRzIGl0LlxuICAgICAgT0FfVkFMS0VZX0NPTkY6IC91c3IvbG9jYWwvZXRjL3ZhbGtleS92YWxrZXktcXVldWUuY29uZlxuICAgIHZvbHVtZXM6XG4gICAgICAtIHZhbGtleS1xdWV1ZS1kYXRhOi9kYXRhXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbJ0NNRC1TSEVMTCcsICdSRURJU0NMSV9BVVRIPVwiJCRWQUxLRVlfUEFTU1dPUkRcIiB2YWxrZXktY2xpIHBpbmcgfCBncmVwIC1xIFBPTkcnXVxuICAgICAgaW50ZXJ2YWw6IDEwc1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDEwXG5cbiAgIyBQcmVzZW5jZSwgcmF0ZS1saW1pdCBjb3VudGVycywgc2hvcnQtbGl2ZWQgY2FjaGVzLiBMb3NhYmxlIGJ5IGRlc2lnbi5cbiAgdmFsa2V5LXJlYWx0aW1lOlxuICAgIGltYWdlOiAke09BX0lNQUdFX1JFUE86LWdoY3IuaW8vb3BlbmxhYnMtc28vb3BlbmFuYWx5dGljc30vdmFsa2V5OiR7T0FfSU1BR0VfVEFHOi12MC41LjB9XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIFZBTEtFWV9QQVNTV09SRDogJHtWQUxLRVlfUkVBTFRJTUVfUEFTU1dPUkR9XG4gICAgICAjIExvc2FibGUgYnkgZGVzaWduOiBhbGxrZXlzLWxydSBpbnNpZGUgYSBtZW1vcnkgYm91bmQuXG4gICAgICBPQV9WQUxLRVlfQ09ORjogL3Vzci9sb2NhbC9ldGMvdmFsa2V5L3ZhbGtleS1yZWFsdGltZS5jb25mXG4gICAgdm9sdW1lczpcbiAgICAgIC0gdmFsa2V5LXJlYWx0aW1lLWRhdGE6L2RhdGFcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFsnQ01ELVNIRUxMJywgJ1JFRElTQ0xJX0FVVEg9XCIkJFZBTEtFWV9QQVNTV09SRFwiIHZhbGtleS1jbGkgcGluZyB8IGdyZXAgLXEgUE9ORyddXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogMTBcblxuICAjIC0tLSBvbmUtc2hvdDogdGhlIHRocmVlIHNpZ25pbmcgcGFpcnMsIGFuZCB0aGUgY3JlZGVudGlhbCBrZXlyaW5nIC0tLS0tLS0tLVxuICAjXG4gICMgTm8gcGxhdGZvcm0gZ2VuZXJhdG9yIGNhbiBtYWtlIGVpdGhlcjogYSBrZXlwYWlyIHdob3NlIGhhbHZlcyBtdXN0IG1hdGNoXG4gICMgYWNyb3NzIHR3byBzZXJ2aWNlcyBpcyBub3QgYSByYW5kb20gc3RyaW5nLCBhbmQgdGhlIGtleXJpbmcgd2FudHMgZXhhY3RseVxuICAjIDMyIGJ5dGVzLiBTbyBib3RoIGFyZSBtYWRlIGluc2lkZSB0aGUgc3RhY2sgYW5kIGhhbmRlZCBvdmVyIGFzIGZpbGVzLlxuICAjXG4gICMgRm91ciBzZXBhcmF0ZSBrZXkgdm9sdW1lcyByYXRoZXIgdGhhbiBvbmUsIHNvIHRoZSBzcGxpdCBiZXR3ZWVuIHRoZSBhcGknc1xuICAjIHByaXZhdGUgaGFsdmVzIGFuZCBlYWNoIHZlcmlmaWVyJ3MgcHVibGljIGhhbGYgaXMgYSBmaWxlc3lzdGVtIGZhY3QgYW5kIG5vdFxuICAjIGEgY29udmVudGlvbjogYSBzaW5nbGUgc2hhcmVkIHZvbHVtZSB3b3VsZCBwdXQgZXZlcnkgcHJpdmF0ZSBoYWxmIG9uZSBgY2F0YFxuICAjIGF3YXkgZnJvbSBldmVyeSBzZXJ2aWNlIHRoYXQgb25seSB2ZXJpZmllcy5cbiAgI1xuICAjIElkZW1wb3RlbnQsIGFuZCB0aGF0IGlzIGxvYWQtYmVhcmluZzogcGxhdGZvcm1zIHJlLXJ1biB0aGUgd2hvbGUgc3RhY2sgb25cbiAgIyBldmVyeSByZWRlcGxveSwgYW5kIHJlZ2VuZXJhdGluZyB3b3VsZCByb3RhdGUgYWxsIHRocmVlIHBhaXJzIGJlaGluZFxuICAjIGV2ZXJ5b25lJ3MgYmFjay4gRWFjaCBoYWxmIGlzIHdyaXR0ZW4gb25seSB3aGVuIG1pc3NpbmcsIGFuZCBhIG1pc3NpbmdcbiAgIyBwdWJsaWMgaGFsZiBpcyBkZXJpdmVkIGZyb20gdGhlIHByaXZhdGUgb25lLCBzbyBhbiBpbnRlcnJ1cHRlZCB2b2x1bWVcbiAgIyByZXBhaXJzIGl0c2VsZi5cbiAgI1xuICAjIEVWRVJZIExJVEVSQUwgRE9MTEFSIElTIERPVUJMRUQuIENvbXBvc2Ugc3Vic3RpdHV0ZXMgZG9sbGFyLXZhcmlhYmxlc1xuICAjIGJlZm9yZSB0aGUgY29udGFpbmVyIHNlZXMgdGhlIGNvbW1hbmQsIHNvIGEgc2luZ2xlLWRvbGxhciBgJHBhaXJgIHdvdWxkXG4gICMgYXJyaXZlIGFzIGFuIGVtcHR5IHN0cmluZyBhbmQgdGhpcyB3b3VsZCB3cml0ZSBgL2tleXMvYXBpLy5wcml2YXRlLnBlbWBcbiAgIyB0aHJlZSB0aW1lcy5cbiAga2V5Z2VuOlxuICAgIGltYWdlOiBhbHBpbmU6My4yMVxuICAgIHJlc3RhcnQ6ICdubydcbiAgICBjb21tYW5kOlxuICAgICAgLSBzaFxuICAgICAgLSAtZWNcbiAgICAgIC0gfFxuICAgICAgICBhcGsgYWRkIC0tbm8tY2FjaGUgb3BlbnNzbCA+L2Rldi9udWxsXG4gICAgICAgIG1rZGlyIC1wIC9rZXlzL2FwaSAva2V5cy9nYXRld2F5IC9rZXlzL3JlYWx0aW1lIC9rZXlyaW5nXG4gICAgICAgIGZvciBlbnRyeSBpbiBcInF1ZXJ5IGdhdGV3YXlcIiBcInJlYWx0aW1lIHJlYWx0aW1lXCI7IGRvXG4gICAgICAgICAgc2V0IC0tICQkZW50cnlcbiAgICAgICAgICBwYWlyPSQkMVxuICAgICAgICAgIGRlc3Q9JCQyXG4gICAgICAgICAgaWYgWyAhIC1mIFwiL2tleXMvYXBpLyQkcGFpci5wcml2YXRlLnBlbVwiIF07IHRoZW5cbiAgICAgICAgICAgIG9wZW5zc2wgZ2VucGtleSAtYWxnb3JpdGhtIGVkMjU1MTkgLW91dCBcIi9rZXlzL2FwaS8kJHBhaXIucHJpdmF0ZS5wZW1cIlxuICAgICAgICAgICAgZWNobyBcIiQkcGFpcjogcHJpdmF0ZSBoYWxmIGdlbmVyYXRlZFwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZWNobyBcIiQkcGFpcjogcHJpdmF0ZSBoYWxmIGV4aXN0cywgbGVmdCBhbG9uZVwiXG4gICAgICAgICAgZmlcbiAgICAgICAgICBpZiBbICEgLWYgXCIva2V5cy8kJGRlc3QvJCRwYWlyLnB1YmxpYy5wZW1cIiBdOyB0aGVuXG4gICAgICAgICAgICBvcGVuc3NsIHBrZXkgLWluIFwiL2tleXMvYXBpLyQkcGFpci5wcml2YXRlLnBlbVwiIC1wdWJvdXQgXFxcbiAgICAgICAgICAgICAgLW91dCBcIi9rZXlzLyQkZGVzdC8kJHBhaXIucHVibGljLnBlbVwiXG4gICAgICAgICAgICBlY2hvIFwiJCRwYWlyOiBwdWJsaWMgaGFsZiBkZXJpdmVkIGZvciAkJGRlc3RcIlxuICAgICAgICAgIGZpXG4gICAgICAgIGRvbmVcbiAgICAgICAgIyAzMiBieXRlcywgd2hpY2ggaXMgd2hhdCBgQ1JFREVOVElBTF9LRVlfQllURVNgIGluXG4gICAgICAgICMgYHBhY2thZ2VzL2ludGVncmF0aW9ucy9zcmMvY3JlZGVudGlhbC12YXVsdC50c2AgY2hlY2tzIHJhdGhlciB0aGFuXG4gICAgICAgICMgdHJ1c3RzLiBXcml0dGVuIG9ubHkgd2hlbiBtaXNzaW5nOiByb3RhdGluZyBpdCBvbiBhIHJlZGVwbG95IHdvdWxkXG4gICAgICAgICMgc3RyYW5kIGV2ZXJ5IHByb3ZpZGVyIGNyZWRlbnRpYWwgYSBjdXN0b21lciBoYWQgYWxyZWFkeSBjb25uZWN0ZWQuXG4gICAgICAgIGlmIFsgISAtZiAva2V5cmluZy9jcmVkZW50aWFsLWtleXJpbmcuanNvbiBdOyB0aGVuXG4gICAgICAgICAgcHJpbnRmICd7XCJhY3RpdmVcIjpcImsxXCIsXCJrZXlzXCI6e1wiazFcIjpcIiVzXCJ9fScgXCIkJChvcGVuc3NsIHJhbmQgLWJhc2U2NCAzMilcIiBcXFxuICAgICAgICAgICAgPiAva2V5cmluZy9jcmVkZW50aWFsLWtleXJpbmcuanNvblxuICAgICAgICAgIGVjaG8gXCJjcmVkZW50aWFsIGtleXJpbmc6IGdlbmVyYXRlZFwiXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBlY2hvIFwiY3JlZGVudGlhbCBrZXlyaW5nOiBleGlzdHMsIGxlZnQgYWxvbmVcIlxuICAgICAgICBmaVxuICAgICAgICAjIHVpZCAxMDAwIGlzIGBub2RlYCBpbiB0aGUgcnVudGltZSBpbWFnZSwgd2hpY2ggaXMgdGhlIHVzZXIgZXZlcnlcbiAgICAgICAgIyBzZXJ2aWNlIHJ1bnMgYXMuXG4gICAgICAgIGNob3duIC1SIDEwMDA6MTAwMCAva2V5cyAva2V5cmluZ1xuICAgICAgICBjaG1vZCA3MDAgL2tleXMvYXBpIC9rZXlzL2dhdGV3YXkgL2tleXMvcmVhbHRpbWUgL2tleXJpbmdcbiAgICAgICAgY2htb2QgNDAwIC9rZXlzL2FwaS8qLnBlbSAva2V5cmluZy9jcmVkZW50aWFsLWtleXJpbmcuanNvblxuICAgICAgICBjaG1vZCA0NDQgL2tleXMvZ2F0ZXdheS8qLnBlbSAva2V5cy9yZWFsdGltZS8qLnBlbVxuICAgICAgICBscyAtbCAva2V5cy9hcGkgL2tleXMvZ2F0ZXdheSAva2V5cy9yZWFsdGltZSAva2V5cmluZ1xuICAgIHZvbHVtZXM6XG4gICAgICAtIGtleXMtYXBpOi9rZXlzL2FwaVxuICAgICAgLSBrZXlzLWdhdGV3YXk6L2tleXMvZ2F0ZXdheVxuICAgICAgLSBrZXlzLXJlYWx0aW1lOi9rZXlzL3JlYWx0aW1lXG4gICAgICAtIGtleXJpbmc6L2tleXJpbmdcblxuICAjIC0tLSBvbmUtc2hvdDogdGhlIGdlbyBkYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICNcbiAgIyBEQi1JUCBDaXR5IExpdGUgYW5kIG5vdCBNYXhNaW5kLCBhbmQgdGhlIGxpY2VuY2UgaXMgdGhlIHdob2xlIHJlYXNvbjpcbiAgIyBHZW9MaXRlMiBuZWVkcyBhbiBhY2NvdW50IGFuZCBhIGxpY2VuY2Uga2V5IGFuZCBmb3JiaWRzIHJlZGlzdHJpYnV0aW9uLCBzb1xuICAjIG5vdGhpbmcgY291bGQgZmV0Y2ggaXQgb24geW91ciBiZWhhbGYuIERCLUlQIENpdHkgTGl0ZSBpcyBDQyBCWSA0LjAsIGFcbiAgIyBkaXJlY3QgZG93bmxvYWQuIFRoZSBhdHRyaWJ1dGlvbiBpcyBhIGxpY2VuY2UgY29uZGl0aW9uIHJhdGhlciB0aGFuIGFcbiAgIyBjb3VydGVzeSwgYW5kIGl0IGJlbG9uZ3Mgd2hlcmV2ZXIgeW91IHNob3cgdGhlIGRhdGE6XG4gICMgXCJJUCBHZW9sb2NhdGlvbiBieSBEQi1JUCwgaHR0cHM6Ly9kYi1pcC5jb20sIENDIEJZIDQuMC5cIlxuICAjXG4gICMgVGhlIG5ldHdvcmsgaXMgYSBmaXJzdC1pbnN0YWxsIGRlcGVuZGVuY3kgb25seTogdGhlIGZpbGUgaXMgd3JpdHRlbiBvbmNlXG4gICMgYW5kIGV2ZXJ5IGxhdGVyIGRlcGxveSBzaG9ydC1jaXJjdWl0cyBvbiB0aGUgZmlyc3QgbGluZS4gVG8gcmVmcmVzaCBpdCxcbiAgIyBkZWxldGUgaXQgZnJvbSB0aGUgdm9sdW1lIGFuZCByZWRlcGxveS4gQSBmYWlsZWQgZG93bmxvYWQgZmFpbHMgdGhlIGRlcGxveSxcbiAgIyB3aGljaCBpcyB0aGUgbGVzc2VyIGV2aWw6IHRoZSBjb2xsZWN0b3IgcmVmdXNlcyB0byBzdGFydCBvbiBhIGBHRU9JUF9EQl9QQVRIYFxuICAjIHRoYXQgbmFtZXMgbm8gZmlsZSwgc28gdGhlIGFsdGVybmF0aXZlIGlzIGEgY3Jhc2ggbG9vcCBvbmUgc3RlcCBmdXJ0aGVyXG4gICMgZnJvbSBpdHMgY2F1c2UuXG4gIGdlb2lwOlxuICAgIGltYWdlOiBhbHBpbmU6My4yMVxuICAgIHJlc3RhcnQ6ICdubydcbiAgICBjb21tYW5kOlxuICAgICAgLSBzaFxuICAgICAgLSAtZWNcbiAgICAgIC0gfFxuICAgICAgICBpZiBbIC1mIC9nZW9pcC9kYmlwLWNpdHktbGl0ZS5tbWRiIF07IHRoZW5cbiAgICAgICAgICBlY2hvIFwiZ2VvaXA6IGRhdGFiYXNlIHByZXNlbnQsIGxlZnQgYWxvbmVcIlxuICAgICAgICAgIGV4aXQgMFxuICAgICAgICBmaVxuICAgICAgICBhcGsgYWRkIC0tbm8tY2FjaGUgY3VybCA+L2Rldi9udWxsXG5cbiAgICAgICAgIyBUd28gY2FuZGlkYXRlcy4gQSBtb250aCdzIGJ1aWxkIGFwcGVhcnMgYSBkYXkgb3IgdHdvIGludG8gaXQsIHNvIG9uIHRoZVxuICAgICAgICAjIGZpcnN0IG9mIHRoZSBtb250aCB0aGUgY3VycmVudCBvbmUgaXMgYSA0MDQgcmF0aGVyIHRoYW4gYW4gZXJyb3IuXG4gICAgICAgICMgV3JpdHRlbiBvdXQgcmF0aGVyIHRoYW4gYGRhdGUgLWQgJzEgbW9udGggYWdvJ2AsIHdoaWNoIGJ1c3lib3ggZG9lcyBub3RcbiAgICAgICAgIyB0YWtlLiBMZWFkaW5nIHplcm9zIGFyZSBzdHJpcHBlZCBiZWNhdXNlIFBPU0lYIGFyaXRobWV0aWMgcmVhZHMgYDA4YCBhc1xuICAgICAgICAjIG9jdGFsIGFuZCByZWZ1c2VzIGl0LlxuICAgICAgICB5PSQkKGRhdGUgLXUgKyVZKVxuICAgICAgICBtPSQkKGRhdGUgLXUgKyVtIHwgc2VkIFwicy9eMCovL1wiKVxuICAgICAgICBwbT0kJCgobSAtIDEpKVxuICAgICAgICBweT0kJHlcbiAgICAgICAgaWYgWyBcIiQkcG1cIiAtbGUgMCBdOyB0aGVuIHBtPTEyOyBweT0kJCgoeSAtIDEpKTsgZmlcbiAgICAgICAgcHJldj0kJChwcmludGYgXCIlMDRkLSUwMmRcIiBcIiQkcHlcIiBcIiQkcG1cIilcblxuICAgICAgICBmZXRjaGVkPVwiXCJcbiAgICAgICAgZm9yIG1vbnRoIGluIFwiJCQoZGF0ZSAtdSArJVktJW0pXCIgXCIkJHByZXZcIjsgZG9cbiAgICAgICAgICBlY2hvIFwiZ2VvaXA6IHRyeWluZyAkJG1vbnRoXCJcbiAgICAgICAgICAjIC0tZmFpbCBzbyBhIDQwNCBpcyBhIG5vbi16ZXJvIGV4aXQgcmF0aGVyIHRoYW4gYW4gSFRNTCBlcnJvciBwYWdlXG4gICAgICAgICAgIyBzYXZlZCBhcyBhIC5neiwgd2hpY2ggd291bGQgZmFpbCBsYXRlciBpbnNpZGUgZ3ppcCB3aXRoIG5vdGhpbmdcbiAgICAgICAgICAjIHBvaW50aW5nIGhlcmUuXG4gICAgICAgICAgaWYgY3VybCAtZnNTTCAtLXJldHJ5IDIgLS1tYXgtdGltZSAzMDAgLW8gL3RtcC9kYmlwLmd6IFxcXG4gICAgICAgICAgICBcImh0dHBzOi8vZG93bmxvYWQuZGItaXAuY29tL2ZyZWUvZGJpcC1jaXR5LWxpdGUtJCRtb250aC5tbWRiLmd6XCI7IHRoZW5cbiAgICAgICAgICAgIGZldGNoZWQ9XCIkJG1vbnRoXCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgZmlcbiAgICAgICAgZG9uZVxuICAgICAgICBpZiBbIC16IFwiJCRmZXRjaGVkXCIgXTsgdGhlblxuICAgICAgICAgIGVjaG8gXCJnZW9pcDogbm8gYnVpbGQgYXZhaWxhYmxlLiBDaGVjayBodHRwczovL2RiLWlwLmNvbS9kYi9kb3dubG9hZC9pcC10by1jaXR5LWxpdGVcIiA+JjJcbiAgICAgICAgICBleGl0IDFcbiAgICAgICAgZmlcblxuICAgICAgICBnemlwIC1kYyAvdG1wL2RiaXAuZ3ogPiAvdG1wL2RiaXAubW1kYlxuICAgICAgICAjIFZlcmlmaWVkIGJlZm9yZSBpdCBpcyBtb3ZlZCBpbnRvIHBsYWNlLiBFdmVyeSBNYXhNaW5kLWZvcm1hdCBmaWxlIGVuZHNcbiAgICAgICAgIyB3aXRoIHRoZSBtZXRhZGF0YSBtYXJrZXI7IGBzdHJpbmdzYCBhbmQgbm90IGBncmVwIC1hYCwgYmVjYXVzZVxuICAgICAgICAjIGJ1c3lib3gncyBgLWFgIGRvZXMgbm90IG1hdGNoIGluc2lkZSB0aGlzIGZpbGUuXG4gICAgICAgIGlmICEgdGFpbCAtYyAyMDAwMDAgL3RtcC9kYmlwLm1tZGIgfCBzdHJpbmdzIHwgZ3JlcCAtcSBcIk1heE1pbmQuY29tXCI7IHRoZW5cbiAgICAgICAgICBlY2hvIFwiZ2VvaXA6IHRoZSBkb3dubG9hZCBpcyBub3QgYSBNYXhNaW5kLWZvcm1hdCBkYXRhYmFzZVwiID4mMlxuICAgICAgICAgIGV4aXQgMVxuICAgICAgICBmaVxuICAgICAgICAjIE1vdmVkIGxhc3QsIHNvIGFuIGludGVycnVwdGVkIHJ1biBsZWF2ZXMgbm90aGluZyBoYWxmLXdyaXR0ZW4uXG4gICAgICAgIG12IC90bXAvZGJpcC5tbWRiIC9nZW9pcC9kYmlwLWNpdHktbGl0ZS5tbWRiXG4gICAgICAgIGNob3duIDEwMDA6MTAwMCAvZ2VvaXAvZGJpcC1jaXR5LWxpdGUubW1kYlxuICAgICAgICBjaG1vZCA0NDQgL2dlb2lwL2RiaXAtY2l0eS1saXRlLm1tZGJcbiAgICAgICAgZWNobyBcImdlb2lwOiB3cm90ZSBkYmlwLWNpdHktbGl0ZS5tbWRiICgkJGZldGNoZWQsICQkKGR1IC1oIC9nZW9pcC9kYmlwLWNpdHktbGl0ZS5tbWRiIHwgY3V0IC1mMSkpXCJcbiAgICAgICAgZWNobyBcImdlb2lwOiBJUCBHZW9sb2NhdGlvbiBieSBEQi1JUCwgaHR0cHM6Ly9kYi1pcC5jb20sIENDIEJZIDQuMC5cIlxuICAgIHZvbHVtZXM6XG4gICAgICAtIGdlb2lwOi9nZW9pcFxuXG4gICMgLS0tIG9uZS1zaG90OiBzY2hlbWFzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgI1xuICAjIEJvdGggc3RvcmVzIGJ1aWxkIGZyb20gZW1wdHkuIFJlLXJ1bnMgYXJlIHNhZmUgYW5kIGFyZSB0aGUgdXBncmFkZSBwYXRoOlxuICAjIGJvdGggcnVubmVycyBrZWVwIGEgbGVkZ2VyIGFuZCBhcHBseSBvbmx5IHdoYXQgaXMgcGVuZGluZy5cbiAgbWlncmF0ZTpcbiAgICBpbWFnZTogJHtPQV9JTUFHRV9SRVBPOi1naGNyLmlvL29wZW5sYWJzLXNvL29wZW5hbmFseXRpY3N9L21pZ3JhdGU6JHtPQV9JTUFHRV9UQUc6LXYwLjUuMH1cbiAgICByZXN0YXJ0OiAnbm8nXG4gICAgIyBSZXF1aXJlZCwgbm90IGRlY29yYXRpb246IHRoaXMgaXMgdGhlIHdvcmtlcidzIGltYWdlIHVuZGVyIGFub3RoZXIgdGFnLFxuICAgICMgc28gd2l0aG91dCBhbiBlbnRyeXBvaW50IG9mIGl0cyBvd24gaXQgYm9vdHMgYXMgdGhlIHdvcmtlciBhbmQgaXMgcmVmdXNlZFxuICAgICMgYnkgdGhlIGxlYXN0LXByaXZpbGVnZSBib3VuZGFyeS4gVGhlIHR3byBDTElzIGFyZSB3aGF0IGEgbWlncmF0aW9uIGlzLlxuICAgIGVudHJ5cG9pbnQ6XG4gICAgICBbJ3NoJywgJy1jJywgJ25vZGUgcGFja2FnZXMvcG9zdGdyZXMvZGlzdC9jbGkuanMgJiYgbm9kZSBwYWNrYWdlcy9jbGlja2hvdXNlL2Rpc3QvY2xpLmpzJ11cbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIEVOVklST05NRU5UOiBwcm9kdWN0aW9uXG4gICAgICBQT1NUR1JFU19NSUdSQVRJT05fVVJMOiBwb3N0Z3JlczovL29wZW5hbmFseXRpY3M6JHtQT1NUR1JFU19QQVNTV09SRH1AcG9zdGdyZXM6NTQzMi9vcGVuYW5hbHl0aWNzXG4gICAgICBDTElDS0hPVVNFX1VSTDogaHR0cDovL2NsaWNraG91c2U6ODEyM1xuICAgICAgIyBgYW5hbHl0aWNzYCwgYW5kIGl0IGNhbm5vdCBiZSBhbnl0aGluZyBlbHNlOiB0aGUgQ2xpY2tIb3VzZSBlbnRyeXBvaW50XG4gICAgICAjIHdyaXRlcyBldmVyeSBncmFudCBhZ2FpbnN0IGBhbmFseXRpY3MuPHRhYmxlPmAgYnkgbmFtZSwgc28gYSBkYXRhYmFzZVxuICAgICAgIyBjYWxsZWQgYW55dGhpbmcgZWxzZSBjb21lcyB1cCBlbXB0eSBvZiBwcml2aWxlZ2VzLiBOb3RlIHRoZSBzcGVsbGluZ1xuICAgICAgIyB0b286IHRoZSBtaWdyYXRpb24gQ0xJIHJlYWRzIENMSUNLSE9VU0VfREFUQUJBU0Ugd2hpbGUgdGhlIHdvcmtlciBhbmRcbiAgICAgICMgdGhlIGdhdGV3YXkgcmVhZCBDTElDS0hPVVNFX0RCLlxuICAgICAgQ0xJQ0tIT1VTRV9EQVRBQkFTRTogYW5hbHl0aWNzXG4gICAgICBDTElDS0hPVVNFX01JR1JBVElPTl9VU0VSOiBvYV9taWdyYXRpb25cbiAgICAgIENMSUNLSE9VU0VfTUlHUkFUSU9OX1BBU1NXT1JEOiAke0NMSUNLSE9VU0VfTUlHUkFUSU9OX1BBU1NXT1JEfVxuICAgIGRlcGVuZHNfb246XG4gICAgICBwb3N0Z3JlczogeyBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeSB9XG4gICAgICBjbGlja2hvdXNlOiB7IGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5IH1cblxuICAjIC0tLSBhcHBsaWNhdGlvbiBzZXJ2aWNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICMgVGhlIG9ubHkgcHJvY2VzcyBhbGxvd2VkIHRvIHJlYWQgQ2xpY2tIb3VzZS4gSG9sZHMgdGhlIFBVQkxJQyBoYWxmIG9mIHRoZVxuICAjIHF1ZXJ5IHBhaXIgYW5kIG5vdGhpbmcgZWxzZTogaXQgdmVyaWZpZXMgc2lnbmVkIHF1ZXJ5IGVudmVsb3BlcyBhbmQgY2FuXG4gICMgbmV2ZXIgbWludCBhIHJlcXVlc3QgaXQgd291bGQgYWNjZXB0LlxuICBnYXRld2F5OlxuICAgIGltYWdlOiAke09BX0lNQUdFX1JFUE86LWdoY3IuaW8vb3BlbmxhYnMtc28vb3BlbmFuYWx5dGljc30vcXVlcnktZ2F0ZXdheToke09BX0lNQUdFX1RBRzotdjAuNS4wfVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBOT0RFX0VOVjogcHJvZHVjdGlvblxuICAgICAgRU5WSVJPTk1FTlQ6IHByb2R1Y3Rpb25cbiAgICAgIExPR19MRVZFTDogaW5mb1xuICAgICAgUE9SVDogODA4MVxuICAgICAgQ0xJQ0tIT1VTRV9VUkw6IGh0dHA6Ly9jbGlja2hvdXNlOjgxMjNcbiAgICAgIENMSUNLSE9VU0VfREI6IGFuYWx5dGljc1xuICAgICAgQ0xJQ0tIT1VTRV9SRUFEX1VTRVI6IG9hX3JlYWRcbiAgICAgIENMSUNLSE9VU0VfUkVBRF9QQVNTV09SRDogJHtDTElDS0hPVVNFX1JFQURfUEFTU1dPUkR9XG4gICAgICBSRUFMVElNRV9DQUNIRV9SRURJU19VUkw6IHJlZGlzOi8vOiR7VkFMS0VZX1JFQUxUSU1FX1BBU1NXT1JEfUB2YWxrZXktcmVhbHRpbWU6NjM3OVxuICAgICAgUVVFUllfU0lHTklOR19LRVlfSUQ6IG9hLXNlbGZob3N0LTFcbiAgICAgIFFVRVJZX1NJR05JTkdfUFVCTElDX0tFWV9GSUxFOiAva2V5cy9xdWVyeS5wdWJsaWMucGVtXG4gICAgdm9sdW1lczpcbiAgICAgIC0ga2V5cy1nYXRld2F5Oi9rZXlzOnJvXG4gICAgaGVhbHRoY2hlY2s6ICpub2RlLWhlYWx0aGNoZWNrXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIG1pZ3JhdGU6IHsgY29uZGl0aW9uOiBzZXJ2aWNlX2NvbXBsZXRlZF9zdWNjZXNzZnVsbHkgfVxuICAgICAga2V5Z2VuOiB7IGNvbmRpdGlvbjogc2VydmljZV9jb21wbGV0ZWRfc3VjY2Vzc2Z1bGx5IH1cbiAgICAgIHZhbGtleS1yZWFsdGltZTogeyBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeSB9XG5cbiAgIyBDb250cm9sIHBsYW5lLCBhbmQgdGhlIG9ubHkgaG9sZGVyIG9mIGFsbCB0aHJlZSBwcml2YXRlIGhhbHZlcy4gU3RhcnRlZFxuICAjIGFmdGVyIHRoZSBnYXRld2F5OiB0aGUgYXBpIHNlbmRzIGEgZmllbGQgb24gZXZlcnkgZ2F0ZXdheSBxdWVyeSB0aGF0IGFuXG4gICMgb2xkZXIgZ2F0ZXdheSByZWplY3RzLCBzbyBnYXRld2F5LWZpcnN0IGhhcyBubyBicm9rZW4gd2luZG93IGF0IGFsbC5cbiAgYXBpOlxuICAgIGltYWdlOiAke09BX0lNQUdFX1JFUE86LWdoY3IuaW8vb3BlbmxhYnMtc28vb3BlbmFuYWx5dGljc30vYXBpOiR7T0FfSU1BR0VfVEFHOi12MC41LjB9XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIE5PREVfRU5WOiBwcm9kdWN0aW9uXG4gICAgICBFTlZJUk9OTUVOVDogcHJvZHVjdGlvblxuICAgICAgTE9HX0xFVkVMOiBpbmZvXG4gICAgICBQT1JUOiA4MDgyXG4gICAgICBEQVRBQkFTRV9VUkw6IHBvc3RncmVzOi8vb3BlbmFuYWx5dGljczoke1BPU1RHUkVTX1BBU1NXT1JEfUBwb3N0Z3Jlczo1NDMyL29wZW5hbmFseXRpY3NcbiAgICAgIFJFQUxUSU1FX0NBQ0hFX1JFRElTX1VSTDogcmVkaXM6Ly86JHtWQUxLRVlfUkVBTFRJTUVfUEFTU1dPUkR9QHZhbGtleS1yZWFsdGltZTo2Mzc5XG4gICAgICBRVUVSWV9HQVRFV0FZX1VSTDogaHR0cDovL2dhdGV3YXk6ODA4MVxuICAgICAgQVVUSF9CQVNFX1VSTDogaHR0cHM6Ly8ke0FQSV9ET01BSU59XG4gICAgICBBUFBfQkFTRV9VUkw6IGh0dHBzOi8vJHtBUFBfRE9NQUlOfVxuICAgICAgQ09MTEVDVE9SX0JBU0VfVVJMOiBodHRwczovLyR7Q09MTEVDVE9SX0RPTUFJTn1cbiAgICAgIEFVVEhfVFJVU1RFRF9PUklHSU5TOiBodHRwczovLyR7QVBQX0RPTUFJTn1cbiAgICAgIFBST0RVQ1RfTkFNRTogT3BlbiBBbmFseXRpY3NcbiAgICAgIEFVVEhfU0VDUkVUOiAke0FVVEhfU0VDUkVUfVxuICAgICAgVFJJQUxfSURFTlRJVFlfU0VDUkVUOiAke1RSSUFMX0lERU5USVRZX1NFQ1JFVH1cbiAgICAgIENSRURFTlRJQUxfU09VUkNFX1NFQ1JFVDogJHtDUkVERU5USUFMX1NPVVJDRV9TRUNSRVR9XG4gICAgICAjIEEgcGF0aCByYXRoZXIgdGhhbiB0aGUgdmFsdWU6IG5vIHBsYXRmb3JtIGdlbmVyYXRvciBtYWtlcyB0aGUgMzIgYnl0ZXNcbiAgICAgICMgdGhpcyB3YW50cy4gYGtleWdlbmAgd3JpdGVzIGl0OyBzZWUgdGhlIG5vdGUgdGhlcmUuXG4gICAgICBPQV9DUkVERU5USUFMX0tFWVJJTkdfRklMRTogL2tleXJpbmcvY3JlZGVudGlhbC1rZXlyaW5nLmpzb25cbiAgICAgIFFVRVJZX1NJR05JTkdfS0VZX0lEOiBvYS1zZWxmaG9zdC0xXG4gICAgICAjIFRoZSBkZWZhdWx0IGlzIGBkaXNhYmxlZGAsIHdyaXR0ZW4gZm9yIHRoZSBob3N0ZWQgcHJvZHVjdC4gVGhlXG4gICAgICAjIGZpcnN0LXJ1biBcImNyZWF0ZSB0aGUgZmlyc3QgYWNjb3VudFwiIHNjcmVlbiBkZXBlbmRzIG9uIGl0IGJlaW5nIG9uLlxuICAgICAgQVVUSF9QQVNTV09SRF9TSUdOSU46IGVuYWJsZWRcbiAgICAgIFFVRVJZX1NJR05JTkdfUFJJVkFURV9LRVlfRklMRTogL2tleXMvcXVlcnkucHJpdmF0ZS5wZW1cbiAgICAgIFJFQUxUSU1FX1RPS0VOX1NJR05JTkdfS0VZX0ZJTEU6IC9rZXlzL3JlYWx0aW1lLnByaXZhdGUucGVtXG4gICAgdm9sdW1lczpcbiAgICAgIC0ga2V5cy1hcGk6L2tleXM6cm9cbiAgICAgIC0ga2V5cmluZzova2V5cmluZzpyb1xuICAgIGhlYWx0aGNoZWNrOiAqbm9kZS1oZWFsdGhjaGVja1xuICAgIGRlcGVuZHNfb246XG4gICAgICBtaWdyYXRlOiB7IGNvbmRpdGlvbjogc2VydmljZV9jb21wbGV0ZWRfc3VjY2Vzc2Z1bGx5IH1cbiAgICAgIGtleWdlbjogeyBjb25kaXRpb246IHNlcnZpY2VfY29tcGxldGVkX3N1Y2Nlc3NmdWxseSB9XG4gICAgICBnYXRld2F5OiB7IGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5IH1cbiAgICAgIHZhbGtleS1yZWFsdGltZTogeyBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeSB9XG5cbiAgIyBJbmdlc3QsIGFuZCB0aGUgb25lIHNlcnZpY2UgdGhhdCBldmVyIHNlZXMgYSByYXcgdmlzaXRvciBJUC4gSXQgYWxzb1xuICAjIHNlcnZlcyBgb2EuanNgIGZyb20gdGhlIGNvcHkgYmFrZWQgaW50byBpdHMgb3duIGltYWdlLlxuICBjb2xsZWN0b3I6XG4gICAgaW1hZ2U6ICR7T0FfSU1BR0VfUkVQTzotZ2hjci5pby9vcGVubGFicy1zby9vcGVuYW5hbHl0aWNzfS9jb2xsZWN0b3I6JHtPQV9JTUFHRV9UQUc6LXYwLjUuMH1cbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGVudmlyb25tZW50OlxuICAgICAgTk9ERV9FTlY6IHByb2R1Y3Rpb25cbiAgICAgIEVOVklST05NRU5UOiBwcm9kdWN0aW9uXG4gICAgICBMT0dfTEVWRUw6IGluZm9cbiAgICAgIFBPUlQ6IDgwODNcbiAgICAgIERBVEFCQVNFX1VSTDogcG9zdGdyZXM6Ly9vcGVuYW5hbHl0aWNzOiR7UE9TVEdSRVNfUEFTU1dPUkR9QHBvc3RncmVzOjU0MzIvb3BlbmFuYWx5dGljc1xuICAgICAgRVZFTlRfU1RSRUFNX1JFRElTX1VSTDogcmVkaXM6Ly86JHtWQUxLRVlfUVVFVUVfUEFTU1dPUkR9QHZhbGtleS1xdWV1ZTo2Mzc5XG4gICAgICBSRUFMVElNRV9DQUNIRV9SRURJU19VUkw6IHJlZGlzOi8vOiR7VkFMS0VZX1JFQUxUSU1FX1BBU1NXT1JEfUB2YWxrZXktcmVhbHRpbWU6NjM3OVxuICAgICAgQU5PTllNT1VTX0lERU5USVRZX1NFQ1JFVDogJHtBTk9OWU1PVVNfSURFTlRJVFlfU0VDUkVUfVxuICAgICAgQU5PTllNT1VTX0lERU5USVRZX0tFWV9WRVJTSU9OOiAxXG4gICAgICAjIFNldCwgYmVjYXVzZSB0aGUgYGdlb2lwYCBvbmUtc2hvdCBndWFyYW50ZWVzIHRoZSBmaWxlLiBUbyB1c2UgTWF4TWluZFxuICAgICAgIyBpbnN0ZWFkLCBvciBhIG5ld2VyIGJ1aWxkOiBjb3B5IHlvdXIgZmlsZSBpbnRvIHRoZSB2b2x1bWUgYW5kIHBvaW50XG4gICAgICAjIHRoaXMgYXQgaXQuXG4gICAgICBHRU9JUF9EQl9QQVRIOiAvZ2VvaXAvZGJpcC1jaXR5LWxpdGUubW1kYlxuICAgIHZvbHVtZXM6XG4gICAgICAjIE5vdCByZWFkLW9ubHk6IGBkb2NrZXIgY3BgIGludG8gdGhlIHJ1bm5pbmcgY29udGFpbmVyIGlzIHRoZSBkb2N1bWVudGVkXG4gICAgICAjIHdheSB0byByZWZyZXNoIHRoZSBkYXRhYmFzZSBvciBzd2FwIGluIE1heE1pbmQuXG4gICAgICAtIGdlb2lwOi9nZW9pcFxuICAgIGhlYWx0aGNoZWNrOiAqbm9kZS1oZWFsdGhjaGVja1xuICAgIGRlcGVuZHNfb246XG4gICAgICBtaWdyYXRlOiB7IGNvbmRpdGlvbjogc2VydmljZV9jb21wbGV0ZWRfc3VjY2Vzc2Z1bGx5IH1cbiAgICAgIGtleWdlbjogeyBjb25kaXRpb246IHNlcnZpY2VfY29tcGxldGVkX3N1Y2Nlc3NmdWxseSB9XG4gICAgICBnZW9pcDogeyBjb25kaXRpb246IHNlcnZpY2VfY29tcGxldGVkX3N1Y2Nlc3NmdWxseSB9XG4gICAgICB2YWxrZXktcXVldWU6IHsgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkgfVxuICAgICAgdmFsa2V5LXJlYWx0aW1lOiB7IGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5IH1cblxuICAjIFRoZSBTU0Ugc3RyZWFtIGJlaGluZCB0aGUgbGl2ZSBkYXNoYm9hcmQuIFZlcmlmaWVzIHNob3J0LWxpdmVkIHRva2VucyB0aGVcbiAgIyBhcGkgbWludHMsIGFuZCBob2xkcyB0aGUgUFVCTElDIGhhbGYgb25seS5cbiAgcmVhbHRpbWU6XG4gICAgaW1hZ2U6ICR7T0FfSU1BR0VfUkVQTzotZ2hjci5pby9vcGVubGFicy1zby9vcGVuYW5hbHl0aWNzfS9yZWFsdGltZToke09BX0lNQUdFX1RBRzotdjAuNS4wfVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBOT0RFX0VOVjogcHJvZHVjdGlvblxuICAgICAgRU5WSVJPTk1FTlQ6IHByb2R1Y3Rpb25cbiAgICAgIExPR19MRVZFTDogaW5mb1xuICAgICAgUE9SVDogODA4NFxuICAgICAgUkVBTFRJTUVfQ0FDSEVfUkVESVNfVVJMOiByZWRpczovLzoke1ZBTEtFWV9SRUFMVElNRV9QQVNTV09SRH1AdmFsa2V5LXJlYWx0aW1lOjYzNzlcbiAgICAgIFJFQUxUSU1FX1RPS0VOX1ZFUklGWV9LRVlfRklMRTogL2tleXMvcmVhbHRpbWUucHVibGljLnBlbVxuICAgIHZvbHVtZXM6XG4gICAgICAtIGtleXMtcmVhbHRpbWU6L2tleXM6cm9cbiAgICBoZWFsdGhjaGVjazogKm5vZGUtaGVhbHRoY2hlY2tcbiAgICBkZXBlbmRzX29uOlxuICAgICAgbWlncmF0ZTogeyBjb25kaXRpb246IHNlcnZpY2VfY29tcGxldGVkX3N1Y2Nlc3NmdWxseSB9XG4gICAgICBrZXlnZW46IHsgY29uZGl0aW9uOiBzZXJ2aWNlX2NvbXBsZXRlZF9zdWNjZXNzZnVsbHkgfVxuICAgICAgdmFsa2V5LXJlYWx0aW1lOiB7IGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5IH1cblxuICAjIERyYWlucyB0aGUgcXVldWUgaW50byBDbGlja0hvdXNlOyBzZXNzaW9ucywgcm9sbHVwcywgZXhwb3J0cywgbWFpbCxcbiAgIyBkZWxldGlvbnMuIE5ldmVyIHB1YmxpYy5cbiAgd29ya2VyOlxuICAgIGltYWdlOiAke09BX0lNQUdFX1JFUE86LWdoY3IuaW8vb3BlbmxhYnMtc28vb3BlbmFuYWx5dGljc30vd29ya2VyOiR7T0FfSU1BR0VfVEFHOi12MC41LjB9XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIE5PREVfRU5WOiBwcm9kdWN0aW9uXG4gICAgICBFTlZJUk9OTUVOVDogcHJvZHVjdGlvblxuICAgICAgTE9HX0xFVkVMOiBpbmZvXG4gICAgICBQT1JUOiA4MDg1XG4gICAgICBEQVRBQkFTRV9VUkw6IHBvc3RncmVzOi8vb3BlbmFuYWx5dGljczoke1BPU1RHUkVTX1BBU1NXT1JEfUBwb3N0Z3Jlczo1NDMyL29wZW5hbmFseXRpY3NcbiAgICAgIEVWRU5UX1NUUkVBTV9SRURJU19VUkw6IHJlZGlzOi8vOiR7VkFMS0VZX1FVRVVFX1BBU1NXT1JEfUB2YWxrZXktcXVldWU6NjM3OVxuICAgICAgUkVBTFRJTUVfQ0FDSEVfUkVESVNfVVJMOiByZWRpczovLzoke1ZBTEtFWV9SRUFMVElNRV9QQVNTV09SRH1AdmFsa2V5LXJlYWx0aW1lOjYzNzlcbiAgICAgIENMSUNLSE9VU0VfVVJMOiBodHRwOi8vY2xpY2tob3VzZTo4MTIzXG4gICAgICBDTElDS0hPVVNFX0RCOiBhbmFseXRpY3NcbiAgICAgIENMSUNLSE9VU0VfSU5HRVNUX1VTRVI6IG9hX2luZ2VzdFxuICAgICAgQ0xJQ0tIT1VTRV9JTkdFU1RfUEFTU1dPUkQ6ICR7Q0xJQ0tIT1VTRV9JTkdFU1RfUEFTU1dPUkR9XG4gICAgICBDTElDS0hPVVNFX01BSU5URU5BTkNFX1VTRVI6IG9hX21haW50ZW5hbmNlXG4gICAgICBDTElDS0hPVVNFX01BSU5URU5BTkNFX1BBU1NXT1JEOiAke0NMSUNLSE9VU0VfTUFJTlRFTkFOQ0VfUEFTU1dPUkR9XG4gICAgICBBTk9OWU1PVVNfSURFTlRJVFlfU0VDUkVUOiAke0FOT05ZTU9VU19JREVOVElUWV9TRUNSRVR9XG4gICAgICBBTk9OWU1PVVNfSURFTlRJVFlfS0VZX1ZFUlNJT046IDFcbiAgICAgICMgQSBwYXRoIHJhdGhlciB0aGFuIHRoZSB2YWx1ZTogYGtleWdlbmAgd3JpdGVzIGl0OyBzZWUgdGhlIG5vdGUgdGhlcmUuXG4gICAgICBPQV9DUkVERU5USUFMX0tFWVJJTkdfRklMRTogL2tleXJpbmcvY3JlZGVudGlhbC1rZXlyaW5nLmpzb25cbiAgICAgIFBST0RVQ1RfTkFNRTogT3BlbiBBbmFseXRpY3NcbiAgICAgICMgT25seSBhIGZyb20tYWRkcmVzcywgYW5kIG5vdGhpbmcgc2VuZHMgdW50aWwgYSB0cmFuc3BvcnQgaXMgY29uZmlndXJlZFxuICAgICAgIyB1bmRlciBBY2NvdW50IHRoZW4gRGVwbG95bWVudC4gVGhlIHNjaGVtYSB3YW50cyBhdCBsZWFzdCB0aHJlZVxuICAgICAgIyBjaGFyYWN0ZXJzLCBzbyBhbiBlbXB0eSB2YWx1ZSB3b3VsZCBiZSBhIGNyYXNoIGxvb3AgY2F1c2VkIGJ5IGFcbiAgICAgICMgdmFyaWFibGUgbm90aGluZyB0b2xkIHRoZSBvcGVyYXRvciB3YXMgcmVxdWlyZWQuXG4gICAgICBFTUFJTF9GUk9NOiAke09BX0VNQUlMX0ZST006LU9wZW4gQW5hbHl0aWNzIDxhbmFseXRpY3NAYW5hbHl0aWNzLmV4YW1wbGU+fVxuICAgICMgVGhlIHdvcmtlciBkZWNyeXB0cyB3aGF0IHRoZSBhcGkgZW5jcnlwdGVkLCBzbyBpdCBob2xkcyB0aGUgc2FtZSBrZXlyaW5nXG4gICAgIyBhbmQgcmVhZHMgaXQgZnJvbSB0aGUgc2FtZSBmaWxlLlxuICAgIHZvbHVtZXM6XG4gICAgICAtIGtleXJpbmc6L2tleXJpbmc6cm9cbiAgICBoZWFsdGhjaGVjazogKm5vZGUtaGVhbHRoY2hlY2tcbiAgICBkZXBlbmRzX29uOlxuICAgICAgbWlncmF0ZTogeyBjb25kaXRpb246IHNlcnZpY2VfY29tcGxldGVkX3N1Y2Nlc3NmdWxseSB9XG4gICAgICBrZXlnZW46IHsgY29uZGl0aW9uOiBzZXJ2aWNlX2NvbXBsZXRlZF9zdWNjZXNzZnVsbHkgfVxuICAgICAgdmFsa2V5LXF1ZXVlOiB7IGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5IH1cbiAgICAgIHZhbGtleS1yZWFsdGltZTogeyBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeSB9XG5cbiAgIyBUaGUgZGFzaGJvYXJkLiBUaGUgcHVibGlzaGVkIGltYWdlIGlzIGJ1aWx0IGFnYWluc3QgcGxhY2Vob2xkZXIgb3JpZ2lucyBhbmRcbiAgIyBpdHMgZW50cnlwb2ludCBzdWJzdGl0dXRlcyB0aGUgdGhyZWUgYE5FWFRfUFVCTElDXypgIHZhbHVlcyBiZWxvdyBhdCBldmVyeVxuICAjIGNvbnRhaW5lciBzdGFydCwgd2hpY2ggaXMgd2hhdCBsZXRzIG9uZSBpbWFnZSBzZXJ2ZSBhbnkgZGVwbG95bWVudC5cbiAgd2ViOlxuICAgIGltYWdlOiAke09BX0lNQUdFX1JFUE86LWdoY3IuaW8vb3BlbmxhYnMtc28vb3BlbmFuYWx5dGljc30vd2ViOiR7T0FfSU1BR0VfVEFHOi12MC41LjB9XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIE5PREVfRU5WOiBwcm9kdWN0aW9uXG4gICAgICBQT1JUOiAzMDAwXG4gICAgICBORVhUX1BVQkxJQ19BUElfVVJMOiBodHRwczovLyR7QVBJX0RPTUFJTn1cbiAgICAgIE5FWFRfUFVCTElDX1JFQUxUSU1FX1VSTDogaHR0cHM6Ly8ke1JFQUxUSU1FX0RPTUFJTn1cbiAgICAgIE5FWFRfUFVCTElDX0NPTExFQ1RPUl9VUkw6IGh0dHBzOi8vJHtDT0xMRUNUT1JfRE9NQUlOfVxuICAgICMgSXRzIG93biBoZWFsdGhjaGVjaywgbm90IHRoZSBzaGFyZWQgb25lOiB0aGUgZGFzaGJvYXJkIGhhcyBubyBgL2hlYWx0aGBcbiAgICAjIHJvdXRlLCBhbmQgYC9sb2dpbmAgcmVuZGVycyB3aXRob3V0IGEgc2Vzc2lvbiwgc28gYSAyMDAgbWVhbnMgc2VydmluZy5cbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6XG4gICAgICAgIFtcbiAgICAgICAgICAnQ01EJyxcbiAgICAgICAgICAnbm9kZScsXG4gICAgICAgICAgJy1lJyxcbiAgICAgICAgICBcImZldGNoKCdodHRwOi8vMTI3LjAuMC4xOjMwMDAvbG9naW4nKS50aGVuKHI9PnByb2Nlc3MuZXhpdChyLm9rPzA6MSkpLmNhdGNoKCgpPT5wcm9jZXNzLmV4aXQoMSkpXCIsXG4gICAgICAgIF1cbiAgICAgIGludGVydmFsOiAxNXNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiAxMFxuICAgICAgc3RhcnRfcGVyaW9kOiAzMHNcbiAgICBkZXBlbmRzX29uOlxuICAgICAgYXBpOiB7IGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5IH1cblxuICAjIC0tLSBlZGdlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICMgQWxsIGZvdXIgcHVibGljIGhvc3RuYW1lcyBsYW5kIGhlcmUgKHNlZSBgdGVtcGxhdGUudG9tbGApLCBhbmQgdGhpcyBpcyB0aGVcbiAgIyBvbmUgam9iIERva3Bsb3kncyBUcmFlZmlrIGlzIG5vdCBjb25maWd1cmVkIGZvcjogZGVsZXRpbmcgdGhlXG4gICMgY2xpZW50LXNldHRhYmxlIGlkZW50aXR5IGhlYWRlcnMgYmVmb3JlIGFueXRoaW5nIGludGVybmFsIHJlYWRzIHRoZW0uIFRoZVxuICAjIENhZGR5ZmlsZSBhcnJpdmVzIGFzIGEgdGVtcGxhdGUgbW91bnQuIERvIG5vdCBwb2ludCB0aGUgZG9tYWlucyBhdCB0aGVcbiAgIyBzZXJ2aWNlcyBkaXJlY3RseTogdGhhdCB3b3VsZCBzaGlwIHRoZSBzdGFjayB3aXRob3V0IGl0cyBoZWFkZXIgaHlnaWVuZS5cbiAgZWRnZTpcbiAgICBpbWFnZTogY2FkZHk6Mi1hbHBpbmVcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGVudmlyb25tZW50OlxuICAgICAgT0FfQVBQX0hPU1Q6ICR7QVBQX0RPTUFJTn1cbiAgICAgIE9BX0FQSV9IT1NUOiAke0FQSV9ET01BSU59XG4gICAgICBPQV9DT0xMRUNUT1JfSE9TVDogJHtDT0xMRUNUT1JfRE9NQUlOfVxuICAgICAgT0FfUkVBTFRJTUVfSE9TVDogJHtSRUFMVElNRV9ET01BSU59XG4gICAgdm9sdW1lczpcbiAgICAgIC0gLi4vZmlsZXMvQ2FkZHlmaWxlOi9ldGMvY2FkZHkvQ2FkZHlmaWxlOnJvXG4gICAgZXhwb3NlOlxuICAgICAgLSAnODAnXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIHdlYjogeyBjb25kaXRpb246IHNlcnZpY2Vfc3RhcnRlZCB9XG4gICAgICBhcGk6IHsgY29uZGl0aW9uOiBzZXJ2aWNlX3N0YXJ0ZWQgfVxuICAgICAgY29sbGVjdG9yOiB7IGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkIH1cbiAgICAgIHJlYWx0aW1lOiB7IGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkIH1cblxudm9sdW1lczpcbiAgcGctZGF0YTpcbiAgY2gtZGF0YTpcbiAgdmFsa2V5LXF1ZXVlLWRhdGE6XG4gIHZhbGtleS1yZWFsdGltZS1kYXRhOlxuICBrZXlzLWFwaTpcbiAga2V5cy1nYXRld2F5OlxuICBrZXlzLXJlYWx0aW1lOlxuICBrZXlyaW5nOlxuICBnZW9pcDoiLAogICJjb25maWciOiAiIyBPcGVuQW5hbHl0aWNzIGZvciBEb2twbG95LiBGb3VyIGhvc3RuYW1lcywgbm90IGZvdXIgcGF0aHM6IHRoZSBkYXNoYm9hcmQsXG4jIHRoZSBhcGksIHRoZSBjb2xsZWN0b3IgYW5kIHRoZSByZWFsdGltZSBzdHJlYW0gYXJlIHNlcGFyYXRlIG9yaWdpbnMsIGFuZCBhbGxcbiMgZm91ciByb3V0ZSB0aHJvdWdoIHRoZSBgZWRnZWAgc2VydmljZSBiZWxvdywgd2hpY2ggc3RyaXBzIHRoZVxuIyBjbGllbnQtc2V0dGFibGUgaWRlbnRpdHkgaGVhZGVycyAoc2VlIHRoZSBtb3VudGVkIENhZGR5ZmlsZSkuXG4jXG4jIEFmdGVyIGRlcGxveWluZywgcmVwbGFjZSB0aGUgZm91ciBnZW5lcmF0ZWQgZG9tYWlucyB3aXRoIHJlYWwgRE5TIHJlY29yZHMgaW5cbiMgdGhlIERvbWFpbnMgdGFiIEFORCB1cGRhdGUgdGhlIG1hdGNoaW5nICpfRE9NQUlOIGVudmlyb25tZW50IHZhcmlhYmxlcyB0b1xuIyB0aGUgc2FtZSB2YWx1ZXMsIHRoZW4gcmVkZXBsb3k6IHRoZSBhcGkgYnVpbGRzIGF1dGggb3JpZ2lucywgQ09SUyBhbmQgZXZlcnlcbiMgbGluayBpdCBoYW5kcyBvdXQgZnJvbSB0aG9zZSB2YXJpYWJsZXMsIG5vdCBmcm9tIHRoZSBEb21haW5zIHRhYi5cblxuW3ZhcmlhYmxlc11cbmFwcF9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5hcGlfZG9tYWluID0gXCIke2RvbWFpbn1cIlxuY29sbGVjdG9yX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbnJlYWx0aW1lX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbnBvc3RncmVzX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5jbGlja2hvdXNlX2luZ2VzdF9wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxuY2xpY2tob3VzZV9yZWFkX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5jbGlja2hvdXNlX21haW50ZW5hbmNlX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5jbGlja2hvdXNlX21pZ3JhdGlvbl9wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxudmFsa2V5X3F1ZXVlX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG52YWxrZXlfcmVhbHRpbWVfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbmF1dGhfc2VjcmV0ID0gXCIke2Jhc2U2NDo2NH1cIlxudHJpYWxfaWRlbnRpdHlfc2VjcmV0ID0gXCIke2Jhc2U2NDo2NH1cIlxuY3JlZGVudGlhbF9zb3VyY2Vfc2VjcmV0ID0gXCIke2Jhc2U2NDo2NH1cIlxuYW5vbnltb3VzX2lkZW50aXR5X3NlY3JldCA9IFwiJHtiYXNlNjQ6NjR9XCJcblxuW2NvbmZpZ11cblxuIyBBbGwgZm91ciBkb21haW5zIHBvaW50IGF0IHRoZSBDYWRkeSBlZGdlIG9uIHB1cnBvc2UuIFBvaW50aW5nIG9uZSBhdCBpdHNcbiMgc2VydmljZSBkaXJlY3RseSB3b3VsZCBza2lwIHRoZSBoZWFkZXIgaHlnaWVuZSB0aGUgZWRnZSBleGlzdHMgZm9yLlxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiZWRnZVwiXG5wb3J0ID0gODBcbmhvc3QgPSBcIiR7YXBwX2RvbWFpbn1cIlxuXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJlZGdlXCJcbnBvcnQgPSA4MFxuaG9zdCA9IFwiJHthcGlfZG9tYWlufVwiXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcImVkZ2VcIlxucG9ydCA9IDgwXG5ob3N0ID0gXCIke2NvbGxlY3Rvcl9kb21haW59XCJcblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiZWRnZVwiXG5wb3J0ID0gODBcbmhvc3QgPSBcIiR7cmVhbHRpbWVfZG9tYWlufVwiXG5cbltjb25maWcuZW52XVxuIyBUaGUgZm91ciBwdWJsaWMgb3JpZ2lucy4gVGhlIGNvbXBvc2UgZmlsZSBkZXJpdmVzIEFVVEhfQkFTRV9VUkwsXG4jIEFVVEhfVFJVU1RFRF9PUklHSU5TIGFuZCB0aGUgZGFzaGJvYXJkJ3MgTkVYVF9QVUJMSUNfKiB2YWx1ZXMgZnJvbSB0aGVzZSxcbiMgc28gdGhleSBtdXN0IGFsd2F5cyBlcXVhbCB0aGUgZG9tYWlucyBzZXJ2ZWQgYWJvdmUuXG5BUFBfRE9NQUlOID0gXCIke2FwcF9kb21haW59XCJcbkFQSV9ET01BSU4gPSBcIiR7YXBpX2RvbWFpbn1cIlxuQ09MTEVDVE9SX0RPTUFJTiA9IFwiJHtjb2xsZWN0b3JfZG9tYWlufVwiXG5SRUFMVElNRV9ET01BSU4gPSBcIiR7cmVhbHRpbWVfZG9tYWlufVwiXG5cbiMgU3RvcmUgY3JlZGVudGlhbHMuIEVhY2ggc2VydmljZSByZWNlaXZlcyBvbmx5IHRoZSBvbmVzIGl0IGlzIGFsbG93ZWQgdG9cbiMgaG9sZDsgdGhlIGNvbXBvc2UgZmlsZSBpbnRlcnBvbGF0ZXMgdGhlbSBwZXIgc2VydmljZSBvbiBwdXJwb3NlLlxuUE9TVEdSRVNfUEFTU1dPUkQgPSBcIiR7cG9zdGdyZXNfcGFzc3dvcmR9XCJcbkNMSUNLSE9VU0VfSU5HRVNUX1BBU1NXT1JEID0gXCIke2NsaWNraG91c2VfaW5nZXN0X3Bhc3N3b3JkfVwiXG5DTElDS0hPVVNFX1JFQURfUEFTU1dPUkQgPSBcIiR7Y2xpY2tob3VzZV9yZWFkX3Bhc3N3b3JkfVwiXG5DTElDS0hPVVNFX01BSU5URU5BTkNFX1BBU1NXT1JEID0gXCIke2NsaWNraG91c2VfbWFpbnRlbmFuY2VfcGFzc3dvcmR9XCJcbkNMSUNLSE9VU0VfTUlHUkFUSU9OX1BBU1NXT1JEID0gXCIke2NsaWNraG91c2VfbWlncmF0aW9uX3Bhc3N3b3JkfVwiXG5WQUxLRVlfUVVFVUVfUEFTU1dPUkQgPSBcIiR7dmFsa2V5X3F1ZXVlX3Bhc3N3b3JkfVwiXG5WQUxLRVlfUkVBTFRJTUVfUEFTU1dPUkQgPSBcIiR7dmFsa2V5X3JlYWx0aW1lX3Bhc3N3b3JkfVwiXG5cbiMgQXBwbGljYXRpb24gc2VjcmV0cy4gVGhlIHR3byBzaWduaW5nIGtleSBwYWlycyBhbmQgdGhlIGNyZWRlbnRpYWwga2V5cmluZ1xuIyBhcmUgZGVsaWJlcmF0ZWx5IE5PVCBoZXJlOiB0aGUgYGtleWdlbmAgb25lLXNob3QgZ2VuZXJhdGVzIHRoZW0gaW5zaWRlIHRoZVxuIyBzdGFjaywgYmVjYXVzZSBubyBwbGF0Zm9ybSBnZW5lcmF0b3IgY2FuIHByb2R1Y2UgYSBrZXlwYWlyIHdob3NlIGhhbHZlc1xuIyBtdXN0IG1hdGNoIGFjcm9zcyB0d28gc2VydmljZXMuXG5BVVRIX1NFQ1JFVCA9IFwiJHthdXRoX3NlY3JldH1cIlxuVFJJQUxfSURFTlRJVFlfU0VDUkVUID0gXCIke3RyaWFsX2lkZW50aXR5X3NlY3JldH1cIlxuQ1JFREVOVElBTF9TT1VSQ0VfU0VDUkVUID0gXCIke2NyZWRlbnRpYWxfc291cmNlX3NlY3JldH1cIlxuQU5PTllNT1VTX0lERU5USVRZX1NFQ1JFVCA9IFwiJHthbm9ueW1vdXNfaWRlbnRpdHlfc2VjcmV0fVwiXG5cbiMgVGhlIHNlbmRlciBhZGRyZXNzIG9uIG91dGdvaW5nIG1haWwuIE9ubHkgYSBmcm9tLWFkZHJlc3M6IG5vdGhpbmcgc2VuZHNcbiMgdW50aWwgYSB0cmFuc3BvcnQgaXMgY29uZmlndXJlZCBpbiB0aGUgZGFzaGJvYXJkIHVuZGVyIEFjY291bnQgdGhlblxuIyBEZXBsb3ltZW50LiBSZXBsYWNlIGl0IHdoZW4geW91IHNldCB0aGF0IHVwLlxuT0FfRU1BSUxfRlJPTSA9IFwiT3BlbiBBbmFseXRpY3MgPGFuYWx5dGljc0BhbmFseXRpY3MuZXhhbXBsZT5cIlxuXG4jIFRoZSBlZGdlLCBiZWhpbmQgRG9rcGxveSdzIFRyYWVmaWsuXG4jXG4jIFRyYWVmaWsgdGVybWluYXRlcyBUTFMsIHJvdXRlcyBhbGwgZm91ciBob3N0bmFtZXMgaGVyZSwgYW5kIHdyaXRlc1xuIyBYLUZvcndhcmRlZC1Gb3IgYW5kIFgtUmVhbC1JcCBmcm9tIHRoZSBjb25uZWN0aW9uLiBXaGF0IGl0IGRvZXMgbm90IGRvIGlzXG4jIHRvdWNoIENGLUNvbm5lY3RpbmctSVAgYW5kIGl0cyBmYW1pbHksIGJlY2F1c2UgdGhleSBhcmUgbm9ib2R5J3Mgc3RhbmRhcmQg4oCUXG4jIGFuZCB0aGUgY29sbGVjdG9yIHJlYWRzIHRoZSB2aXNpdG9yJ3MgYWRkcmVzcyBhbmQgZ2VvIGZyb20gZXhhY3RseSB0aGF0XG4jIGZhbWlseSBvZiBoZWFkZXJzLiBXaXRob3V0IHRoZSBkZWxldGlvbnMgYmVsb3csIGFueSB2aXNpdG9yIGNvdWxkIHBpY2sgdGhlaXJcbiMgb3duIHJhdGUtbGltaXQgYnVja2V0IG9yIHdyaXRlIHRoZWlyIG93biBjb3VudHJ5IGludG8gdGhlIGFuYWx5dGljcy5cbiNcbiMgWC1SZWFsLUlQIGlzIGRlbGliZXJhdGVseSBOT1QgYXNzZXJ0ZWQgaGVyZTogdGhlIHByb3h5IGluIGZyb250IG9mIHRoaXMgb25lXG4jIG93bnMgaXQuIEFzc2VydGluZyBpdCBmcm9tIHRoaXMgaG9wIHdvdWxkIHN0YW1wIFRyYWVmaWsncyBhZGRyZXNzIG9uIGV2ZXJ5XG4jIHZpc2l0b3IuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcIi9DYWRkeWZpbGVcIlxuY29udGVudCA9IFwiXCJcIlxue1xuXHRhdXRvX2h0dHBzIG9mZlxufVxuXG4oY2xpZW50X2lkZW50aXR5X2h5Z2llbmUpIHtcblx0aGVhZGVyX3VwIC1GbHktQ2xpZW50LUlQXG5cdGhlYWRlcl91cCAtQ0YtQ29ubmVjdGluZy1JUFxuXHRoZWFkZXJfdXAgLVRydWUtQ2xpZW50LUlQXG5cdGhlYWRlcl91cCAtWC1WZXJjZWwtSVAtQ291bnRyeVxuXHRoZWFkZXJfdXAgLVgtVmVyY2VsLUlQLUNpdHlcblx0aGVhZGVyX3VwIC1GbHktQ2xpZW50LUNvdW50cnlcblx0aGVhZGVyX3VwIC1DRi1JUENvdW50cnlcblx0aGVhZGVyX3VwIC1DRi1JUENpdHlcbn1cblxuOjgwIHtcblx0QHdlYiBob3N0IHskT0FfQVBQX0hPU1R9XG5cdGhhbmRsZSBAd2ViIHtcblx0XHRyZXZlcnNlX3Byb3h5IHdlYjozMDAwXG5cdH1cblxuXHRAYXBpIGhvc3QgeyRPQV9BUElfSE9TVH1cblx0aGFuZGxlIEBhcGkge1xuXHRcdHJldmVyc2VfcHJveHkgYXBpOjgwODIge1xuXHRcdFx0aW1wb3J0IGNsaWVudF9pZGVudGl0eV9oeWdpZW5lXG5cdFx0fVxuXHR9XG5cblx0QGNvbGxlY3RvciBob3N0IHskT0FfQ09MTEVDVE9SX0hPU1R9XG5cdGhhbmRsZSBAY29sbGVjdG9yIHtcblx0XHRyZXZlcnNlX3Byb3h5IGNvbGxlY3Rvcjo4MDgzIHtcblx0XHRcdGltcG9ydCBjbGllbnRfaWRlbnRpdHlfaHlnaWVuZVxuXHRcdH1cblx0fVxuXG5cdEByZWFsdGltZSBob3N0IHskT0FfUkVBTFRJTUVfSE9TVH1cblx0aGFuZGxlIEByZWFsdGltZSB7XG5cdFx0cmV2ZXJzZV9wcm94eSByZWFsdGltZTo4MDg0IHtcblx0XHRcdGltcG9ydCBjbGllbnRfaWRlbnRpdHlfaHlnaWVuZVxuXHRcdH1cblx0fVxuXG5cdHJlc3BvbmQgNDA0XG59XG5cIlwiXCIiCn0=

Configuration

The exact Docker Compose and template configuration this template deploys.

Related Templates

Self-host Open Analytics in minutes

Dokploy is a free, open source deployment platform. Deploy Open Analytics and 532+ other templates on your own infrastructure with a single click.