@mochabug/adaptkit 1.0.0-beta.5 → 1.0.0-beta.7

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/bin/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
- var k={name:"@mochabug/adaptkit",version:"1.0.0-beta.5"};import m from"chalk";import{program as P}from"commander";import Bn from"figlet";import _n from"fs";import Ln from"is-valid-hostname";import En from"path";import Sn from"semver";import In from"update-notifier";import{confirm as en,input as tn,select as st}from"@inquirer/prompts";import Ce from"chalk";import nn from"fs";import{ServiceType as St}from"@protobuf-ts/runtime-rpc";import{WireType as u}from"@protobuf-ts/runtime";import{UnknownFieldHandler as v}from"@protobuf-ts/runtime";import{reflectionMergePartial as E}from"@protobuf-ts/runtime";import{MessageType as S}from"@protobuf-ts/runtime";var Be=(n=>(n[n.UNSPECIFIED=0]="UNSPECIFIED",n[n.ACTION=1]="ACTION",n[n.BROWSER=2]="BROWSER",n[n.CRON_TRIGGER=3]="CRON_TRIGGER",n[n.EXTERNAL_TRIGGER=4]="EXTERNAL_TRIGGER",n))(Be||{}),Je=(a=>(a[a.UNSPECIFIED=0]="UNSPECIFIED",a[a.SECRET=1]="SECRET",a[a.STRING=2]="STRING",a[a.SWITCH=3]="SWITCH",a))(Je||{}),qe=(t=>(t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.RS256=1]="RS256",t))(qe||{}),ze=(n=>(n[n.UNSPECIFIED=0]="UNSPECIFIED",n[n.AUTHORIZATION_CODE=1]="AUTHORIZATION_CODE",n[n.CLIENT_CREDENTIALS=2]="CLIENT_CREDENTIALS",n[n.JWT_BEARER=3]="JWT_BEARER",n[n.SAML2_BEARER=4]="SAML2_BEARER",n))(ze||{}),Ke=(s=>(s[s.UNSPECIFIED=0]="UNSPECIFIED",s[s.BASIC=1]="BASIC",s[s.FORM=2]="FORM",s[s.PRIVATE_KEY_JWT=3]="PRIVATE_KEY_JWT",s[s.MTLS=4]="MTLS",s[s.SAML2_BEARER=5]="SAML2_BEARER",s))(Ke||{}),ge=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.UploadPluginRequest",[{no:1,name:"manifest",kind:"message",oneof:"data",T:()=>L},{no:2,name:"file",kind:"message",oneof:"data",T:()=>ue}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.data={oneofKind:void 0},e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.data={oneofKind:"manifest",manifest:L.internalBinaryRead(e,e.uint32(),i,n.data.manifest)};break;case 2:n.data={oneofKind:"file",file:ue.internalBinaryRead(e,e.uint32(),i,n.data.file)};break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.data.oneofKind==="manifest"&&L.internalBinaryWrite(e.data.manifest,t.tag(1,u.LengthDelimited).fork(),i).join(),e.data.oneofKind==="file"&&ue.internalBinaryWrite(e.data.file,t.tag(2,u.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},It=new ge,he=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.UploadPluginResponse",[])}create(e){let t=globalThis.Object.create(this.messagePrototype);return e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){return a??this.create()}internalBinaryWrite(e,t,i){let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},Ot=new he,be=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.File",[{no:1,name:"path",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^[^/]+(\\/[^/]+)*$"}}}},{no:2,name:"data",kind:"scalar",T:12,options:{"buf.validate.field":{bytes:{minLen:"1",maxLen:"40000000"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.path="",t.data=new Uint8Array(0),e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.path=e.string();break;case 2:n.data=e.bytes();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.path!==""&&t.tag(1,u.LengthDelimited).string(e.path),e.data.length&&t.tag(2,u.LengthDelimited).bytes(e.data);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},ue=new be,ye=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Manifest",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"version",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"5",maxLen:"150",pattern:"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"}}}},{no:3,name:"label",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100"}}}},{no:4,name:"description",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"250"}}}},{no:5,name:"organization",kind:"scalar",T:9,options:{"buf.validate.field":{string:{uuid:!0}}}},{no:6,name:"homepage",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:7,name:"repository",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:8,name:"bugs",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{cel:[{id:"valid_email_or_url",message:"bugs must be a valid email or URL",expression:"size(this) >= 2 && size(this) <= 4096 && (this.isEmail() || this.matches('^https://[a-zA-Z0-9.-]+(?:\\\\.[a-zA-Z]{2,})(?:/.*)?$'))"}],ignore:"IGNORE_EMPTY"}}},{no:9,name:"author",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"100"}}}},{no:10,name:"logo",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(gif|jpg|jpeg|jfif|pjpeg|pjp|png|svg|webp|avif)$"}}}},{no:11,name:"executors",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(mjs|js)$"}}}},{no:12,name:"configurators",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(mjs|js)$"}}}},{no:13,name:"assets",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^[^/]+(\\/[^/]+)*$"}}}},{no:14,name:"cdn",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"2",maxLen:"4096",pattern:"^[^/]+(\\/[^/]+)*$"}}}},{no:15,name:"vertices",kind:"message",repeat:1,T:()=>de,options:{"buf.validate.field":{cel:[{id:"vertex_unique_names",message:"a name cannot appear more than once",expression:"this.map(vertex, vertex.name).unique()"}],repeated:{minItems:"1",maxItems:"100"}}}},{no:16,name:"plugin_oauth2",kind:"message",repeat:1,T:()=>j,options:{"buf.validate.field":{cel:[{id:"plugin_oauth2.oauth_unique_names",message:"a name cannot appear more than once",expression:"this.map(oauth, oauth.name).unique()"}],repeated:{minItems:"0",maxItems:"20",items:{cel:[{id:"plugin_oauth2.oauth2.client_id",message:"The client_id property must be set",expression:"has(this.client_id)"}]}}}}},{no:17,name:"plugin_variables",kind:"message",repeat:1,T:()=>M,options:{"buf.validate.field":{cel:[{id:"vars_unique_names",message:"a name cannot appear more than once",expression:"this.map(variable, variable.name).unique()"}],repeated:{minItems:"0",maxItems:"100"}}}},{no:18,name:"plugin_mtls",kind:"message",repeat:1,T:()=>U,options:{"buf.validate.field":{cel:[{id:"mtls_unique_names",message:"a name cannot appear more than once",expression:"this.map(mtls, mtls.name).unique()"}],repeated:{minItems:"0",maxItems:"20"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.version="",t.label="",t.description="",t.organization="",t.executors="",t.vertices=[],t.pluginOauth2=[],t.pluginVariables=[],t.pluginMtls=[],e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.version=e.string();break;case 3:n.label=e.string();break;case 4:n.description=e.string();break;case 5:n.organization=e.string();break;case 6:n.homepage=e.string();break;case 7:n.repository=e.string();break;case 8:n.bugs=e.string();break;case 9:n.author=e.string();break;case 10:n.logo=e.string();break;case 11:n.executors=e.string();break;case 12:n.configurators=e.string();break;case 13:n.assets=e.string();break;case 14:n.cdn=e.string();break;case 15:n.vertices.push(de.internalBinaryRead(e,e.uint32(),i));break;case 16:n.pluginOauth2.push(j.internalBinaryRead(e,e.uint32(),i));break;case 17:n.pluginVariables.push(M.internalBinaryRead(e,e.uint32(),i));break;case 18:n.pluginMtls.push(U.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.version!==""&&t.tag(2,u.LengthDelimited).string(e.version),e.label!==""&&t.tag(3,u.LengthDelimited).string(e.label),e.description!==""&&t.tag(4,u.LengthDelimited).string(e.description),e.organization!==""&&t.tag(5,u.LengthDelimited).string(e.organization),e.homepage!==void 0&&t.tag(6,u.LengthDelimited).string(e.homepage),e.repository!==void 0&&t.tag(7,u.LengthDelimited).string(e.repository),e.bugs!==void 0&&t.tag(8,u.LengthDelimited).string(e.bugs),e.author!==void 0&&t.tag(9,u.LengthDelimited).string(e.author),e.logo!==void 0&&t.tag(10,u.LengthDelimited).string(e.logo),e.executors!==""&&t.tag(11,u.LengthDelimited).string(e.executors),e.configurators!==void 0&&t.tag(12,u.LengthDelimited).string(e.configurators),e.assets!==void 0&&t.tag(13,u.LengthDelimited).string(e.assets),e.cdn!==void 0&&t.tag(14,u.LengthDelimited).string(e.cdn);for(let n=0;n<e.vertices.length;n++)de.internalBinaryWrite(e.vertices[n],t.tag(15,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.pluginOauth2.length;n++)j.internalBinaryWrite(e.pluginOauth2[n],t.tag(16,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.pluginVariables.length;n++)M.internalBinaryWrite(e.pluginVariables[n],t.tag(17,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.pluginMtls.length;n++)U.internalBinaryWrite(e.pluginMtls[n],t.tag(18,u.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},L=new ye,ke=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Vertex",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"logo",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"2",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.(gif|jpg|jpeg|jfif|pjpeg|pjp|png|svg|webp|avif)$"}}}},{no:5,name:"type",kind:"enum",T:()=>["mochabugapis.adapt.plugins.v1.Vertex.VertexType",Be,"VERTEX_TYPE_"],options:{"buf.validate.field":{enum:{notIn:[0]}}}},{no:6,name:"config",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"5",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)"}}}},{no:7,name:"metadata",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"5",maxLen:"4096",pattern:"^([^/]+(/[^/]+)*)\\.json$"}}}},{no:8,name:"configurator",kind:"scalar",T:8},{no:9,name:"variables",kind:"message",repeat:1,T:()=>M,options:{"buf.validate.field":{cel:[{id:"vars_unique_names",message:"a name cannot appear more than once",expression:"this.map(variable, variable.name).unique()"}],repeated:{minItems:"0",maxItems:"100"}}}},{no:10,name:"mtls",kind:"message",repeat:1,T:()=>U,options:{"buf.validate.field":{cel:[{id:"mtls_unique_names",message:"a name cannot appear more than once",expression:"this.map(mtls, mtls.name).unique()"}],repeated:{minItems:"0",maxItems:"100"}}}},{no:11,name:"code_oauth2",kind:"message",repeat:1,T:()=>me,options:{"buf.validate.field":{cel:[{id:"vertex.code_oauth2.unique_names",message:"a name cannot appear more than once",expression:"this.map(oauth, oauth.name).unique()"}],repeated:{minItems:"0",maxItems:"20"}}}},{no:12,name:"oauth2",kind:"message",repeat:1,T:()=>j,options:{"buf.validate.field":{cel:[{id:"vertex.oauth2.unique_names",message:"a name cannot appear more than once",expression:"this.map(oauth, oauth.name).unique()"}],repeated:{minItems:"0",maxItems:"20",items:{cel:[{id:"vertex.oauth2.client_id_and_code",message:"The client_id and the code property may not be set as well as the code grant type",expression:"!has(this.client_id) && !has(this.code) && this.grant_type != 1"}]}}}}}],{"buf.validate.message":{cel:[{id:"vertex.oauth2_and_code_bindings",message:"The names of the oauth2 services and the code bindings must be unique",expression:"(this.oauth2.map(val, val.name) + this.code_oauth2.map(val, val.name)).unique()"}]}})}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.label="",t.type=0,t.metadata="",t.configurator=!1,t.variables=[],t.mtls=[],t.codeOauth2=[],t.oauth2=[],e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.logo=e.string();break;case 5:n.type=e.int32();break;case 6:n.config=e.string();break;case 7:n.metadata=e.string();break;case 8:n.configurator=e.bool();break;case 9:n.variables.push(M.internalBinaryRead(e,e.uint32(),i));break;case 10:n.mtls.push(U.internalBinaryRead(e,e.uint32(),i));break;case 11:n.codeOauth2.push(me.internalBinaryRead(e,e.uint32(),i));break;case 12:n.oauth2.push(j.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.label!==""&&t.tag(2,u.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,u.LengthDelimited).string(e.description),e.logo!==void 0&&t.tag(4,u.LengthDelimited).string(e.logo),e.type!==0&&t.tag(5,u.Varint).int32(e.type),e.config!==void 0&&t.tag(6,u.LengthDelimited).string(e.config),e.metadata!==""&&t.tag(7,u.LengthDelimited).string(e.metadata),e.configurator!==!1&&t.tag(8,u.Varint).bool(e.configurator);for(let n=0;n<e.variables.length;n++)M.internalBinaryWrite(e.variables[n],t.tag(9,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.mtls.length;n++)U.internalBinaryWrite(e.mtls[n],t.tag(10,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.codeOauth2.length;n++)me.internalBinaryWrite(e.codeOauth2[n],t.tag(11,u.LengthDelimited).fork(),i).join();for(let n=0;n<e.oauth2.length;n++)j.internalBinaryWrite(e.oauth2[n],t.tag(12,u.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},de=new ke,ve=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.MTLSService",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(2,u.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,u.LengthDelimited).string(e.description),e.optional!==void 0&&t.tag(4,u.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},U=new ve,Te=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.VariableService",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"type",kind:"enum",T:()=>["mochabugapis.adapt.plugins.v1.VariableService.Type",Je,"TYPE_"],options:{"buf.validate.field":{enum:{notIn:[0]}}}},{no:5,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.type=0,e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.type=e.int32();break;case 5:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(2,u.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,u.LengthDelimited).string(e.description),e.type!==0&&t.tag(4,u.Varint).int32(e.type),e.optional!==void 0&&t.tag(5,u.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},M=new Te,xe=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Oauth2Service",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"100"}}}},{no:3,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:4,name:"grant_type",kind:"enum",T:()=>["mochabugapis.adapt.plugins.v1.Oauth2GrantType",ze,"OAUTH2_GRANT_TYPE_"],options:{"buf.validate.field":{enum:{notIn:[0]}}}},{no:5,name:"scopes",kind:"scalar",repeat:2,T:9,options:{"buf.validate.field":{repeated:{minItems:"1",maxItems:"500",unique:!0,items:{string:{minLen:"1",maxLen:"100"}}}}}},{no:6,name:"auth_method",kind:"enum",opt:!0,T:()=>["mochabugapis.adapt.plugins.v1.Oauth2AuthType",Ke,"OAUTH2_AUTH_TYPE_"],options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",enum:{notIn:[0]}}}},{no:7,name:"alg",kind:"enum",opt:!0,T:()=>["mochabugapis.adapt.plugins.v1.PrivateKeyAlg",qe,"PRIVATE_KEY_ALG_"],options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",enum:{notIn:[0]}}}},{no:8,name:"client_id",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",string:{minLen:"1",maxLen:"250"}}}},{no:9,name:"token_endpoint",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:10,name:"code",kind:"message",T:()=>fe},{no:11,name:"optional",kind:"scalar",opt:!0,T:8}],{"buf.validate.message":{cel:[{id:"oauth2.auth_method",message:"The auth_method property must be set in case of grant_type OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE or OAUTH2_GRANT_TYPE_CLIENT_CREDENTIALS",expression:"has(this.auth_method) == (this.grant_type == 1 || this.grant_type == 2)"},{id:"oauth2.alg",message:"The alg property must be set in case of grant_type OAUTH2_GRANT_TYPE_JWT_BEARER, OAUTH2_GRANT_TYPE_SAML2_BEARER or auth_method OAUTH2_AUTH_TYPE_PRIVATE_KEY_JWT, OAUTH2_AUTH_TYPE_SAML2_BEARER",expression:"has(this.alg) == (this.grant_type == 3 || this.grant_type == 4 || this.auth_method == 3 || this.auth_method == 5)"},{id:"oauth2.code",message:"The code property must be set in case of grant_type OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE",expression:"has(this.code) == (this.grant_type == 1)"},{id:"oauth2.optional",message:"The optional property cannot be set to true in case of grant_type OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE",expression:"!has(this.optional) || this.grant_type != 1 || (!this.optional && this.grant_type == 1)"}]}})}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.grantType=0,t.scopes=[],t.tokenEndpoint="",e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.label=e.string();break;case 3:n.description=e.string();break;case 4:n.grantType=e.int32();break;case 5:n.scopes.push(e.string());break;case 6:n.authMethod=e.int32();break;case 7:n.alg=e.int32();break;case 8:n.clientId=e.string();break;case 9:n.tokenEndpoint=e.string();break;case 10:n.code=fe.internalBinaryRead(e,e.uint32(),i,n.code);break;case 11:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(2,u.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(3,u.LengthDelimited).string(e.description),e.grantType!==0&&t.tag(4,u.Varint).int32(e.grantType);for(let n=0;n<e.scopes.length;n++)t.tag(5,u.LengthDelimited).string(e.scopes[n]);e.authMethod!==void 0&&t.tag(6,u.Varint).int32(e.authMethod),e.alg!==void 0&&t.tag(7,u.Varint).int32(e.alg),e.clientId!==void 0&&t.tag(8,u.LengthDelimited).string(e.clientId),e.tokenEndpoint!==""&&t.tag(9,u.LengthDelimited).string(e.tokenEndpoint),e.code&&fe.internalBinaryWrite(e.code,t.tag(10,u.LengthDelimited).fork(),i).join(),e.optional!==void 0&&t.tag(11,u.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},j=new xe,Re=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Oauth2CodeBinding",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"100",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,u.LengthDelimited).string(e.name),e.optional!==void 0&&t.tag(2,u.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},me=new Re,we=class extends S{constructor(){super("mochabugapis.adapt.plugins.v1.Oauth2Code",[{no:1,name:"auth_endpoint",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:2,name:"issuer",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"4096"}}}},{no:3,name:"jwks_uri",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"11",maxLen:"4096",pattern:"^https://[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})(?:/.*)?$"}}}},{no:4,name:"additional_params",kind:"map",K:9,V:{kind:"scalar",T:9},options:{"buf.validate.field":{map:{minPairs:"0",maxPairs:"50",keys:{string:{minLen:"1",maxLen:"250"}},values:{string:{minLen:"1",maxLen:"250"}}}}}},{no:5,name:"use_pkce",kind:"scalar",T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.authEndpoint="",t.issuer="",t.jwksUri="",t.additionalParams={},t.usePkce=!1,e!==void 0&&E(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.authEndpoint=e.string();break;case 2:n.issuer=e.string();break;case 3:n.jwksUri=e.string();break;case 4:this.binaryReadMap4(n.additionalParams,e,i);break;case 5:n.usePkce=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?v.onRead:l)(this.typeName,n,r,p,c)}}return n}binaryReadMap4(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=t.string();break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.plugins.v1.Oauth2Code.additional_params")}}e[s??""]=r??""}internalBinaryWrite(e,t,i){e.authEndpoint!==""&&t.tag(1,u.LengthDelimited).string(e.authEndpoint),e.issuer!==""&&t.tag(2,u.LengthDelimited).string(e.issuer),e.jwksUri!==""&&t.tag(3,u.LengthDelimited).string(e.jwksUri);for(let n of globalThis.Object.keys(e.additionalParams))t.tag(4,u.LengthDelimited).fork().tag(1,u.LengthDelimited).string(n).tag(2,u.LengthDelimited).string(e.additionalParams[n]).join();e.usePkce!==!1&&t.tag(5,u.Varint).bool(e.usePkce);let a=i.writeUnknownFields;return a!==!1&&(a==!0?v.onWrite:a)(this.typeName,e,t),t}},fe=new we,Z=new St("mochabugapis.adapt.plugins.v1.PluginService",[{name:"UploadPlugin",clientStreaming:!0,options:{"google.api.http":{post:"/v1/plugins/upload",body:"*"}},I:It,O:Ot}],{"google.api.default_host":"adapt.mochabugapis.com","google.api.oauth_scopes":"https://www.mochabugapis.com/auth/adapt/plugins,https://www.mochabugapis.com/auth/adapt/plugins.upload"});import z from"fs";import{mkdirp as Zt}from"mkdirp";import T from"path";import{WireType as C}from"@protobuf-ts/runtime";import{UnknownFieldHandler as it}from"@protobuf-ts/runtime";import{reflectionMergePartial as Kt}from"@protobuf-ts/runtime";import{MessageType as Gt}from"@protobuf-ts/runtime";import{WireType as Q}from"@protobuf-ts/runtime";import{UnknownFieldHandler as Xe}from"@protobuf-ts/runtime";import{reflectionMergePartial as Mt}from"@protobuf-ts/runtime";import{MessageType as jt}from"@protobuf-ts/runtime";import{WireType as De}from"@protobuf-ts/runtime";import{UnknownFieldHandler as Ze}from"@protobuf-ts/runtime";import{reflectionMergePartial as $t}from"@protobuf-ts/runtime";import{MessageType as Ut}from"@protobuf-ts/runtime";import{WireType as J}from"@protobuf-ts/runtime";import{UnknownFieldHandler as Ye}from"@protobuf-ts/runtime";import{reflectionMergePartial as Wt}from"@protobuf-ts/runtime";import{MessageType as Vt}from"@protobuf-ts/runtime";import{WireType as y}from"@protobuf-ts/runtime";import{UnknownFieldHandler as He}from"@protobuf-ts/runtime";import{reflectionMergePartial as Nt}from"@protobuf-ts/runtime";import{MessageType as Dt}from"@protobuf-ts/runtime";import{WireType as I}from"@protobuf-ts/runtime";import{UnknownFieldHandler as A}from"@protobuf-ts/runtime";import{reflectionMergePartial as Se}from"@protobuf-ts/runtime";import{isJsonObject as Pt}from"@protobuf-ts/runtime";import{typeofJsonValue as Ie}from"@protobuf-ts/runtime";import{MessageType as Oe}from"@protobuf-ts/runtime";var Ge=(e=>(e[e.NULL_VALUE=0]="NULL_VALUE",e))(Ge||{}),_e=class extends Oe{constructor(){super("google.protobuf.Struct",[{no:1,name:"fields",kind:"map",K:9,V:{kind:"message",T:()=>R}}])}internalJsonWrite(e,t){let i={};for(let[a,n]of Object.entries(e.fields))i[a]=R.toJson(n);return i}internalJsonRead(e,t,i){if(!Pt(e))throw new globalThis.Error("Unable to parse message "+this.typeName+" from JSON "+Ie(e)+".");i||(i=this.create());for(let[a,n]of globalThis.Object.entries(e))i.fields[a]=R.fromJson(n);return i}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.fields={},e!==void 0&&Se(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:this.binaryReadMap1(n.fields,e,i);break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?A.onRead:l)(this.typeName,n,r,p,c)}}return n}binaryReadMap1(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=R.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field google.protobuf.Struct.fields")}}e[s??""]=r??R.create()}internalBinaryWrite(e,t,i){for(let n of globalThis.Object.keys(e.fields))t.tag(1,I.LengthDelimited).fork().tag(1,I.LengthDelimited).string(n),t.tag(2,I.LengthDelimited).fork(),R.internalBinaryWrite(e.fields[n],t,i),t.join().join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?A.onWrite:a)(this.typeName,e,t),t}},D=new _e,Le=class extends Oe{constructor(){super("google.protobuf.Value",[{no:1,name:"null_value",kind:"enum",oneof:"kind",T:()=>["google.protobuf.NullValue",Ge]},{no:2,name:"number_value",kind:"scalar",oneof:"kind",T:1},{no:3,name:"string_value",kind:"scalar",oneof:"kind",T:9},{no:4,name:"bool_value",kind:"scalar",oneof:"kind",T:8},{no:5,name:"struct_value",kind:"message",oneof:"kind",T:()=>D},{no:6,name:"list_value",kind:"message",oneof:"kind",T:()=>X}])}internalJsonWrite(e,t){if(e.kind.oneofKind===void 0)throw new globalThis.Error;switch(e.kind.oneofKind){case void 0:throw new globalThis.Error;case"boolValue":return e.kind.boolValue;case"nullValue":return null;case"numberValue":let i=e.kind.numberValue;if(typeof i=="number"&&!Number.isFinite(i))throw new globalThis.Error;return i;case"stringValue":return e.kind.stringValue;case"listValue":let a=this.fields.find(s=>s.no===6);if(a?.kind!=="message")throw new globalThis.Error;return a.T().toJson(e.kind.listValue);case"structValue":let n=this.fields.find(s=>s.no===5);if(n?.kind!=="message")throw new globalThis.Error;return n.T().toJson(e.kind.structValue)}}internalJsonRead(e,t,i){switch(i||(i=this.create()),typeof e){case"number":i.kind={oneofKind:"numberValue",numberValue:e};break;case"string":i.kind={oneofKind:"stringValue",stringValue:e};break;case"boolean":i.kind={oneofKind:"boolValue",boolValue:e};break;case"object":e===null?i.kind={oneofKind:"nullValue",nullValue:0}:globalThis.Array.isArray(e)?i.kind={oneofKind:"listValue",listValue:X.fromJson(e)}:i.kind={oneofKind:"structValue",structValue:D.fromJson(e)};break;default:throw new globalThis.Error("Unable to parse "+this.typeName+" from JSON "+Ie(e))}return i}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.kind={oneofKind:void 0},e!==void 0&&Se(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.kind={oneofKind:"nullValue",nullValue:e.int32()};break;case 2:n.kind={oneofKind:"numberValue",numberValue:e.double()};break;case 3:n.kind={oneofKind:"stringValue",stringValue:e.string()};break;case 4:n.kind={oneofKind:"boolValue",boolValue:e.bool()};break;case 5:n.kind={oneofKind:"structValue",structValue:D.internalBinaryRead(e,e.uint32(),i,n.kind.structValue)};break;case 6:n.kind={oneofKind:"listValue",listValue:X.internalBinaryRead(e,e.uint32(),i,n.kind.listValue)};break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?A.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.kind.oneofKind==="nullValue"&&t.tag(1,I.Varint).int32(e.kind.nullValue),e.kind.oneofKind==="numberValue"&&t.tag(2,I.Bit64).double(e.kind.numberValue),e.kind.oneofKind==="stringValue"&&t.tag(3,I.LengthDelimited).string(e.kind.stringValue),e.kind.oneofKind==="boolValue"&&t.tag(4,I.Varint).bool(e.kind.boolValue),e.kind.oneofKind==="structValue"&&D.internalBinaryWrite(e.kind.structValue,t.tag(5,I.LengthDelimited).fork(),i).join(),e.kind.oneofKind==="listValue"&&X.internalBinaryWrite(e.kind.listValue,t.tag(6,I.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?A.onWrite:a)(this.typeName,e,t),t}},R=new Le,Ee=class extends Oe{constructor(){super("google.protobuf.ListValue",[{no:1,name:"values",kind:"message",repeat:1,T:()=>R}])}internalJsonWrite(e,t){return e.values.map(i=>R.toJson(i))}internalJsonRead(e,t,i){if(!globalThis.Array.isArray(e))throw new globalThis.Error("Unable to parse "+this.typeName+" from JSON "+Ie(e));i||(i=this.create());let a=e.map(n=>R.fromJson(n));return i.values.push(...a),i}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.values=[],e!==void 0&&Se(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.values.push(R.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?A.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){for(let n=0;n<e.values.length;n++)R.internalBinaryWrite(e.values[n],t.tag(1,I.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?A.onWrite:a)(this.typeName,e,t),t}},X=new Ee;var Pe=class extends Dt{constructor(){super("mochabugapis.adapt.graph.JTDSchema",[{no:1,name:"definitions",kind:"map",K:9,V:{kind:"message",T:()=>f}},{no:2,name:"metadata",kind:"message",T:()=>D},{no:3,name:"nullable",kind:"scalar",opt:!0,T:8},{no:4,name:"ref",kind:"scalar",opt:!0,T:9},{no:5,name:"type",kind:"scalar",opt:!0,T:9},{no:6,name:"enum",kind:"scalar",repeat:2,T:9},{no:7,name:"elements",kind:"message",T:()=>f},{no:8,name:"properties",kind:"map",K:9,V:{kind:"message",T:()=>f}},{no:9,name:"optional_properties",kind:"map",K:9,V:{kind:"message",T:()=>f}},{no:10,name:"additional_properties",kind:"scalar",opt:!0,T:8},{no:11,name:"values",kind:"message",T:()=>f},{no:12,name:"discriminator",kind:"scalar",opt:!0,T:9},{no:13,name:"mapping",kind:"map",K:9,V:{kind:"message",T:()=>f}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.definitions={},t.enum=[],t.properties={},t.optionalProperties={},t.mapping={},e!==void 0&&Nt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:this.binaryReadMap1(n.definitions,e,i);break;case 2:n.metadata=D.internalBinaryRead(e,e.uint32(),i,n.metadata);break;case 3:n.nullable=e.bool();break;case 4:n.ref=e.string();break;case 5:n.type=e.string();break;case 6:n.enum.push(e.string());break;case 7:n.elements=f.internalBinaryRead(e,e.uint32(),i,n.elements);break;case 8:this.binaryReadMap8(n.properties,e,i);break;case 9:this.binaryReadMap9(n.optionalProperties,e,i);break;case 10:n.additionalProperties=e.bool();break;case 11:n.values=f.internalBinaryRead(e,e.uint32(),i,n.values);break;case 12:n.discriminator=e.string();break;case 13:this.binaryReadMap13(n.mapping,e,i);break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?He.onRead:l)(this.typeName,n,r,p,c)}}return n}binaryReadMap1(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.definitions")}}e[s??""]=r??f.create()}binaryReadMap8(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.properties")}}e[s??""]=r??f.create()}binaryReadMap9(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.optional_properties")}}e[s??""]=r??f.create()}binaryReadMap13(e,t,i){let a=t.uint32(),n=t.pos+a,s,r;for(;t.pos<n;){let[p,l]=t.tag();switch(p){case 1:s=t.string();break;case 2:r=f.internalBinaryRead(t,t.uint32(),i);break;default:throw new globalThis.Error("unknown map entry field for field mochabugapis.adapt.graph.JTDSchema.mapping")}}e[s??""]=r??f.create()}internalBinaryWrite(e,t,i){for(let n of globalThis.Object.keys(e.definitions))t.tag(1,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.definitions[n],t,i),t.join().join();e.metadata&&D.internalBinaryWrite(e.metadata,t.tag(2,y.LengthDelimited).fork(),i).join(),e.nullable!==void 0&&t.tag(3,y.Varint).bool(e.nullable),e.ref!==void 0&&t.tag(4,y.LengthDelimited).string(e.ref),e.type!==void 0&&t.tag(5,y.LengthDelimited).string(e.type);for(let n=0;n<e.enum.length;n++)t.tag(6,y.LengthDelimited).string(e.enum[n]);e.elements&&f.internalBinaryWrite(e.elements,t.tag(7,y.LengthDelimited).fork(),i).join();for(let n of globalThis.Object.keys(e.properties))t.tag(8,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.properties[n],t,i),t.join().join();for(let n of globalThis.Object.keys(e.optionalProperties))t.tag(9,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.optionalProperties[n],t,i),t.join().join();e.additionalProperties!==void 0&&t.tag(10,y.Varint).bool(e.additionalProperties),e.values&&f.internalBinaryWrite(e.values,t.tag(11,y.LengthDelimited).fork(),i).join(),e.discriminator!==void 0&&t.tag(12,y.LengthDelimited).string(e.discriminator);for(let n of globalThis.Object.keys(e.mapping))t.tag(13,y.LengthDelimited).fork().tag(1,y.LengthDelimited).string(n),t.tag(2,y.LengthDelimited).fork(),f.internalBinaryWrite(e.mapping[n],t,i),t.join().join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?He.onWrite:a)(this.typeName,e,t),t}},f=new Pe;var Ne=class extends Vt{constructor(){super("mochabugapis.adapt.graph.SignalDescriptor",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:5,name:"label",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"50"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"schema",kind:"message",T:()=>f,options:{"buf.validate.field":{required:!0}}},{no:4,name:"optional",kind:"scalar",opt:!0,T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",e!==void 0&&Wt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 5:n.label=e.string();break;case 2:n.description=e.string();break;case 3:n.schema=f.internalBinaryRead(e,e.uint32(),i,n.schema);break;case 4:n.optional=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?Ye.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,J.LengthDelimited).string(e.name),e.label!==void 0&&t.tag(5,J.LengthDelimited).string(e.label),e.description!==void 0&&t.tag(2,J.LengthDelimited).string(e.description),e.schema&&f.internalBinaryWrite(e.schema,t.tag(3,J.LengthDelimited).fork(),i).join(),e.optional!==void 0&&t.tag(4,J.Varint).bool(e.optional);let a=i.writeUnknownFields;return a!==!1&&(a==!0?Ye.onWrite:a)(this.typeName,e,t),t}},w=new Ne;var We=class extends Ut{constructor(){super("mochabugapis.adapt.graph.Transceiver",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"signals",kind:"message",repeat:1,T:()=>w,options:{"buf.validate.field":{cel:[{id:"signals_unique_names",message:"Each signal must have a unique name.",expression:"this.map(signal, signal.name).unique()"}],repeated:{maxItems:"512"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.signals=[],e!==void 0&&$t(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.signals.push(w.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?Ze.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,De.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,De.LengthDelimited).string(e.description);for(let n=0;n<e.signals.length;n++)w.internalBinaryWrite(e.signals[n],t.tag(3,De.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?Ze.onWrite:a)(this.typeName,e,t),t}},V=new We;var Ve=class extends jt{constructor(){super("mochabugapis.adapt.graph.Exchange",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"transmitters",kind:"message",repeat:1,T:()=>V,options:{"buf.validate.field":{cel:[{id:"transmitters_unique_names",message:"Each transmitter must have a unique name.",expression:"this.map(transmitter, transmitter.name).unique()"}],repeated:{maxItems:"10"}}}},{no:4,name:"receivers",kind:"message",repeat:1,T:()=>V,options:{"buf.validate.field":{cel:[{id:"receivers_unique_names",message:"Each receiver must have a unique name.",expression:"this.map(receiver, receiver.name).unique()"}],repeated:{minItems:"1",maxItems:"10"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.transmitters=[],t.receivers=[],e!==void 0&&Mt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.transmitters.push(V.internalBinaryRead(e,e.uint32(),i));break;case 4:n.receivers.push(V.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?Xe.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,Q.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,Q.LengthDelimited).string(e.description);for(let n=0;n<e.transmitters.length;n++)V.internalBinaryWrite(e.transmitters[n],t.tag(3,Q.LengthDelimited).fork(),i).join();for(let n=0;n<e.receivers.length;n++)V.internalBinaryWrite(e.receivers[n],t.tag(4,Q.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?Xe.onWrite:a)(this.typeName,e,t),t}},$=new Ve;import{WireType as ee}from"@protobuf-ts/runtime";import{UnknownFieldHandler as Qe}from"@protobuf-ts/runtime";import{reflectionMergePartial as At}from"@protobuf-ts/runtime";import{MessageType as Ct}from"@protobuf-ts/runtime";var $e=class extends Ct{constructor(){super("mochabugapis.adapt.graph.Transmitter",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"signals",kind:"message",repeat:1,T:()=>w,options:{"buf.validate.field":{cel:[{id:"signals_unique_names",message:"Each signal must have a unique name.",expression:"this.map(signal, signal.name).unique()"}],repeated:{maxItems:"512"}}}},{no:4,name:"failure",kind:"scalar",T:8}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.signals=[],t.failure=!1,e!==void 0&&At(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.signals.push(w.internalBinaryRead(e,e.uint32(),i));break;case 4:n.failure=e.bool();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?Qe.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,ee.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,ee.LengthDelimited).string(e.description);for(let n=0;n<e.signals.length;n++)w.internalBinaryWrite(e.signals[n],t.tag(3,ee.LengthDelimited).fork(),i).join();e.failure!==!1&&t.tag(4,ee.Varint).bool(e.failure);let a=i.writeUnknownFields;return a!==!1&&(a==!0?Qe.onWrite:a)(this.typeName,e,t),t}},te=new $e;import{WireType as Me}from"@protobuf-ts/runtime";import{UnknownFieldHandler as nt}from"@protobuf-ts/runtime";import{reflectionMergePartial as qt}from"@protobuf-ts/runtime";import{MessageType as zt}from"@protobuf-ts/runtime";import{WireType as ne}from"@protobuf-ts/runtime";import{UnknownFieldHandler as et}from"@protobuf-ts/runtime";import{reflectionMergePartial as Ft}from"@protobuf-ts/runtime";import{MessageType as Jt}from"@protobuf-ts/runtime";var tt=(a=>(a[a.UNSPECIFIED=0]="UNSPECIFIED",a[a.UNBOUND=1]="UNBOUND",a[a.INVALID_SOURCE=2]="INVALID_SOURCE",a[a.SCHEMA_MISMATCH=3]="SCHEMA_MISMATCH",a))(tt||{}),Ue=class extends Jt{constructor(){super("mochabugapis.adapt.graph.SignalBinding",[{no:1,name:"descriptor",kind:"message",T:()=>w,options:{"buf.validate.field":{required:!0}}},{no:2,name:"reference",kind:"scalar",oneof:"binding",T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"constant",kind:"message",oneof:"binding",T:()=>R},{no:4,name:"error",kind:"enum",opt:!0,T:()=>["mochabugapis.adapt.graph.SignalBinding.Error",tt,"ERROR_"],options:{"buf.validate.field":{ignore:"IGNORE_EMPTY",enum:{notIn:[0]}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.binding={oneofKind:void 0},e!==void 0&&Ft(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.descriptor=w.internalBinaryRead(e,e.uint32(),i,n.descriptor);break;case 2:n.binding={oneofKind:"reference",reference:e.string()};break;case 3:n.binding={oneofKind:"constant",constant:R.internalBinaryRead(e,e.uint32(),i,n.binding.constant)};break;case 4:n.error=e.int32();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?et.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.descriptor&&w.internalBinaryWrite(e.descriptor,t.tag(1,ne.LengthDelimited).fork(),i).join(),e.binding.oneofKind==="reference"&&t.tag(2,ne.LengthDelimited).string(e.binding.reference),e.binding.oneofKind==="constant"&&R.internalBinaryWrite(e.binding.constant,t.tag(3,ne.LengthDelimited).fork(),i).join(),e.error!==void 0&&t.tag(4,ne.Varint).int32(e.error);let a=i.writeUnknownFields;return a!==!1&&(a==!0?et.onWrite:a)(this.typeName,e,t),t}},ie=new Ue;var je=class extends zt{constructor(){super("mochabugapis.adapt.graph.Receiver",[{no:1,name:"name",kind:"scalar",T:9,options:{"buf.validate.field":{string:{minLen:"1",maxLen:"50",pattern:"^[_$a-z][_$a-z0-9]*$"}}}},{no:2,name:"description",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{string:{maxLen:"250"}}}},{no:3,name:"bindings",kind:"message",repeat:1,T:()=>ie,options:{"buf.validate.field":{cel:[{id:"bindings_unique_names",message:"Each binding must have a unique name.",expression:"this.map(binding, binding.descriptor.name).unique()"}],repeated:{maxItems:"512"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.name="",t.bindings=[],e!==void 0&&qt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.bindings.push(ie.internalBinaryRead(e,e.uint32(),i));break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?nt.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.name!==""&&t.tag(1,Me.LengthDelimited).string(e.name),e.description!==void 0&&t.tag(2,Me.LengthDelimited).string(e.description);for(let n=0;n<e.bindings.length;n++)ie.internalBinaryWrite(e.bindings[n],t.tag(3,Me.LengthDelimited).fork(),i).join();let a=i.writeUnknownFields;return a!==!1&&(a==!0?nt.onWrite:a)(this.typeName,e,t),t}},ae=new je;var Ae=class extends Gt{constructor(){super("mochabugapis.adapt.graph.VertexConfigMetadata",[{no:1,name:"complete",kind:"scalar",T:8},{no:2,name:"receivers",kind:"message",repeat:1,T:()=>ae,options:{"buf.validate.field":{cel:[{id:"receivers_unique_names",message:"Each receiver must have a unique name.",expression:"this.map(receiver, receiver.name).unique()"}],repeated:{minItems:"1",maxItems:"50"}}}},{no:3,name:"transmitters",kind:"message",repeat:1,T:()=>te,options:{"buf.validate.field":{cel:[{id:"transmitters_unique_names",message:"Each transmitter must have a unique name.",expression:"this.map(transmitter, transmitter.name).unique()"}],repeated:{maxItems:"50"}}}},{no:4,name:"procedures",kind:"message",repeat:1,T:()=>$,options:{"buf.validate.field":{cel:[{id:"procedures_unique_names",message:"Each procedure must have a unique name.",expression:"this.map(procedure, procedure.name).unique()"}],repeated:{maxItems:"10"}}}},{no:5,name:"streams",kind:"message",repeat:1,T:()=>$,options:{"buf.validate.field":{cel:[{id:"streams_unique_names",message:"Each stream must have a unique name.",expression:"this.map(stream, stream.name).unique()"}],repeated:{maxItems:"10"}}}},{no:6,name:"cron_schedule",kind:"scalar",opt:!0,T:9,options:{"buf.validate.field":{ignore:"IGNORE_DEFAULT",string:{minLen:"1",maxLen:"100"}}}}])}create(e){let t=globalThis.Object.create(this.messagePrototype);return t.complete=!1,t.receivers=[],t.transmitters=[],t.procedures=[],t.streams=[],e!==void 0&&Kt(this,t,e),t}internalBinaryRead(e,t,i,a){let n=a??this.create(),s=e.pos+t;for(;e.pos<s;){let[r,p]=e.tag();switch(r){case 1:n.complete=e.bool();break;case 2:n.receivers.push(ae.internalBinaryRead(e,e.uint32(),i));break;case 3:n.transmitters.push(te.internalBinaryRead(e,e.uint32(),i));break;case 4:n.procedures.push($.internalBinaryRead(e,e.uint32(),i));break;case 5:n.streams.push($.internalBinaryRead(e,e.uint32(),i));break;case 6:n.cronSchedule=e.string();break;default:let l=i.readUnknownField;if(l==="throw")throw new globalThis.Error(`Unknown field ${r} (wire type ${p}) for ${this.typeName}`);let c=e.skip(p);l!==!1&&(l===!0?it.onRead:l)(this.typeName,n,r,p,c)}}return n}internalBinaryWrite(e,t,i){e.complete!==!1&&t.tag(1,C.Varint).bool(e.complete);for(let n=0;n<e.receivers.length;n++)ae.internalBinaryWrite(e.receivers[n],t.tag(2,C.LengthDelimited).fork(),i).join();for(let n=0;n<e.transmitters.length;n++)te.internalBinaryWrite(e.transmitters[n],t.tag(3,C.LengthDelimited).fork(),i).join();for(let n=0;n<e.procedures.length;n++)$.internalBinaryWrite(e.procedures[n],t.tag(4,C.LengthDelimited).fork(),i).join();for(let n=0;n<e.streams.length;n++)$.internalBinaryWrite(e.streams[n],t.tag(5,C.LengthDelimited).fork(),i).join();e.cronSchedule!==void 0&&t.tag(6,C.LengthDelimited).string(e.cronSchedule);let a=i.writeUnknownFields;return a!==!1&&(a==!0?it.onWrite:a)(this.typeName,e,t),t}},at=new Ae;import{execSync as Xt}from"child_process";import re from"fs";import{mkdirp as Ht}from"mkdirp";import oe from"path";import rt from"chalk";import{fileURLToPath as Yt}from"url";function g(o){return re.readFileSync(oe.join(oe.dirname(Yt(import.meta.url)),"..","assets",o)).toString()}function h(o,e){let t=oe.dirname(o);Ht.sync(t),re.writeFileSync(o,e)}function q(o){let e=oe.resolve(o);if(!re.existsSync(e))return console.error(rt.red(`Invalid command: Manifest file not found at ${e}.`)),null;try{let t=re.readFileSync(e).toString();return L.fromJsonString(t)}catch(t){return console.error(rt.red("An error occurred while reading the manifest")),console.error(t.message),null}}function se(o){return(o.charAt(0).toUpperCase()+o.substring(1)).replace("_"," ")}function Qt(o){switch(o){case"action":return 1;case"cron-trigger":return 3;case"external-trigger":return 4;case"browser":return 2;default:throw new Error("The node type is invalid")}}function le(o,e,t,i,a,n){let s=T.join(o,"src","vertices",e);if(z.existsSync(s))throw new Error(`The folder for the new vertex: ${s} already exists`);Zt.sync(s);let r=T.join(s,"executor.ts"),p={name:e,label:se(e),description:`The better description of what ${e} is doing, the better it is for both AI and humans`,type:Qt(t),metadata:T.join("src","vertices",e,"metadata.json"),configurator:i,mtls:[],codeOauth2:[],oauth2:[],variables:[]};if(n==="react"){Xt("npm install react react-dom @types/react @types/react-dom",{cwd:o,stdio:"inherit"});let c=T.join(o,"src/vertices",e,"ui");i&&(h(T.join(c,"configurator.App.tsx"),g("configurator.App.tsx")),h(T.join(c,"configurator.main.tsx"),g("configurator.main.tsx")),h(T.join(c,"configurator.ssg.tsx"),g("configurator.ssg.tsx"))),t==="browser"&&(h(T.join(c,"executor.App.tsx"),g("executor.App.tsx")),h(T.join(c,"executor.main.tsx"),g("executor.main.tsx")),h(T.join(c,"executor.ssg.tsx"),g("executor.ssg.tsx"))),z.existsSync(T.join(o,"build-client.js"))||h(T.join(o,"build-client.js"),g("build-client.js"))}switch(p.type){case 1:h(r,g("executor_action.ts"));break;case 2:n==="react"?h(r,g("executor_browser_react.tsx").replaceAll("___VERTEX_NAME___",e)):h(r,g("executor_browser_none.ts"));break;case 4:h(r,g("executor_external_trigger.ts"));break;case 3:h(r,g("executor_cron_trigger.ts"));break;default:throw new Error("The vertex type is invalid")}z.writeFileSync(T.join(o,"src","executors.ts"),ot([e,...a.map(c=>c.name)],"ExecutorEnvironment"));let l={complete:!0,receivers:[{name:"input",description:"Default input receiver",bindings:[]}],transmitters:[{name:"output",description:"Default output transmitter",signals:[],failure:!1}],procedures:[],streams:[]};return p.type===3&&(l.cronSchedule="/5 * * * * *"),i&&(n==="react"?h(T.join(s,"configurator.ts"),g("configurator_react.tsx").replaceAll("___VERTEX_NAME___",e)):h(T.join(s,"configurator.ts"),g("configurator_none.ts")),l.complete=!1,z.writeFileSync(T.join(o,"src","configurators.ts"),ot([e,...a.filter(c=>c.configurator).map(c=>c.name)],"ConfiguratorEnvironment"))),z.writeFileSync(T.join(s,"metadata.json"),at.toJsonString(l,{prettySpaces:2})),p}function ot(o,e){let t=o.map(i=>`import ${i} from './vertices/${i}/${e==="ExecutorEnvironment"?"executor":"configurator"}';`).join(`
2
+ var g={name:"@mochabug/adaptkit",version:"1.0.0-beta.7"};function oe(e,n){return e!==null&&typeof e=="object"&&"$typeName"in e&&typeof e.$typeName=="string"?n===void 0?!0:n.typeName===e.$typeName:!1}var c;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(c||(c={}));function Ln(){let e=0,n=0;for(let o=0;o<28;o+=7){let s=this.buf[this.pos++];if(e|=(s&127)<<o,!(s&128))return this.assertBounds(),[e,n]}let t=this.buf[this.pos++];if(e|=(t&15)<<28,n=(t&112)>>4,!(t&128))return this.assertBounds(),[e,n];for(let o=3;o<=31;o+=7){let s=this.buf[this.pos++];if(n|=(s&127)<<o,!(s&128))return this.assertBounds(),[e,n]}throw new Error("invalid varint")}function ye(e,n,t){for(let a=0;a<28;a=a+7){let i=e>>>a,r=!(!(i>>>7)&&n==0),l=(r?i|128:i)&255;if(t.push(l),!r)return}let o=e>>>28&15|(n&7)<<4,s=!!(n>>3);if(t.push((s?o|128:o)&255),!!s){for(let a=3;a<31;a=a+7){let i=n>>>a,r=!!(i>>>7),l=(r?i|128:i)&255;if(t.push(l),!r)return}t.push(n>>>31&1)}}var Ie=4294967296;function Te(e){let n=e[0]==="-";n&&(e=e.slice(1));let t=1e6,o=0,s=0;function a(i,r){let l=Number(e.slice(i,r));s*=t,o=o*t+l,o>=Ie&&(s=s+(o/Ie|0),o=o%Ie)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),n?vn(o,s):_e(o,s)}function wn(e,n){let t=_e(e,n),o=t.hi&2147483648;o&&(t=vn(t.lo,t.hi));let s=Pe(t.lo,t.hi);return o?"-"+s:s}function Pe(e,n){if({lo:e,hi:n}=jo(e,n),n<=2097151)return String(Ie*n+e);let t=e&16777215,o=(e>>>24|n<<8)&16777215,s=n>>16&65535,a=t+o*6777216+s*6710656,i=o+s*8147497,r=s*2,l=1e7;return a>=l&&(i+=Math.floor(a/l),a%=l),i>=l&&(r+=Math.floor(i/l),i%=l),r.toString()+Kn(i)+Kn(a)}function jo(e,n){return{lo:e>>>0,hi:n>>>0}}function _e(e,n){return{lo:e|0,hi:n|0}}function vn(e,n){return n=~n,e?e=~e+1:n+=1,_e(e,n)}var Kn=e=>{let n=String(e);return"0000000".slice(n.length)+n};function Oe(e,n){if(e>=0){for(;e>127;)n.push(e&127|128),e=e>>>7;n.push(e)}else{for(let t=0;t<9;t++)n.push(e&127|128),e=e>>7;n.push(1)}}function Un(){let e=this.buf[this.pos++],n=e&127;if(!(e&128))return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<7,!(e&128))return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<14,!(e&128))return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<21,!(e&128))return this.assertBounds(),n;e=this.buf[this.pos++],n|=(e&15)<<28;for(let t=5;e&128&&t<10;t++)e=this.buf[this.pos++];if(e&128)throw new Error("invalid varint");return this.assertBounds(),n>>>0}var p=$o();function $o(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof e.getBigInt64=="function"&&typeof e.getBigUint64=="function"&&typeof e.setBigInt64=="function"&&typeof e.setBigUint64=="function"&&(typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let t=BigInt("-9223372036854775808"),o=BigInt("9223372036854775807"),s=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(i){let r=typeof i=="bigint"?i:BigInt(i);if(r>o||r<t)throw new Error(`invalid int64: ${i}`);return r},uParse(i){let r=typeof i=="bigint"?i:BigInt(i);if(r>a||r<s)throw new Error(`invalid uint64: ${i}`);return r},enc(i){return e.setBigInt64(0,this.parse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(i){return e.setBigInt64(0,this.uParse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(i,r){return e.setInt32(0,i,!0),e.setInt32(4,r,!0),e.getBigInt64(0,!0)},uDec(i,r){return e.setInt32(0,i,!0),e.setInt32(4,r,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),kn(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),Dn(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),kn(t),Te(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),Dn(t),Te(t)},dec(t,o){return wn(t,o)},uDec(t,o){return Pe(t,o)}}}function kn(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function Dn(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function F(e,n){switch(e){case c.STRING:return"";case c.BOOL:return!1;default:return 0;case c.DOUBLE:case c.FLOAT:return 0;case c.INT64:case c.UINT64:case c.SFIXED64:case c.FIXED64:case c.SINT64:return n?"0":p.zero;case c.BYTES:return new Uint8Array(0)}}function Qn(e,n){switch(e){case c.BOOL:return n===!1;case c.STRING:return n==="";case c.BYTES:return n instanceof Uint8Array&&!n.byteLength;default:return n==0}}var qo=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],C=class extends Error{constructor(n,t,o="FieldValueInvalidError"){super(t),this.name=o,this.field=()=>n}};function Tn(e){return e instanceof Error&&qo.includes(e.name)&&"field"in e&&typeof e.field=="function"}var Pn=2,Y=Symbol.for("reflect unsafe local");function Ge(e,n){let t=e[n.localName].case;return t===void 0?t:n.fields.find(o=>o.localName===t)}function _n(e,n){let t=n.localName;if(n.oneof)return e[n.oneof.localName].case===t;if(n.presence!=Pn)return e[t]!==void 0&&Object.prototype.hasOwnProperty.call(e,t);switch(n.fieldKind){case"list":return e[t].length>0;case"map":return Object.keys(e[t]).length>0;case"scalar":return!Qn(n.scalar,e[t]);case"enum":return e[t]!==n.enum.values[0].number}throw new Error("message field with implicit presence")}function D(e,n){return Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==void 0}function he(e,n){if(n.oneof){let t=e[n.oneof.localName];return t.case===n.localName?t.value:void 0}return e[n.localName]}function fe(e,n,t){n.oneof?e[n.oneof.localName]={case:n.localName,value:t}:e[n.localName]=t}function On(e,n){let t=n.localName;if(n.oneof){let o=n.oneof.localName;e[o].case===t&&(e[o]={case:void 0})}else if(n.presence!=Pn)delete e[t];else switch(n.fieldKind){case"map":e[t]={};break;case"list":e[t]=[];break;case"enum":e[t]=n.enum.values[0].number;break;case"scalar":e[t]=F(n.scalar,n.longAsString);break}}function H(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function se(e,n){var t,o,s,a;if(H(e)&&Y in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(n!==void 0){let i=n,r=e.field();return i.listKind==r.listKind&&i.scalar===r.scalar&&((t=i.message)===null||t===void 0?void 0:t.typeName)===((o=r.message)===null||o===void 0?void 0:o.typeName)&&((s=i.enum)===null||s===void 0?void 0:s.typeName)===((a=r.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function ae(e,n){var t,o,s,a;if(H(e)&&Y in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(n!==void 0){let i=n,r=e.field();return i.mapKey===r.mapKey&&i.mapKind==r.mapKind&&i.scalar===r.scalar&&((t=i.message)===null||t===void 0?void 0:t.typeName)===((o=r.message)===null||o===void 0?void 0:o.typeName)&&((s=i.enum)===null||s===void 0?void 0:s.typeName)===((a=r.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function ie(e,n){return H(e)&&Y in e&&"desc"in e&&H(e.desc)&&e.desc.kind==="message"&&(n===void 0||e.desc.typeName==n.typeName)}function jn(e){return $n(e.$typeName)}function M(e){let n=e.fields[0];return $n(e.typeName)&&n!==void 0&&n.fieldKind=="scalar"&&n.name=="value"&&n.number==1}function $n(e){return e.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(e.substring(16))}var es=999,ns=998,Ze=2;function B(e,n){if(oe(n,e))return n;let t=is(e);return n!==void 0&&ts(e,t,n),t}function ts(e,n,t){for(let o of e.members){let s=t[o.localName];if(s==null)continue;let a;if(o.kind=="oneof"){let i=Ge(t,o);if(!i)continue;a=i,s=he(t,i)}else a=o;switch(a.fieldKind){case"message":s=$e(a,s);break;case"scalar":s=nt(a,s);break;case"list":s=ss(a,s);break;case"map":s=os(a,s);break}fe(n,a,s)}return n}function nt(e,n){return e.scalar==c.BYTES?qe(n):n}function os(e,n){if(H(n)){if(e.scalar==c.BYTES)return qn(n,qe);if(e.mapKind=="message")return qn(n,t=>$e(e,t))}return n}function ss(e,n){if(Array.isArray(n)){if(e.scalar==c.BYTES)return n.map(qe);if(e.listKind=="message")return n.map(t=>$e(e,t))}return n}function $e(e,n){if(e.fieldKind=="message"&&!e.oneof&&M(e.message))return nt(e.message.fields[0],n);if(H(n)){if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return n;if(!oe(n,e.message))return B(e.message,n)}return n}function qe(e){return Array.isArray(e)?new Uint8Array(e):e}function qn(e,n){let t={};for(let o of Object.entries(e))t[o[0]]=n(o[1]);return t}var as=Symbol(),et=new WeakMap;function is(e){let n;if(rs(e)){let t=et.get(e),o,s;if(t)({prototype:o,members:s}=t);else{o={},s=new Set;for(let a of e.members)a.kind!="oneof"&&(a.fieldKind!="scalar"&&a.fieldKind!="enum"||a.presence!=Ze&&(s.add(a),o[a.localName]=je(a)));et.set(e,{prototype:o,members:s})}n=Object.create(o),n.$typeName=e.typeName;for(let a of e.members)s.has(a)||a.kind=="field"&&(a.fieldKind=="message"||(a.fieldKind=="scalar"||a.fieldKind=="enum")&&a.presence!=Ze)||(n[a.localName]=je(a))}else{n={$typeName:e.typeName};for(let t of e.members)(t.kind=="oneof"||t.presence==Ze)&&(n[t.localName]=je(t))}return n}function rs(e){switch(e.file.edition){case es:return!1;case ns:return!0;default:return e.fields.some(n=>n.presence!=Ze&&n.fieldKind!="message"&&!n.oneof)}}function je(e){if(e.kind=="oneof")return{case:void 0};if(e.fieldKind=="list")return[];if(e.fieldKind=="map")return{};if(e.fieldKind=="message")return as;let n=e.getDefaultValue();return n!==void 0?e.fieldKind=="scalar"&&e.longAsString?n.toString():n:e.fieldKind=="scalar"?F(e.scalar,e.longAsString):e.enum.values[0].number}var en=Symbol.for("@bufbuild/protobuf/text-encoding");function re(){if(globalThis[en]==null){let e=new globalThis.TextEncoder,n=new globalThis.TextDecoder;globalThis[en]={encodeUtf8(t){return e.encode(t)},decodeUtf8(t){return n.decode(t)},checkUtf8(t){try{return encodeURIComponent(t),!0}catch{return!1}}}}return globalThis[en]}var f;(function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"})(f||(f={}));var tn=34028234663852886e22,on=-34028234663852886e22,sn=4294967295,an=2147483647,rn=-2147483648,P=class{constructor(n=re().encodeUtf8){this.encodeUtf8=n,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let n=0;for(let s=0;s<this.chunks.length;s++)n+=this.chunks[s].length;let t=new Uint8Array(n),o=0;for(let s=0;s<this.chunks.length;s++)t.set(this.chunks[s],o),o+=this.chunks[s].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let n=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(n.byteLength),this.raw(n)}tag(n,t){return this.uint32((n<<3|t)>>>0)}raw(n){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(n),this}uint32(n){for(tt(n);n>127;)this.buf.push(n&127|128),n=n>>>7;return this.buf.push(n),this}int32(n){return nn(n),Oe(n,this.buf),this}bool(n){return this.buf.push(n?1:0),this}bytes(n){return this.uint32(n.byteLength),this.raw(n)}string(n){let t=this.encodeUtf8(n);return this.uint32(t.byteLength),this.raw(t)}float(n){cs(n);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,n,!0),this.raw(t)}double(n){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,n,!0),this.raw(t)}fixed32(n){tt(n);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,n,!0),this.raw(t)}sfixed32(n){nn(n);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,n,!0),this.raw(t)}sint32(n){return nn(n),n=(n<<1^n>>31)>>>0,Oe(n,this.buf),this}sfixed64(n){let t=new Uint8Array(8),o=new DataView(t.buffer),s=p.enc(n);return o.setInt32(0,s.lo,!0),o.setInt32(4,s.hi,!0),this.raw(t)}fixed64(n){let t=new Uint8Array(8),o=new DataView(t.buffer),s=p.uEnc(n);return o.setInt32(0,s.lo,!0),o.setInt32(4,s.hi,!0),this.raw(t)}int64(n){let t=p.enc(n);return ye(t.lo,t.hi,this.buf),this}sint64(n){let t=p.enc(n),o=t.hi>>31,s=t.lo<<1^o,a=(t.hi<<1|t.lo>>>31)^o;return ye(s,a,this.buf),this}uint64(n){let t=p.uEnc(n);return ye(t.lo,t.hi,this.buf),this}},Q=class{constructor(n,t=re().decodeUtf8){this.decodeUtf8=t,this.varint64=Ln,this.uint32=Un,this.buf=n,this.len=n.length,this.pos=0,this.view=new DataView(n.buffer,n.byteOffset,n.byteLength)}tag(){let n=this.uint32(),t=n>>>3,o=n&7;if(t<=0||o<0||o>5)throw new Error("illegal tag: field no "+t+" wire type "+o);return[t,o]}skip(n,t){let o=this.pos;switch(n){case f.Varint:for(;this.buf[this.pos++]&128;);break;case f.Bit64:this.pos+=4;case f.Bit32:this.pos+=4;break;case f.LengthDelimited:let s=this.uint32();this.pos+=s;break;case f.StartGroup:for(;;){let[a,i]=this.tag();if(i===f.EndGroup){if(t!==void 0&&a!==t)throw new Error("invalid end group tag");break}this.skip(i,a)}break;default:throw new Error("cant skip wire type "+n)}return this.assertBounds(),this.buf.subarray(o,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let n=this.uint32();return n>>>1^-(n&1)}int64(){return p.dec(...this.varint64())}uint64(){return p.uDec(...this.varint64())}sint64(){let[n,t]=this.varint64(),o=-(n&1);return n=(n>>>1|(t&1)<<31)^o,t=t>>>1^o,p.dec(n,t)}bool(){let[n,t]=this.varint64();return n!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return p.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return p.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let n=this.uint32(),t=this.pos;return this.pos+=n,this.assertBounds(),this.buf.subarray(t,t+n)}string(){return this.decodeUtf8(this.bytes())}};function nn(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid int32: "+typeof e);if(!Number.isInteger(e)||e>an||e<rn)throw new Error("invalid int32: "+e)}function tt(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid uint32: "+typeof e);if(!Number.isInteger(e)||e>sn||e<0)throw new Error("invalid uint32: "+e)}function cs(e){if(typeof e=="string"){let n=e;if(e=Number(e),isNaN(e)&&n!=="NaN")throw new Error("invalid float32: "+n)}else if(typeof e!="number")throw new Error("invalid float32: "+typeof e);if(Number.isFinite(e)&&(e>tn||e<on))throw new Error("invalid float32: "+e)}function K(e,n){let t=e.fieldKind=="list"?se(n,e):e.fieldKind=="map"?ae(n,e):ln(e,n);if(t===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${it(e)}, got ${A(n)}`;break;case"map":o=`expected ${rt(e)}, got ${A(n)}`;break;default:o=Ae(e,n,t)}return new C(e,o)}function cn(e,n,t){let o=ln(e,t);if(o!==!0)return new C(e,`list item #${n+1}: ${Ae(e,t,o)}`)}function ot(e,n,t){let o=st(n,e.mapKey);if(o!==!0)return new C(e,`invalid map key: ${Ae({scalar:e.mapKey},n,o)}`);let s=ln(e,t);if(s!==!0)return new C(e,`map entry ${A(n)}: ${Ae(e,t,s)}`)}function ln(e,n){return e.scalar!==void 0?st(n,e.scalar):e.enum!==void 0?e.enum.open?Number.isInteger(n):e.enum.values.some(t=>t.number===n):ie(n,e.message)}function st(e,n){switch(n){case c.DOUBLE:return typeof e=="number";case c.FLOAT:return typeof e!="number"?!1:Number.isNaN(e)||!Number.isFinite(e)?!0:e>tn||e<on?`${e.toFixed()} out of range`:!0;case c.INT32:case c.SFIXED32:case c.SINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>an||e<rn?`${e.toFixed()} out of range`:!0;case c.FIXED32:case c.UINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>sn||e<0?`${e.toFixed()} out of range`:!0;case c.BOOL:return typeof e=="boolean";case c.STRING:return typeof e!="string"?!1:re().checkUtf8(e)||"invalid UTF8";case c.BYTES:return e instanceof Uint8Array;case c.INT64:case c.SFIXED64:case c.SINT64:if(typeof e!="string"&&typeof e!="bigint"&&typeof e!="number")return!1;try{p.parse(e)}catch{return`${e} out of range`}return!0;case c.FIXED64:case c.UINT64:if(typeof e!="string"&&typeof e!="bigint"&&typeof e!="number")return!1;try{p.uParse(e)}catch{return`${e} out of range`}return!0}}function Ae(e,n,t){return t=typeof t=="string"?`: ${t}`:`, got ${A(n)}`,e.scalar!==void 0?`expected ${ls(e.scalar)}`+t:e.enum!==void 0?`expected ${e.enum.toString()}`+t:`expected ${at(e.message)}`+t}function A(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:se(e)?it(e.field()):ae(e)?rt(e.field()):ie(e)?at(e.desc):oe(e)?`message ${e.$typeName}`:"object";case"string":return e.length>30?"string":`"${e.split('"').join('\\"')}"`;case"boolean":return String(e);case"number":return String(e);case"bigint":return String(e)+"n";default:return typeof e}}function at(e){return`ReflectMessage (${e.typeName})`}function it(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${c[e.scalar]})`}}function rt(e){switch(e.mapKind){case"message":return`ReflectMap (${c[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${c[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${c[e.mapKey]}, ${c[e.scalar]})`}}function ls(e){switch(e){case c.STRING:return"string";case c.BOOL:return"boolean";case c.INT64:case c.SINT64:case c.SFIXED64:return"bigint (int64)";case c.UINT64:case c.FIXED64:return"bigint (uint64)";case c.BYTES:return"Uint8Array";case c.DOUBLE:return"number (float64)";case c.FLOAT:return"number (float32)";case c.FIXED32:case c.UINT32:return"number (uint32)";case c.INT32:case c.SFIXED32:case c.SINT32:return"number (int32)"}}function X(e,n,t=!0){return new Ce(e,n,t)}var Ce=class{get sortedFields(){var n;return(n=this._sortedFields)!==null&&n!==void 0?n:this._sortedFields=this.desc.fields.concat().sort((t,o)=>t.number-o.number)}constructor(n,t,o=!0){this.lists=new Map,this.maps=new Map,this.check=o,this.desc=n,this.message=this[Y]=t??B(n),this.fields=n.fields,this.oneofs=n.oneofs,this.members=n.members}findNumber(n){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(t=>[t.number,t]))),this._fieldsByNumber.get(n)}oneofCase(n){return ce(this.message,n),Ge(this.message,n)}isSet(n){return ce(this.message,n),_n(this.message,n)}clear(n){ce(this.message,n),On(this.message,n)}get(n){ce(this.message,n);let t=he(this.message,n);switch(n.fieldKind){case"list":let o=this.lists.get(n);return(!o||o[Y]!==t)&&this.lists.set(n,o=new gn(n,t,this.check)),o;case"map":let s=this.maps.get(n);return(!s||s[Y]!==t)&&this.maps.set(n,s=new mn(n,t,this.check)),s;case"message":return pn(n,t,this.check);case"scalar":return t===void 0?F(n.scalar,!1):In(n,t);case"enum":return t??n.enum.values[0].number}}set(n,t){if(ce(this.message,n),this.check){let s=K(n,t);if(s)throw s}let o;n.fieldKind=="message"?o=bn(n,t):ae(t)||se(t)?o=t[Y]:o=yn(n,t),fe(this.message,n,o)}getUnknown(){return this.message.$unknown}setUnknown(n){this.message.$unknown=n}};function ce(e,n){if(n.parent.typeName!==e.$typeName)throw new C(n,`cannot use ${n.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var gn=class{field(){return this._field}get size(){return this._arr.length}constructor(n,t,o){this._field=n,this._arr=this[Y]=t,this.check=o}get(n){let t=this._arr[n];return t===void 0?void 0:dn(this._field,t,this.check)}set(n,t){if(n<0||n>=this._arr.length)throw new C(this._field,`list item #${n+1}: out of range`);if(this.check){let o=cn(this._field,n,t);if(o)throw o}this._arr[n]=ct(this._field,t)}add(n){if(this.check){let t=cn(this._field,this._arr.length,n);if(t)throw t}this._arr.push(ct(this._field,n))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let n of this._arr)yield dn(this._field,n,this.check)}*entries(){for(let n=0;n<this._arr.length;n++)yield[n,dn(this._field,this._arr[n],this.check)]}};var mn=class{constructor(n,t,o=!0){this.obj=this[Y]=t??{},this.check=o,this._field=n}field(){return this._field}set(n,t){if(this.check){let o=ot(this._field,n,t);if(o)throw o}return this.obj[Ve(n)]=ds(this._field,t),this}delete(n){let t=Ve(n),o=Object.prototype.hasOwnProperty.call(this.obj,t);return o&&delete this.obj[t],o}clear(){for(let n of Object.keys(this.obj))delete this.obj[n]}get(n){let t=this.obj[Ve(n)];return t!==void 0&&(t=un(this._field,t,this.check)),t}has(n){return Object.prototype.hasOwnProperty.call(this.obj,Ve(n))}*keys(){for(let n of Object.keys(this.obj))yield lt(n,this._field.mapKey)}*entries(){for(let n of Object.entries(this.obj))yield[lt(n[0],this._field.mapKey),un(this._field,n[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let n of Object.values(this.obj))yield un(this._field,n,this.check)}forEach(n,t){for(let o of this.entries())n.call(t,o[1],o[0],this)}};function bn(e,n){return ie(n)?jn(n.message)&&!e.oneof&&e.fieldKind=="message"?n.message.value:n.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?ut(n.message):n.message:n}function pn(e,n,t){return n!==void 0&&(M(e.message)&&!e.oneof&&e.fieldKind=="message"?n={$typeName:e.message.typeName,value:In(e.message.fields[0],n)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&H(n)&&(n=dt(n))),new Ce(e.message,n,t)}function ct(e,n){return e.listKind=="message"?bn(e,n):yn(e,n)}function dn(e,n,t){return e.listKind=="message"?pn(e,n,t):In(e,n)}function ds(e,n){return e.mapKind=="message"?bn(e,n):yn(e,n)}function un(e,n,t){return e.mapKind=="message"?pn(e,n,t):n}function Ve(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function lt(e,n){switch(n){case c.STRING:return e;case c.INT32:case c.FIXED32:case c.UINT32:case c.SFIXED32:case c.SINT32:{let t=Number.parseInt(e);if(Number.isFinite(t))return t;break}case c.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case c.UINT64:case c.FIXED64:try{return p.uParse(e)}catch{}break;default:try{return p.parse(e)}catch{}break}return e}function In(e,n){switch(e.scalar){case c.INT64:case c.SFIXED64:case c.SINT64:"longAsString"in e&&e.longAsString&&typeof n=="string"&&(n=p.parse(n));break;case c.FIXED64:case c.UINT64:"longAsString"in e&&e.longAsString&&typeof n=="string"&&(n=p.uParse(n));break}return n}function yn(e,n){switch(e.scalar){case c.INT64:case c.SFIXED64:case c.SINT64:"longAsString"in e&&e.longAsString?n=String(n):(typeof n=="string"||typeof n=="number")&&(n=p.parse(n));break;case c.FIXED64:case c.UINT64:"longAsString"in e&&e.longAsString?n=String(n):(typeof n=="string"||typeof n=="number")&&(n=p.uParse(n));break}return n}function dt(e){let n={$typeName:"google.protobuf.Struct",fields:{}};if(H(e))for(let[t,o]of Object.entries(e))n.fields[t]=mt(o);return n}function ut(e){let n={};for(let[t,o]of Object.entries(e.fields))n[t]=gt(o);return n}function gt(e){switch(e.kind.case){case"structValue":return ut(e.kind.value);case"listValue":return e.kind.value.values.map(gt);case"nullValue":case void 0:return null;default:return e.kind.value}}function mt(e){let n={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof e){case"number":n.kind={case:"numberValue",value:e};break;case"string":n.kind={case:"stringValue",value:e};break;case"boolean":n.kind={case:"boolValue",value:e};break;case"object":if(e===null)n.kind={case:"nullValue",value:0};else if(Array.isArray(e)){let t={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(let o of e)t.values.push(mt(o));n.kind={case:"listValue",value:t}}else n.kind={case:"structValue",value:dt(e)};break}return n}function Se(e){let n=us(),t=e.length*3/4;e[e.length-2]=="="?t-=2:e[e.length-1]=="="&&(t-=1);let o=new Uint8Array(t),s=0,a=0,i,r=0;for(let l=0;l<e.length;l++){if(i=n[e.charCodeAt(l)],i===void 0)switch(e[l]){case"=":a=0;case`
3
+ `:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(a){case 0:r=i,a=1;break;case 1:o[s++]=r<<2|(i&48)>>4,r=i,a=2;break;case 2:o[s++]=(r&15)<<4|(i&60)>>2,r=i,a=3;break;case 3:o[s++]=(r&3)<<6|i,a=0;break}}if(a==1)throw Error("invalid base64 string");return o.subarray(0,s)}function pt(e,n="std"){let t=It(n),o=n=="std",s="",a=0,i,r=0;for(let l=0;l<e.length;l++)switch(i=e[l],a){case 0:s+=t[i>>2],r=(i&3)<<4,a=1;break;case 1:s+=t[r|i>>4],r=(i&15)<<2,a=2;break;case 2:s+=t[r|i>>6],s+=t[i&63],a=0;break}return a&&(s+=t[r],o&&(s+="=",a==1&&(s+="="))),s}var Xe,bt,_;function It(e){return Xe||(Xe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),bt=Xe.slice(0,-2).concat("-","_")),e=="url"?bt:Xe}function us(){if(!_){_=[];let e=It("std");for(let n=0;n<e.length;n++)_[e[n].charCodeAt(0)]=n;_[45]=e.indexOf("+"),_[95]=e.indexOf("/")}return _}function U(e){let n=!1,t=[];for(let o=0;o<e.length;o++){let s=e.charAt(o);switch(s){case"_":n=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":t.push(s),n=!1;break;default:n&&(n=!1,s=s.toUpperCase()),t.push(s);break}}return t.join("")}var gs=new Set(["constructor","toString","toJSON","valueOf"]);function O(e){return gs.has(e)?e+"$":e}function le(e){for(let n of e.field)D(n,"jsonName")||(n.jsonName=U(n.name));e.nestedType.forEach(le)}function yt(e,n){let t=e.values.find(o=>o.name===n);if(!t)throw new Error(`cannot parse ${e} default value: ${n}`);return t.number}function Gt(e,n){switch(e){case c.STRING:return n;case c.BYTES:{let t=ms(n);if(t===!1)throw new Error(`cannot parse ${c[e]} default value: ${n}`);return t}case c.INT64:case c.SFIXED64:case c.SINT64:return p.parse(n);case c.UINT64:case c.FIXED64:return p.uParse(n);case c.DOUBLE:case c.FLOAT:switch(n){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(n)}case c.BOOL:return n==="true";case c.INT32:case c.UINT32:case c.SINT32:case c.FIXED32:case c.SFIXED32:return parseInt(n,10)}}function ms(e){let n=[],t={tail:e,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(o){if(this.tail.length>=o){let s=this.tail.substring(0,o);return this.tail=this.tail.substring(o),s}return!1}};for(;t.next();)switch(t.c){case"\\":if(t.next())switch(t.c){case"\\":n.push(t.c.charCodeAt(0));break;case"b":n.push(8);break;case"f":n.push(12);break;case"n":n.push(10);break;case"r":n.push(13);break;case"t":n.push(9);break;case"v":n.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let o=t.c,s=t.take(2);if(s===!1)return!1;let a=parseInt(o+s,8);if(isNaN(a))return!1;n.push(a);break}case"x":{let o=t.c,s=t.take(2);if(s===!1)return!1;let a=parseInt(o+s,16);if(isNaN(a))return!1;n.push(a);break}case"u":{let o=t.c,s=t.take(4);if(s===!1)return!1;let a=parseInt(o+s,16);if(isNaN(a))return!1;let i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,a,!0),n.push(i[0],i[1],i[2],i[3]);break}case"U":{let o=t.c,s=t.take(8);if(s===!1)return!1;let a=p.uEnc(o+s),i=new Uint8Array(8),r=new DataView(i.buffer);r.setInt32(0,a.lo,!0),r.setInt32(4,a.hi,!0),n.push(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);break}}break;default:n.push(t.c.charCodeAt(0))}return new Uint8Array(n)}function*Be(e){switch(e.kind){case"file":for(let n of e.messages)yield n,yield*Be(n);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(let n of e.nestedMessages)yield n,yield*Be(n);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function We(...e){let n=bs();if(!e.length)return n;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let o of e[0].file)Zt(o,n);return n}if("$typeName"in e[0]){let i=function(r){let l=[];for(let d of r.dependency){if(n.getFile(d)!=null||a.has(d))continue;let u=s(d);if(!u)throw new Error(`Unable to resolve ${d}, imported by ${r.name}`);"kind"in u?n.addFile(u,!1,!0):(a.add(u.name),l.push(u))}return l.concat(...l.map(i))};var t=i;let o=e[0],s=e[1],a=new Set;for(let r of[o,...i(o)].reverse())Zt(r,n)}else for(let o of e)for(let s of o.files)n.addFile(s);return n}function bs(){let e=new Map,n=new Map,t=new Map;return{kind:"registry",types:e,extendees:n,[Symbol.iterator](){return e.values()},get files(){return t.values()},addFile(o,s,a){if(t.set(o.proto.name,o),!s)for(let i of Be(o))this.add(i);if(a)for(let i of o.dependencies)this.addFile(i,s,a)},add(o){if(o.kind=="extension"){let s=n.get(o.extendee.typeName);s||n.set(o.extendee.typeName,s=new Map),s.set(o.number,o)}e.set(o.typeName,o)},get(o){return e.get(o)},getFile(o){return t.get(o)},getMessage(o){let s=e.get(o);return s?.kind=="message"?s:void 0},getEnum(o){let s=e.get(o);return s?.kind=="enum"?s:void 0},getExtension(o){let s=e.get(o);return s?.kind=="extension"?s:void 0},getExtensionFor(o,s){var a;return(a=n.get(o.typeName))===null||a===void 0?void 0:a.get(s)},getService(o){let s=e.get(o);return s?.kind=="service"?s:void 0}}}var ps=998,Is=999,ys=9,Je=10,de=11,Gs=12,ht=14,An=3,hs=2,ft=1,fs=0,Gn=1,Zs=2,As=3,Vs=1,Cs=2,Xs=1;var Vt={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1}};function Zt(e,n){var t,o;let s={kind:"file",proto:e,deprecated:(o=(t=e.options)===null||t===void 0?void 0:t.deprecated)!==null&&o!==void 0?o:!1,edition:Ws(e),name:e.name.replace(/\.proto$/,""),dependencies:xs(e,n),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},a=new Map,i={get(r){return a.get(r)},add(r){var l;N(((l=r.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),a.set(r.typeName,r)}};for(let r of e.enumType)Ct(r,s,void 0,n);for(let r of e.messageType)Xt(r,s,void 0,n,i);for(let r of e.service)Ss(r,s,n);hn(s,n);for(let r of a.values())fn(r,n,i);for(let r of s.messages)fn(r,n,i),hn(r,n);n.addFile(s,!0)}function hn(e,n){switch(e.kind){case"file":for(let t of e.proto.extension){let o=Zn(t,e,n);e.extensions.push(o),n.add(o)}break;case"message":for(let t of e.proto.extension){let o=Zn(t,e,n);e.nestedExtensions.push(o),n.add(o)}for(let t of e.nestedMessages)hn(t,n);break}}function fn(e,n,t){let o=e.proto.oneofDecl.map(a=>Js(a,e)),s=new Set;for(let a of e.proto.field){let i=Es(a,o),r=Zn(a,e,n,i,t);e.fields.push(r),e.field[r.localName]=r,i===void 0?e.members.push(r):(i.fields.push(r),s.has(i)||(s.add(i),e.members.push(i)))}for(let a of o.filter(i=>s.has(i)))e.oneofs.push(a);for(let a of e.nestedMessages)fn(a,n,t)}function Ct(e,n,t,o){var s,a,i;let r=Rs(e.name,e.value),l={kind:"enum",proto:e,deprecated:(a=(s=e.options)===null||s===void 0?void 0:s.deprecated)!==null&&a!==void 0?a:!1,file:n,parent:t,open:!0,name:e.name,typeName:xe(e,t,n),value:{},values:[],sharedPrefix:r,toString(){return`enum ${this.typeName}`}};l.open=Ms(l),o.add(l),e.value.forEach(d=>{var u,I;let W=d.name;l.values.push(l.value[d.number]={kind:"enum_value",proto:d,deprecated:(I=(u=d.options)===null||u===void 0?void 0:u.deprecated)!==null&&I!==void 0?I:!1,parent:l,name:W,localName:O(r==null?W:W.substring(r.length)),number:d.number,toString(){return`enum value ${l.typeName}.${W}`}})}),((i=t?.nestedEnums)!==null&&i!==void 0?i:n.enums).push(l)}function Xt(e,n,t,o,s){var a,i,r,l;let d={kind:"message",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,file:n,parent:t,name:e.name,typeName:xe(e,t,n),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((r=e.options)===null||r===void 0?void 0:r.mapEntry)===!0?s.add(d):(((l=t?.nestedMessages)!==null&&l!==void 0?l:n.messages).push(d),o.add(d));for(let u of e.enumType)Ct(u,n,d,o);for(let u of e.nestedType)Xt(u,n,d,o,s)}function Ss(e,n,t){var o,s;let a={kind:"service",proto:e,deprecated:(s=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&s!==void 0?s:!1,file:n,name:e.name,typeName:xe(e,void 0,n),methods:[],method:{},toString(){return`service ${this.typeName}`}};n.services.push(a),t.add(a);for(let i of e.method){let r=Bs(i,a,t);a.methods.push(r),a.method[r.localName]=r}}function Bs(e,n,t){var o,s,a,i;let r;e.clientStreaming&&e.serverStreaming?r="bidi_streaming":e.clientStreaming?r="client_streaming":e.serverStreaming?r="server_streaming":r="unary";let l=t.getMessage(L(e.inputType)),d=t.getMessage(L(e.outputType));N(l,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),N(d,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);let u=e.name;return{kind:"rpc",proto:e,deprecated:(s=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&s!==void 0?s:!1,parent:n,name:u,localName:O(u.length?O(u[0].toLowerCase()+u.substring(1)):u),methodKind:r,input:l,output:d,idempotency:(i=(a=e.options)===null||a===void 0?void 0:a.idempotencyLevel)!==null&&i!==void 0?i:fs,toString(){return`rpc ${n.typeName}.${u}`}}}function Js(e,n){return{kind:"oneof",proto:e,deprecated:!1,parent:n,fields:[],name:e.name,localName:O(U(e.name)),toString(){return`oneof ${n.typeName}.${this.name}`}}}function Zn(e,n,t,o,s){var a,i,r;let l=s===void 0,d={kind:"field",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:Ys(e,o,l,n),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(l){let x=n.kind=="file"?n:n.file,v=n.kind=="file"?void 0:n,G=xe(e,v,x);d.kind="extension",d.file=x,d.parent=v,d.oneof=void 0,d.typeName=G,d.jsonName=`[${G}]`,d.toString=()=>`extension ${G}`;let R=t.getMessage(L(e.extendee));N(R,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),d.extendee=R}else{let x=n;N(x.kind=="message"),d.parent=x,d.oneof=o,d.localName=o?U(e.name):O(U(e.name)),d.jsonName=e.jsonName,d.toString=()=>`field ${x.typeName}.${e.name}`}let u=e.label,I=e.type,W=(r=e.options)===null||r===void 0?void 0:r.jstype;if(u===An){let x=I==de?s?.get(L(e.typeName)):void 0;if(x){d.fieldKind="map";let{key:v,value:G}=Hs(x);return d.mapKey=v.scalar,d.mapKind=G.fieldKind,d.message=G.message,d.delimitedEncoding=!1,d.enum=G.enum,d.scalar=G.scalar,d}switch(d.fieldKind="list",I){case de:case Je:d.listKind="message",d.message=t.getMessage(L(e.typeName)),N(d.message),d.delimitedEncoding=At(e,n);break;case ht:d.listKind="enum",d.enum=t.getEnum(L(e.typeName)),N(d.enum);break;default:d.listKind="scalar",d.scalar=I,d.longAsString=W==ft;break}return d.packed=Ns(e,n),d}switch(I){case de:case Je:d.fieldKind="message",d.message=t.getMessage(L(e.typeName)),N(d.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),d.delimitedEncoding=At(e,n),d.getDefaultValue=()=>{};break;case ht:{let x=t.getEnum(L(e.typeName));N(x!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),d.fieldKind="enum",d.enum=t.getEnum(L(e.typeName)),d.getDefaultValue=()=>D(e,"defaultValue")?yt(x,e.defaultValue):void 0;break}default:{d.fieldKind="scalar",d.scalar=I,d.longAsString=W==ft,d.getDefaultValue=()=>D(e,"defaultValue")?Gt(I,e.defaultValue):void 0;break}}return d}function Ws(e){switch(e.syntax){case"":case"proto2":return ps;case"proto3":return Is;case"editions":if(e.edition in Vt)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function xs(e,n){return e.dependency.map(t=>{let o=n.getFile(t);if(!o)throw new Error(`Cannot find ${t}, imported by ${e.name}`);return o})}function Rs(e,n){let t=Fs(e)+"_";for(let o of n){if(!o.name.toLowerCase().startsWith(t))return;let s=o.name.substring(t.length);if(s.length==0||/^\d/.test(s))return}return t}function Fs(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,n=>"_"+n)).toLowerCase()}function xe(e,n,t){let o;return n?o=`${n.typeName}.${e.name}`:t.proto.package.length>0?o=`${t.proto.package}.${e.name}`:o=`${e.name}`,o}function L(e){return e.startsWith(".")?e.substring(1):e}function Es(e,n){if(!D(e,"oneofIndex")||e.proto3Optional)return;let t=n[e.oneofIndex];return N(t,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),t}function Ys(e,n,t,o){return e.label==hs?As:e.label==An?Zs:n||e.proto3Optional||e.type==de||t?Gn:j("fieldPresence",{proto:e,parent:o})}function Ns(e,n){if(e.label!=An)return!1;switch(e.type){case ys:case Gs:case Je:case de:return!1}let t=e.options;return t&&D(t,"packed")?t.packed:Vs==j("repeatedFieldEncoding",{proto:e,parent:n})}function Hs(e){let n=e.fields.find(o=>o.number===1),t=e.fields.find(o=>o.number===2);return N(n&&n.fieldKind=="scalar"&&n.scalar!=c.BYTES&&n.scalar!=c.FLOAT&&n.scalar!=c.DOUBLE&&t&&t.fieldKind!="list"&&t.fieldKind!="map"),{key:n,value:t}}function Ms(e){var n;return Xs==j("enumType",{proto:e.proto,parent:(n=e.parent)!==null&&n!==void 0?n:e.file})}function At(e,n){return e.type==Je?!0:Cs==j("messageEncoding",{proto:e,parent:n})}function j(e,n){var t,o;let s=(t=n.proto.options)===null||t===void 0?void 0:t.features;if(s){let a=s[e];if(a!=0)return a}if("kind"in n){if(n.kind=="message")return j(e,(o=n.parent)!==null&&o!==void 0?o:n.file);let a=Vt[n.edition];if(!a)throw new Error(`feature default for edition ${n.edition} not found`);return a[e]}return j(e,n.parent)}function N(e,n){if(!e)throw new Error(n)}function St(e){let n=zs(e);return n.messageType.forEach(le),We(n,()=>{}).getFile(n.name)}function zs(e){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],service:[],extension:[]},e),{messageType:e.messageType.map(Bt),enumType:e.enumType.map(Jt)}))}function Bt(e){var n,t,o,s,a,i,r,l;return{$typeName:"google.protobuf.DescriptorProto",name:e.name,field:(t=(n=e.field)===null||n===void 0?void 0:n.map(Ks))!==null&&t!==void 0?t:[],extension:[],nestedType:(s=(o=e.nestedType)===null||o===void 0?void 0:o.map(Bt))!==null&&s!==void 0?s:[],enumType:(i=(a=e.enumType)===null||a===void 0?void 0:a.map(Jt))!==null&&i!==void 0?i:[],extensionRange:(l=(r=e.extensionRange)===null||r===void 0?void 0:r.map(d=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},d)))!==null&&l!==void 0?l:[],oneofDecl:[],reservedRange:[],reservedName:[]}}function Ks(e){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},e),{options:e.options?Ls(e.options):void 0}))}function Ls(e){var n,t,o;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},e),{targets:(n=e.targets)!==null&&n!==void 0?n:[],editionDefaults:(o=(t=e.editionDefaults)===null||t===void 0?void 0:t.map(a=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},a)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function Jt(e){return{$typeName:"google.protobuf.EnumDescriptorProto",name:e.name,reservedName:[],reservedRange:[],value:e.value.map(n=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},n))}}function J(e,n,...t){return t.reduce((o,s)=>o.nestedMessages[s],e.messages[n])}var T=St({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}]},{name:"FileDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"package",number:2,type:9,label:1},{name:"dependency",number:3,type:9,label:3},{name:"public_dependency",number:10,type:5,label:3},{name:"weak_dependency",number:11,type:5,label:3},{name:"message_type",number:4,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:5,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"service",number:6,type:11,label:3,typeName:".google.protobuf.ServiceDescriptorProto"},{name:"extension",number:7,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FileOptions"},{name:"source_code_info",number:9,type:11,label:1,typeName:".google.protobuf.SourceCodeInfo"},{name:"syntax",number:12,type:9,label:1},{name:"edition",number:14,type:14,label:1,typeName:".google.protobuf.Edition"}]},{name:"DescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"field",number:2,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"extension",number:6,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"nested_type",number:3,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"extension_range",number:5,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ExtensionRange"},{name:"oneof_decl",number:8,type:11,label:3,typeName:".google.protobuf.OneofDescriptorProto"},{name:"options",number:7,type:11,label:1,typeName:".google.protobuf.MessageOptions"},{name:"reserved_range",number:9,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ReservedRange"},{name:"reserved_name",number:10,type:9,label:3}],nestedType:[{name:"ExtensionRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ExtensionRangeOptions"}]},{name:"ReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"ExtensionRangeOptions",field:[{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"},{name:"declaration",number:2,type:11,label:3,typeName:".google.protobuf.ExtensionRangeOptions.Declaration",options:{retention:2}},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"verification",number:3,type:14,label:1,typeName:".google.protobuf.ExtensionRangeOptions.VerificationState",defaultValue:"UNVERIFIED",options:{retention:2}}],nestedType:[{name:"Declaration",field:[{name:"number",number:1,type:5,label:1},{name:"full_name",number:2,type:9,label:1},{name:"type",number:3,type:9,label:1},{name:"reserved",number:5,type:8,label:1},{name:"repeated",number:6,type:8,label:1}]}],enumType:[{name:"VerificationState",value:[{name:"DECLARATION",number:0},{name:"UNVERIFIED",number:1}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:3,type:5,label:1},{name:"label",number:4,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Label"},{name:"type",number:5,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Type"},{name:"type_name",number:6,type:9,label:1},{name:"extendee",number:2,type:9,label:1},{name:"default_value",number:7,type:9,label:1},{name:"oneof_index",number:9,type:5,label:1},{name:"json_name",number:10,type:9,label:1},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FieldOptions"},{name:"proto3_optional",number:17,type:8,label:1}],enumType:[{name:"Type",value:[{name:"TYPE_DOUBLE",number:1},{name:"TYPE_FLOAT",number:2},{name:"TYPE_INT64",number:3},{name:"TYPE_UINT64",number:4},{name:"TYPE_INT32",number:5},{name:"TYPE_FIXED64",number:6},{name:"TYPE_FIXED32",number:7},{name:"TYPE_BOOL",number:8},{name:"TYPE_STRING",number:9},{name:"TYPE_GROUP",number:10},{name:"TYPE_MESSAGE",number:11},{name:"TYPE_BYTES",number:12},{name:"TYPE_UINT32",number:13},{name:"TYPE_ENUM",number:14},{name:"TYPE_SFIXED32",number:15},{name:"TYPE_SFIXED64",number:16},{name:"TYPE_SINT32",number:17},{name:"TYPE_SINT64",number:18}]},{name:"Label",value:[{name:"LABEL_OPTIONAL",number:1},{name:"LABEL_REPEATED",number:3},{name:"LABEL_REQUIRED",number:2}]}]},{name:"OneofDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"options",number:2,type:11,label:1,typeName:".google.protobuf.OneofOptions"}]},{name:"EnumDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"value",number:2,type:11,label:3,typeName:".google.protobuf.EnumValueDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumOptions"},{name:"reserved_range",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto.EnumReservedRange"},{name:"reserved_name",number:5,type:9,label:3}],nestedType:[{name:"EnumReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"EnumValueDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumValueOptions"}]},{name:"ServiceDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"method",number:2,type:11,label:3,typeName:".google.protobuf.MethodDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ServiceOptions"}]},{name:"MethodDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"input_type",number:2,type:9,label:1},{name:"output_type",number:3,type:9,label:1},{name:"options",number:4,type:11,label:1,typeName:".google.protobuf.MethodOptions"},{name:"client_streaming",number:5,type:8,label:1,defaultValue:"false"},{name:"server_streaming",number:6,type:8,label:1,defaultValue:"false"}]},{name:"FileOptions",field:[{name:"java_package",number:1,type:9,label:1},{name:"java_outer_classname",number:8,type:9,label:1},{name:"java_multiple_files",number:10,type:8,label:1,defaultValue:"false"},{name:"java_generate_equals_and_hash",number:20,type:8,label:1,options:{deprecated:!0}},{name:"java_string_check_utf8",number:27,type:8,label:1,defaultValue:"false"},{name:"optimize_for",number:9,type:14,label:1,typeName:".google.protobuf.FileOptions.OptimizeMode",defaultValue:"SPEED"},{name:"go_package",number:11,type:9,label:1},{name:"cc_generic_services",number:16,type:8,label:1,defaultValue:"false"},{name:"java_generic_services",number:17,type:8,label:1,defaultValue:"false"},{name:"py_generic_services",number:18,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:23,type:8,label:1,defaultValue:"false"},{name:"cc_enable_arenas",number:31,type:8,label:1,defaultValue:"true"},{name:"objc_class_prefix",number:36,type:9,label:1},{name:"csharp_namespace",number:37,type:9,label:1},{name:"swift_prefix",number:39,type:9,label:1},{name:"php_class_prefix",number:40,type:9,label:1},{name:"php_namespace",number:41,type:9,label:1},{name:"php_metadata_namespace",number:44,type:9,label:1},{name:"ruby_package",number:45,type:9,label:1},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"OptimizeMode",value:[{name:"SPEED",number:1},{name:"CODE_SIZE",number:2},{name:"LITE_RUNTIME",number:3}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"MessageOptions",field:[{name:"message_set_wire_format",number:1,type:8,label:1,defaultValue:"false"},{name:"no_standard_descriptor_accessor",number:2,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"map_entry",number:7,type:8,label:1},{name:"deprecated_legacy_json_field_conflicts",number:11,type:8,label:1,options:{deprecated:!0}},{name:"features",number:12,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldOptions",field:[{name:"ctype",number:1,type:14,label:1,typeName:".google.protobuf.FieldOptions.CType",defaultValue:"STRING"},{name:"packed",number:2,type:8,label:1},{name:"jstype",number:6,type:14,label:1,typeName:".google.protobuf.FieldOptions.JSType",defaultValue:"JS_NORMAL"},{name:"lazy",number:5,type:8,label:1,defaultValue:"false"},{name:"unverified_lazy",number:15,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"weak",number:10,type:8,label:1,defaultValue:"false"},{name:"debug_redact",number:16,type:8,label:1,defaultValue:"false"},{name:"retention",number:17,type:14,label:1,typeName:".google.protobuf.FieldOptions.OptionRetention"},{name:"targets",number:19,type:14,label:3,typeName:".google.protobuf.FieldOptions.OptionTargetType"},{name:"edition_defaults",number:20,type:11,label:3,typeName:".google.protobuf.FieldOptions.EditionDefault"},{name:"features",number:21,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"feature_support",number:22,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],nestedType:[{name:"EditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"value",number:2,type:9,label:1}]},{name:"FeatureSupport",field:[{name:"edition_introduced",number:1,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"edition_deprecated",number:2,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"deprecation_warning",number:3,type:9,label:1},{name:"edition_removed",number:4,type:14,label:1,typeName:".google.protobuf.Edition"}]}],enumType:[{name:"CType",value:[{name:"STRING",number:0},{name:"CORD",number:1},{name:"STRING_PIECE",number:2}]},{name:"JSType",value:[{name:"JS_NORMAL",number:0},{name:"JS_STRING",number:1},{name:"JS_NUMBER",number:2}]},{name:"OptionRetention",value:[{name:"RETENTION_UNKNOWN",number:0},{name:"RETENTION_RUNTIME",number:1},{name:"RETENTION_SOURCE",number:2}]},{name:"OptionTargetType",value:[{name:"TARGET_TYPE_UNKNOWN",number:0},{name:"TARGET_TYPE_FILE",number:1},{name:"TARGET_TYPE_EXTENSION_RANGE",number:2},{name:"TARGET_TYPE_MESSAGE",number:3},{name:"TARGET_TYPE_FIELD",number:4},{name:"TARGET_TYPE_ONEOF",number:5},{name:"TARGET_TYPE_ENUM",number:6},{name:"TARGET_TYPE_ENUM_ENTRY",number:7},{name:"TARGET_TYPE_SERVICE",number:8},{name:"TARGET_TYPE_METHOD",number:9}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"OneofOptions",field:[{name:"features",number:1,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumOptions",field:[{name:"allow_alias",number:2,type:8,label:1},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"deprecated_legacy_json_field_conflicts",number:6,type:8,label:1,options:{deprecated:!0}},{name:"features",number:7,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumValueOptions",field:[{name:"deprecated",number:1,type:8,label:1,defaultValue:"false"},{name:"features",number:2,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"debug_redact",number:3,type:8,label:1,defaultValue:"false"},{name:"feature_support",number:4,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"ServiceOptions",field:[{name:"features",number:34,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"MethodOptions",field:[{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"idempotency_level",number:34,type:14,label:1,typeName:".google.protobuf.MethodOptions.IdempotencyLevel",defaultValue:"IDEMPOTENCY_UNKNOWN"},{name:"features",number:35,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"IdempotencyLevel",value:[{name:"IDEMPOTENCY_UNKNOWN",number:0},{name:"NO_SIDE_EFFECTS",number:1},{name:"IDEMPOTENT",number:2}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"UninterpretedOption",field:[{name:"name",number:2,type:11,label:3,typeName:".google.protobuf.UninterpretedOption.NamePart"},{name:"identifier_value",number:3,type:9,label:1},{name:"positive_int_value",number:4,type:4,label:1},{name:"negative_int_value",number:5,type:3,label:1},{name:"double_value",number:6,type:1,label:1},{name:"string_value",number:7,type:12,label:1},{name:"aggregate_value",number:8,type:9,label:1}],nestedType:[{name:"NamePart",field:[{name:"name_part",number:1,type:9,label:2},{name:"is_extension",number:2,type:8,label:2}]}]},{name:"FeatureSet",field:[{name:"field_presence",number:1,type:14,label:1,typeName:".google.protobuf.FeatureSet.FieldPresence",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPLICIT",edition:900},{value:"IMPLICIT",edition:999},{value:"EXPLICIT",edition:1e3}]}},{name:"enum_type",number:2,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnumType",options:{retention:1,targets:[6,1],editionDefaults:[{value:"CLOSED",edition:900},{value:"OPEN",edition:999}]}},{name:"repeated_field_encoding",number:3,type:14,label:1,typeName:".google.protobuf.FeatureSet.RepeatedFieldEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPANDED",edition:900},{value:"PACKED",edition:999}]}},{name:"utf8_validation",number:4,type:14,label:1,typeName:".google.protobuf.FeatureSet.Utf8Validation",options:{retention:1,targets:[4,1],editionDefaults:[{value:"NONE",edition:900},{value:"VERIFY",edition:999}]}},{name:"message_encoding",number:5,type:14,label:1,typeName:".google.protobuf.FeatureSet.MessageEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"LENGTH_PREFIXED",edition:900}]}},{name:"json_format",number:6,type:14,label:1,typeName:".google.protobuf.FeatureSet.JsonFormat",options:{retention:1,targets:[3,6,1],editionDefaults:[{value:"LEGACY_BEST_EFFORT",edition:900},{value:"ALLOW",edition:999}]}}],enumType:[{name:"FieldPresence",value:[{name:"FIELD_PRESENCE_UNKNOWN",number:0},{name:"EXPLICIT",number:1},{name:"IMPLICIT",number:2},{name:"LEGACY_REQUIRED",number:3}]},{name:"EnumType",value:[{name:"ENUM_TYPE_UNKNOWN",number:0},{name:"OPEN",number:1},{name:"CLOSED",number:2}]},{name:"RepeatedFieldEncoding",value:[{name:"REPEATED_FIELD_ENCODING_UNKNOWN",number:0},{name:"PACKED",number:1},{name:"EXPANDED",number:2}]},{name:"Utf8Validation",value:[{name:"UTF8_VALIDATION_UNKNOWN",number:0},{name:"VERIFY",number:2},{name:"NONE",number:3}]},{name:"MessageEncoding",value:[{name:"MESSAGE_ENCODING_UNKNOWN",number:0},{name:"LENGTH_PREFIXED",number:1},{name:"DELIMITED",number:2}]},{name:"JsonFormat",value:[{name:"JSON_FORMAT_UNKNOWN",number:0},{name:"ALLOW",number:1},{name:"LEGACY_BEST_EFFORT",number:2}]}],extensionRange:[{start:1e3,end:9995},{start:9995,end:1e4},{start:1e4,end:10001}]},{name:"FeatureSetDefaults",field:[{name:"defaults",number:1,type:11,label:3,typeName:".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"},{name:"minimum_edition",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"maximum_edition",number:5,type:14,label:1,typeName:".google.protobuf.Edition"}],nestedType:[{name:"FeatureSetEditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"overridable_features",number:4,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"fixed_features",number:5,type:11,label:1,typeName:".google.protobuf.FeatureSet"}]}]},{name:"SourceCodeInfo",field:[{name:"location",number:1,type:11,label:3,typeName:".google.protobuf.SourceCodeInfo.Location"}],nestedType:[{name:"Location",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"span",number:2,type:5,label:3,options:{packed:!0}},{name:"leading_comments",number:3,type:9,label:1},{name:"trailing_comments",number:4,type:9,label:1},{name:"leading_detached_comments",number:6,type:9,label:3}]}]},{name:"GeneratedCodeInfo",field:[{name:"annotation",number:1,type:11,label:3,typeName:".google.protobuf.GeneratedCodeInfo.Annotation"}],nestedType:[{name:"Annotation",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"source_file",number:2,type:9,label:1},{name:"begin",number:3,type:5,label:1},{name:"end",number:4,type:5,label:1},{name:"semantic",number:5,type:14,label:1,typeName:".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"}],enumType:[{name:"Semantic",value:[{name:"NONE",number:0},{name:"SET",number:1},{name:"ALIAS",number:2}]}]}]}],enumType:[{name:"Edition",value:[{name:"EDITION_UNKNOWN",number:0},{name:"EDITION_LEGACY",number:900},{name:"EDITION_PROTO2",number:998},{name:"EDITION_PROTO3",number:999},{name:"EDITION_2023",number:1e3},{name:"EDITION_2024",number:1001},{name:"EDITION_1_TEST_ONLY",number:1},{name:"EDITION_2_TEST_ONLY",number:2},{name:"EDITION_99997_TEST_ONLY",number:99997},{name:"EDITION_99998_TEST_ONLY",number:99998},{name:"EDITION_99999_TEST_ONLY",number:99999},{name:"EDITION_MAX",number:2147483647}]}]});var Qt=J(T,1);var Wt;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(Wt||(Wt={}));var xt;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.GROUP=10]="GROUP",e[e.MESSAGE=11]="MESSAGE",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.ENUM=14]="ENUM",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(xt||(xt={}));var Rt;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(Rt||(Rt={}));var Ft;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})(Ft||(Ft={}));var Et;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Et||(Et={}));var Yt;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(Yt||(Yt={}));var Nt;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(Nt||(Nt={}));var Ht;(function(e){e[e.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",e[e.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",e[e.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",e[e.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",e[e.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",e[e.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",e[e.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",e[e.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",e[e.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",e[e.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(Ht||(Ht={}));var Mt;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(Mt||(Mt={}));var zt;(function(e){e[e.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",e[e.EXPLICIT=1]="EXPLICIT",e[e.IMPLICIT=2]="IMPLICIT",e[e.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(zt||(zt={}));var Kt;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(Kt||(Kt={}));var Lt;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(Lt||(Lt={}));var wt;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(wt||(wt={}));var vt;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(vt||(vt={}));var Ut;(function(e){e[e.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",e[e.ALLOW=1]="ALLOW",e[e.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(Ut||(Ut={}));var kt;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(kt||(kt={}));var Dt;(function(e){e[e.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",e[e.EDITION_LEGACY=900]="EDITION_LEGACY",e[e.EDITION_PROTO2=998]="EDITION_PROTO2",e[e.EDITION_PROTO3=999]="EDITION_PROTO3",e[e.EDITION_2023=1e3]="EDITION_2023",e[e.EDITION_2024=1001]="EDITION_2024",e[e.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",e[e.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",e[e.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",e[e.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",e[e.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",e[e.EDITION_MAX=2147483647]="EDITION_MAX"})(Dt||(Dt={}));var Tt={readUnknownFields:!0};function ws(e){return e?Object.assign(Object.assign({},Tt),e):Tt}function Re(e,n,t){let o=X(e,void 0,!1);return Pt(o,new Q(n),ws(t),!1,n.byteLength),o.message}function Pt(e,n,t,o,s){var a;let i=o?n.len:n.pos+s,r,l,d=(a=e.getUnknown())!==null&&a!==void 0?a:[];for(;n.pos<i&&([r,l]=n.tag(),!(o&&l==f.EndGroup));){let u=e.findNumber(r);if(!u){let I=n.skip(l,r);t.readUnknownFields&&d.push({no:r,wireType:l,data:I});continue}Vn(e,n,u,l,t)}if(o&&(l!=f.EndGroup||r!==s))throw new Error("invalid end group tag");d.length>0&&e.setUnknown(d)}function Vn(e,n,t,o,s){switch(t.fieldKind){case"scalar":e.set(t,$(n,t.scalar));break;case"enum":e.set(t,$(n,c.INT32));break;case"message":e.set(t,Cn(n,s,t,e.get(t)));break;case"list":Us(n,o,e.get(t),s);break;case"map":vs(n,e.get(t),s);break}}function vs(e,n,t){let o=n.field(),s,a,i=e.pos+e.uint32();for(;e.pos<i;){let[r]=e.tag();switch(r){case 1:s=$(e,o.mapKey);break;case 2:switch(o.mapKind){case"scalar":a=$(e,o.scalar);break;case"enum":a=e.int32();break;case"message":a=Cn(e,t,o);break}break}}if(s===void 0&&(s=F(o.mapKey,!1)),a===void 0)switch(o.mapKind){case"scalar":a=F(o.scalar,!1);break;case"enum":a=o.enum.values[0].number;break;case"message":a=X(o.message,void 0,!1);break}n.set(s,a)}function Us(e,n,t,o){var s;let a=t.field();if(a.listKind==="message"){t.add(Cn(e,o,a));return}let i=(s=a.scalar)!==null&&s!==void 0?s:c.INT32;if(!(n==f.LengthDelimited&&i!=c.STRING&&i!=c.BYTES)){t.add($(e,i));return}let l=e.uint32()+e.pos;for(;e.pos<l;)t.add($(e,i))}function Cn(e,n,t,o){let s=t.delimitedEncoding,a=o??X(t.message,void 0,!1);return Pt(a,e,n,s,s?t.number:e.uint32()),a}function $(e,n){switch(n){case c.STRING:return e.string();case c.BOOL:return e.bool();case c.DOUBLE:return e.double();case c.FLOAT:return e.float();case c.INT32:return e.int32();case c.INT64:return e.int64();case c.UINT64:return e.uint64();case c.FIXED64:return e.fixed64();case c.BYTES:return e.bytes();case c.FIXED32:return e.fixed32();case c.SFIXED32:return e.sfixed32();case c.SFIXED64:return e.sfixed64();case c.SINT64:return e.sint64();case c.UINT32:return e.uint32();case c.SINT32:return e.sint32()}}function V(e,n){var t;let o=Re(Qt,Se(e));return o.messageType.forEach(le),o.dependency=(t=n?.map(a=>a.proto.name))!==null&&t!==void 0?t:[],We(o,a=>n?.find(i=>i.proto.name===a)).getFile(o.name)}var _t=V("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");var ks=V("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Ot=J(ks,0);var Ds=3,jt={writeUnknownFields:!0};function Qs(e){return e?Object.assign(Object.assign({},jt),e):jt}function $t(e,n,t){return Fe(new P,Qs(t),X(e,n)).finish()}function Fe(e,n,t){var o;for(let s of t.sortedFields){if(!t.isSet(s)){if(s.presence==Ds)throw new Error(`cannot encode field ${t.desc.typeName}.${s.name} to binary: required field not set`);continue}Xn(e,n,t,s)}if(n.writeUnknownFields)for(let{no:s,wireType:a,data:i}of(o=t.getUnknown())!==null&&o!==void 0?o:[])e.tag(s,a).raw(i);return e}function Xn(e,n,t,o){var s;switch(o.fieldKind){case"scalar":case"enum":Ee(e,(s=o.scalar)!==null&&s!==void 0?s:c.INT32,o.number,t.get(o));break;case"list":Ts(e,n,o,t.get(o));break;case"message":qt(e,n,o,t.get(o));break;case"map":for(let[a,i]of t.get(o))Ps(e,n,o,a,i);break}}function Ee(e,n,t,o){eo(e.tag(t,_s(n)),n,o)}function qt(e,n,t,o){t.delimitedEncoding?Fe(e.tag(t.number,f.StartGroup),n,o).tag(t.number,f.EndGroup):Fe(e.tag(t.number,f.LengthDelimited).fork(),n,o).join()}function Ts(e,n,t,o){var s;if(t.listKind=="message"){for(let i of o)qt(e,n,t,i);return}let a=(s=t.scalar)!==null&&s!==void 0?s:c.INT32;if(t.packed){if(!o.size)return;e.tag(t.number,f.LengthDelimited).fork();for(let i of o)eo(e,a,i);e.join();return}for(let i of o)Ee(e,a,t.number,i)}function Ps(e,n,t,o,s){var a;switch(e.tag(t.number,f.LengthDelimited).fork(),Ee(e,t.mapKey,1,o),t.mapKind){case"scalar":case"enum":Ee(e,(a=t.scalar)!==null&&a!==void 0?a:c.INT32,2,s);break;case"message":Fe(e.tag(2,f.LengthDelimited).fork(),n,s).join();break}e.join()}function eo(e,n,t){switch(n){case c.STRING:e.string(t);break;case c.BOOL:e.bool(t);break;case c.DOUBLE:e.double(t);break;case c.FLOAT:e.float(t);break;case c.INT32:e.int32(t);break;case c.INT64:e.int64(t);break;case c.UINT64:e.uint64(t);break;case c.FIXED64:e.fixed64(t);break;case c.BYTES:e.bytes(t);break;case c.FIXED32:e.fixed32(t);break;case c.SFIXED32:e.sfixed32(t);break;case c.SFIXED64:e.sfixed64(t);break;case c.SINT64:e.sint64(t);break;case c.UINT32:e.uint32(t);break;case c.SINT32:e.sint32(t);break}}function _s(e){switch(e){case c.BYTES:case c.STRING:return f.LengthDelimited;case c.DOUBLE:case c.FIXED64:case c.SFIXED64:return f.Bit64;case c.FIXED32:case c.SFIXED32:case c.FLOAT:return f.Bit32;default:return f.Varint}}function no(e,n,t){let o=!1;return t||(t=B(Ot),o=!0),t.value=$t(e,n),t.typeUrl=js(n.$typeName),o?t:void 0}function Os(e,n){if(e.typeUrl==="")return!1;let t=typeof n=="string"?n:n.typeName,o=oo(e.typeUrl);return t===o}function to(e,n){if(e.typeUrl==="")return;let t=n.kind=="message"?n:n.getMessage(oo(e.typeUrl));if(!(!t||!Os(e,t)))return Re(t,e.value)}function js(e){return`type.googleapis.com/${e}`}function oo(e){let n=e.lastIndexOf("/"),t=n>=0?e.substring(n+1):e;if(!t.length)throw new Error(`invalid type url: ${e}`);return t}var Ye=V("Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");var Sn=V("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),so=J(Sn,0),Bn=J(Sn,1),ao=J(Sn,2),Ne;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(Ne||(Ne={}));function io(e,n){co(n,e);let t=$s(e.$unknown,n),[o,s,a]=q(n);for(let i of t)Vn(o,new Q(i.data),s,i.wireType,{readUnknownFields:!1});return a()}function ro(e,n,t){var o;co(n,e);let s=((o=e.$unknown)!==null&&o!==void 0?o:[]).filter(d=>d.no!==n.number),[a,i]=q(n,t),r=new P;Xn(r,{writeUnknownFields:!1},a,i);let l=new Q(r.finish());for(;l.pos<l.len;){let[d,u]=l.tag(),I=l.skip(u,d);s.push({no:d,wireType:u,data:I})}e.$unknown=s}function $s(e,n){if(e===void 0)return[];if(n.fieldKind==="enum"||n.fieldKind==="scalar"){for(let t=e.length-1;t>=0;--t)if(e[t].no==n.number)return[e[t]];return[]}return e.filter(t=>t.no===n.number)}function q(e,n){let t=e.typeName,o=Object.assign(Object.assign({},e),{kind:"field",parent:e.extendee,localName:t}),s=Object.assign(Object.assign({},e.extendee),{fields:[o],members:[o],oneofs:[]}),a=B(s,n!==void 0?{[t]:n}:void 0);return[X(s,a),o,()=>{let i=a[t];if(i===void 0){let r=e.message;return M(r)?F(r.fields[0].scalar,r.fields[0].longAsString):B(r)}return i}]}function co(e,n){if(e.extendee.typeName!=n.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var qs=3,ea=2,lo={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function na(e){return e?Object.assign(Object.assign({},lo),e):lo}function Jn(e,n,t){return ue(X(e,n),na(t))}function He(e,n,t){var o;let s=Jn(e,n,t);return JSON.stringify(s,null,(o=t?.prettySpaces)!==null&&o!==void 0?o:0)}function ue(e,n){var t;let o=aa(e,n);if(o!==void 0)return o;let s={};for(let a of e.sortedFields){if(!e.isSet(a)){if(a.presence==qs)throw new Error(`cannot encode field ${e.desc.typeName}.${a.name} to JSON: required field not set`);if(!n.alwaysEmitImplicit||a.presence!==ea)continue}let i=uo(a,e.get(a),n);i!==void 0&&(s[sa(a,n)]=i)}if(n.registry){let a=new Set;for(let i of(t=e.getUnknown())!==null&&t!==void 0?t:[]){if(a.has(i.no))continue;let r=n.registry.getExtensionFor(e.desc,i.no);if(!r)continue;let l=io(e.message,r),[d,u]=q(r,l),I=uo(u,d.get(u),n);I!==void 0&&(s[r.jsonName]=I)}}return s}function uo(e,n,t){switch(e.fieldKind){case"scalar":return Me(e,n);case"message":return ue(n,t);case"enum":return Wn(e.enum,n,t.enumAsInteger);case"list":return oa(n,t);case"map":return ta(n,t)}}function ta(e,n){let t=e.field(),o={};switch(t.mapKind){case"scalar":for(let[s,a]of e)o[s]=Me(t,a);break;case"message":for(let[s,a]of e)o[s]=ue(a,n);break;case"enum":for(let[s,a]of e)o[s]=Wn(t.enum,a,n.enumAsInteger);break}return n.alwaysEmitImplicit||e.size>0?o:void 0}function oa(e,n){let t=e.field(),o=[];switch(t.listKind){case"scalar":for(let s of e)o.push(Me(t,s));break;case"enum":for(let s of e)o.push(Wn(t.enum,s,n.enumAsInteger));break;case"message":for(let s of e)o.push(ue(s,n));break}return n.alwaysEmitImplicit||o.length>0?o:void 0}function Wn(e,n,t){var o;if(typeof n!="number")throw new Error(`cannot encode ${e} to JSON: expected number, got ${A(n)}`);if(e.typeName=="google.protobuf.NullValue")return null;if(t)return n;let s=e.value[n];return(o=s?.name)!==null&&o!==void 0?o:n}function Me(e,n){var t,o,s,a,i,r;switch(e.scalar){case c.INT32:case c.SFIXED32:case c.SINT32:case c.FIXED32:case c.UINT32:if(typeof n!="number")throw new Error(`cannot encode ${e} to JSON: ${(t=K(e,n))===null||t===void 0?void 0:t.message}`);return n;case c.FLOAT:case c.DOUBLE:if(typeof n!="number")throw new Error(`cannot encode ${e} to JSON: ${(o=K(e,n))===null||o===void 0?void 0:o.message}`);return isNaN(n)?"NaN":n===Number.POSITIVE_INFINITY?"Infinity":n===Number.NEGATIVE_INFINITY?"-Infinity":n;case c.STRING:if(typeof n!="string")throw new Error(`cannot encode ${e} to JSON: ${(s=K(e,n))===null||s===void 0?void 0:s.message}`);return n;case c.BOOL:if(typeof n!="boolean")throw new Error(`cannot encode ${e} to JSON: ${(a=K(e,n))===null||a===void 0?void 0:a.message}`);return n;case c.UINT64:case c.FIXED64:case c.INT64:case c.SFIXED64:case c.SINT64:if(typeof n!="bigint"&&typeof n!="string")throw new Error(`cannot encode ${e} to JSON: ${(i=K(e,n))===null||i===void 0?void 0:i.message}`);return n.toString();case c.BYTES:if(n instanceof Uint8Array)return pt(n);throw new Error(`cannot encode ${e} to JSON: ${(r=K(e,n))===null||r===void 0?void 0:r.message}`)}}function sa(e,n){return n.useProtoFieldName?e.name:e.jsonName}function aa(e,n){if(e.desc.typeName.startsWith("google.protobuf."))switch(e.desc.typeName){case"google.protobuf.Any":return ia(e.message,n);case"google.protobuf.Timestamp":return la(e.message);case"google.protobuf.Duration":return ra(e.message);case"google.protobuf.FieldMask":return ca(e.message);case"google.protobuf.Struct":return go(e.message);case"google.protobuf.Value":return xn(e.message);case"google.protobuf.ListValue":return mo(e.message);default:if(M(e.desc)){let t=e.desc.fields[0];return Me(t,e.get(t))}return}}function ia(e,n){if(e.typeUrl==="")return{};let{registry:t}=n,o,s;if(t&&(o=to(e,t),o&&(s=t.getMessage(o.$typeName))),!s||!o)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);let a=ue(X(s,o),n);return(s.typeName.startsWith("google.protobuf.")||a===null||Array.isArray(a)||typeof a!="object")&&(a={value:a}),a["@type"]=e.typeUrl,a}function ra(e){if(Number(e.seconds)>315576e6||Number(e.seconds)<-315576e6)throw new Error(`cannot encode message ${e.$typeName} to JSON: value out of range`);let n=e.seconds.toString();if(e.nanos!==0){let t=Math.abs(e.nanos).toString();t="0".repeat(9-t.length)+t,t.substring(3)==="000000"?t=t.substring(0,3):t.substring(6)==="000"&&(t=t.substring(0,6)),n+="."+t,e.nanos<0&&Number(e.seconds)==0&&(n="-"+n)}return n+"s"}function ca(e){return e.paths.map(n=>{if(n.match(/_[0-9]?_/g)||n.match(/[A-Z]/g))throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "`+n+'" is irreversible');return U(n)}).join(",")}function go(e){let n={};for(let[t,o]of Object.entries(e.fields))n[t]=xn(o);return n}function xn(e){switch(e.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(e.kind.value))throw new Error(`${e.$typeName} cannot be NaN or Infinity`);return e.kind.value;case"boolValue":return e.kind.value;case"stringValue":return e.kind.value;case"structValue":return go(e.kind.value);case"listValue":return mo(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function mo(e){return e.values.map(xn)}function la(e){let n=Number(e.seconds)*1e3;if(n<Date.parse("0001-01-01T00:00:00Z")||n>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot encode message ${e.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(e.nanos<0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be negative`);let t="Z";if(e.nanos>0){let o=(e.nanos+1e9).toString().substring(1);o.substring(3)==="000000"?t="."+o.substring(0,3)+"Z":o.substring(6)==="000"?t="."+o.substring(0,6)+"Z":t="."+o+"Z"}return new Date(n).toISOString().replace(".000Z",t)}var bo={ignoreUnknownFields:!1};function da(e){return e?Object.assign(Object.assign({},bo),e):bo}function Io(e,n,t){return Rn(e,ya(n,e.typeName),t)}function Rn(e,n,t){let o=X(e);try{ee(o,n,da(t))}catch(s){throw Tn(s)?new Error(`cannot decode ${s.field()} from JSON: ${s.message}`,{cause:s}):s}return o.message}function ee(e,n,t){var o;if(Ga(e,n,t))return;if(n==null||Array.isArray(n)||typeof n!="object")throw new Error(`cannot decode ${e.desc} from JSON: ${A(n)}`);let s=new Map,a=new Map;for(let i of e.desc.fields)a.set(i.name,i).set(i.jsonName,i);for(let[i,r]of Object.entries(n)){let l=a.get(i);if(l){if(l.oneof){if(r===null&&l.fieldKind=="scalar")continue;let d=s.get(l.oneof);if(d!==void 0)throw new C(l.oneof,`oneof set multiple times by ${d.name} and ${l.name}`);s.set(l.oneof,l)}po(e,l,r,t)}else{let d;if(i.startsWith("[")&&i.endsWith("]")&&(d=(o=t.registry)===null||o===void 0?void 0:o.getExtension(i.substring(1,i.length-1)))&&d.extendee.typeName===e.desc.typeName){let[u,I,W]=q(d);po(u,I,r,t),ro(e.message,d,W())}if(!d&&!t.ignoreUnknownFields)throw new Error(`cannot decode ${e.desc} from JSON: key "${i}" is unknown`)}}}function po(e,n,t,o){switch(n.fieldKind){case"scalar":pa(e,n,t);break;case"enum":ba(e,n,t,o);break;case"message":ma(e,n,t,o);break;case"list":ga(e.get(n),t,o);break;case"map":ua(e.get(n),t,o);break}}function ua(e,n,t){if(n===null)return;let o=e.field();if(typeof n!="object"||Array.isArray(n))throw new C(o,"expected object, got "+A(n));for(let[s,a]of Object.entries(n)){if(a===null)throw new C(o,"map value must not be null");let i;switch(o.mapKind){case"message":let l=X(o.message);ee(l,a,t),i=l;break;case"enum":if(i=Fn(o.enum,a,t.ignoreUnknownFields,!0),i===ze)return;break;case"scalar":i=Le(o,a,!0);break}let r=Ia(o.mapKey,s);e.set(r,i)}}function ga(e,n,t){if(n===null)return;let o=e.field();if(!Array.isArray(n))throw new C(o,"expected Array, got "+A(n));for(let s of n){if(s===null)throw new C(o,"list item must not be null");switch(o.listKind){case"message":let a=X(o.message);ee(a,s,t),e.add(a);break;case"enum":let i=Fn(o.enum,s,t.ignoreUnknownFields,!0);i!==ze&&e.add(i);break;case"scalar":e.add(Le(o,s,!0));break}}}function ma(e,n,t,o){if(t===null&&n.message.typeName!="google.protobuf.Value"){e.clear(n);return}let s=e.isSet(n)?e.get(n):X(n.message);ee(s,t,o),e.set(n,s)}function ba(e,n,t,o){let s=Fn(n.enum,t,o.ignoreUnknownFields,!1);s===Ke?e.clear(n):s!==ze&&e.set(n,s)}function pa(e,n,t){let o=Le(n,t,!1);o===Ke?e.clear(n):e.set(n,o)}var ze=Symbol();function Fn(e,n,t,o){if(n===null)return e.typeName=="google.protobuf.NullValue"?0:o?e.values[0].number:Ke;switch(typeof n){case"number":if(Number.isInteger(n))return n;break;case"string":let s=e.values.find(a=>a.name===n);if(s!==void 0)return s.number;if(t)return ze;break}throw new Error(`cannot decode ${e} from JSON: ${A(n)}`)}var Ke=Symbol();function Le(e,n,t){if(n===null)return t?F(e.scalar,!1):Ke;switch(e.scalar){case c.DOUBLE:case c.FLOAT:if(n==="NaN")return NaN;if(n==="Infinity")return Number.POSITIVE_INFINITY;if(n==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof n=="number"){if(isNaN(n))throw new C(e,"unexpected NaN number");if(!isFinite(n))throw new C(e,"unexpected infinite number");break}if(typeof n=="string"){if(n===""||n.trim().length!==n.length)break;let o=Number(n);if(!isFinite(o))break;return o}break;case c.INT32:case c.FIXED32:case c.SFIXED32:case c.SINT32:case c.UINT32:return yo(n);case c.BYTES:if(typeof n=="string"){if(n==="")return new Uint8Array(0);try{return Se(n)}catch(o){let s=o instanceof Error?o.message:String(o);throw new C(e,s)}}break}return n}function Ia(e,n){switch(e){case c.BOOL:switch(n){case"true":return!0;case"false":return!1}return n;case c.INT32:case c.FIXED32:case c.UINT32:case c.SFIXED32:case c.SINT32:return yo(n);default:return n}}function yo(e){if(typeof e=="string"){if(e===""||e.trim().length!==e.length)return e;let n=Number(e);return Number.isNaN(n)?e:n}return e}function ya(e,n){try{return JSON.parse(e)}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`cannot decode message ${n} from JSON: ${o}`,{cause:t})}}function Ga(e,n,t){if(!e.desc.typeName.startsWith("google.protobuf."))return!1;switch(e.desc.typeName){case"google.protobuf.Any":return ha(e.message,n,t),!0;case"google.protobuf.Timestamp":return fa(e.message,n),!0;case"google.protobuf.Duration":return Za(e.message,n),!0;case"google.protobuf.FieldMask":return Aa(e.message,n),!0;case"google.protobuf.Struct":return Go(e.message,n),!0;case"google.protobuf.Value":return En(e.message,n),!0;case"google.protobuf.ListValue":return ho(e.message,n),!0;default:if(M(e.desc)){let o=e.desc.fields[0];return n===null?e.clear(o):e.set(o,Le(o,n,!0)),!0}return!1}}function ha(e,n,t){var o;if(n===null||Array.isArray(n)||typeof n!="object")throw new Error(`cannot decode message ${e.$typeName} from JSON: expected object but got ${A(n)}`);if(Object.keys(n).length==0)return;let s=n["@type"];if(typeof s!="string"||s=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);let a=s.includes("/")?s.substring(s.lastIndexOf("/")+1):s;if(!a.length)throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is invalid`);let i=(o=t.registry)===null||o===void 0?void 0:o.getMessage(a);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${s} is not in the type registry`);let r=X(i);if(a.startsWith("google.protobuf.")&&Object.prototype.hasOwnProperty.call(n,"value")){let l=n.value;ee(r,l,t)}else{let l=Object.assign({},n);delete l["@type"],ee(r,l,t)}no(r.desc,r.message,e)}function fa(e,n){if(typeof n!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${A(n)}`);let t=n.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!t)throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);let o=Date.parse(t[1]+"-"+t[2]+"-"+t[3]+"T"+t[4]+":"+t[5]+":"+t[6]+(t[8]?t[8]:"Z"));if(Number.isNaN(o))throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);if(o<Date.parse("0001-01-01T00:00:00Z")||o>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot decode message ${e.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);e.seconds=p.parse(o/1e3),e.nanos=0,t[7]&&(e.nanos=parseInt("1"+t[7]+"0".repeat(9-t[7].length))-1e9)}function Za(e,n){if(typeof n!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${A(n)}`);let t=n.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(t===null)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${A(n)}`);let o=Number(t[1]);if(o>315576e6||o<-315576e6)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${A(n)}`);if(e.seconds=p.parse(o),typeof t[2]!="string")return;let s=t[2]+"0".repeat(9-t[2].length);e.nanos=parseInt(s),(o<0||Object.is(o,-0))&&(e.nanos=-e.nanos)}function Aa(e,n){if(typeof n!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${A(n)}`);if(n==="")return;function t(o){if(o.includes("_"))throw new Error(`cannot decode message ${e.$typeName} from JSON: path names must be lowerCamelCase`);let s=o.replace(/[A-Z]/g,a=>"_"+a.toLowerCase());return s[0]==="_"?s.substring(1):s}e.paths=n.split(",").map(t)}function Go(e,n){if(typeof n!="object"||n==null||Array.isArray(n))throw new Error(`cannot decode message ${e.$typeName} from JSON ${A(n)}`);for(let[t,o]of Object.entries(n)){let s=B(Bn);En(s,o),e.fields[t]=s}}function En(e,n){switch(typeof n){case"number":e.kind={case:"numberValue",value:n};break;case"string":e.kind={case:"stringValue",value:n};break;case"boolean":e.kind={case:"boolValue",value:n};break;case"object":if(n===null)e.kind={case:"nullValue",value:Ne.NULL_VALUE};else if(Array.isArray(n)){let t=B(ao);ho(t,n),e.kind={case:"listValue",value:t}}else{let t=B(so);Go(t,n),e.kind={case:"structValue",value:t}}break;default:throw new Error(`cannot decode message ${e.$typeName} from JSON ${A(n)}`)}return e}function ho(e,n){if(!Array.isArray(n))throw new Error(`cannot decode message ${e.$typeName} from JSON ${A(n)}`);for(let t of n){let o=B(Bn);En(o,t),e.values.push(o)}}import b from"chalk";import{program as w}from"commander";import ja from"figlet";import $a from"fs";import qa from"is-valid-hostname";import ei from"path";import ni from"semver";import ti from"update-notifier";import{confirm as Ja,input as Wa,select as Wo}from"@inquirer/prompts";import zn from"chalk";import xa from"fs";function fo(e,n,...t){if(t.length>0)throw new Error;return e.services[n]}var Ao=V("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI9CgpDb25zdHJhaW50EgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSJNChJNZXNzYWdlQ29uc3RyYWludHMSEAoIZGlzYWJsZWQYASABKAgSJQoDY2VsGAMgAygLMhguYnVmLnZhbGlkYXRlLkNvbnN0cmFpbnQiJAoQT25lb2ZDb25zdHJhaW50cxIQCghyZXF1aXJlZBgBIAEoCCKoCAoQRmllbGRDb25zdHJhaW50cxIlCgNjZWwYFyADKAsyGC5idWYudmFsaWRhdGUuQ29uc3RyYWludBIQCghyZXF1aXJlZBgZIAEoCBIkCgZpZ25vcmUYGyABKA4yFC5idWYudmFsaWRhdGUuSWdub3JlEikKBWZsb2F0GAEgASgLMhguYnVmLnZhbGlkYXRlLkZsb2F0UnVsZXNIABIrCgZkb3VibGUYAiABKAsyGS5idWYudmFsaWRhdGUuRG91YmxlUnVsZXNIABIpCgVpbnQzMhgDIAEoCzIYLmJ1Zi52YWxpZGF0ZS5JbnQzMlJ1bGVzSAASKQoFaW50NjQYBCABKAsyGC5idWYudmFsaWRhdGUuSW50NjRSdWxlc0gAEisKBnVpbnQzMhgFIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50MzJSdWxlc0gAEisKBnVpbnQ2NBgGIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50NjRSdWxlc0gAEisKBnNpbnQzMhgHIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50MzJSdWxlc0gAEisKBnNpbnQ2NBgIIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50NjRSdWxlc0gAEi0KB2ZpeGVkMzIYCSABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQzMlJ1bGVzSAASLQoHZml4ZWQ2NBgKIAEoCzIaLmJ1Zi52YWxpZGF0ZS5GaXhlZDY0UnVsZXNIABIvCghzZml4ZWQzMhgLIAEoCzIbLmJ1Zi52YWxpZGF0ZS5TRml4ZWQzMlJ1bGVzSAASLwoIc2ZpeGVkNjQYDCABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkNjRSdWxlc0gAEicKBGJvb2wYDSABKAsyFy5idWYudmFsaWRhdGUuQm9vbFJ1bGVzSAASKwoGc3RyaW5nGA4gASgLMhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzSAASKQoFYnl0ZXMYDyABKAsyGC5idWYudmFsaWRhdGUuQnl0ZXNSdWxlc0gAEicKBGVudW0YECABKAsyFy5idWYudmFsaWRhdGUuRW51bVJ1bGVzSAASLwoIcmVwZWF0ZWQYEiABKAsyGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlc0gAEiUKA21hcBgTIAEoCzIWLmJ1Zi52YWxpZGF0ZS5NYXBSdWxlc0gAEiUKA2FueRgUIAEoCzIWLmJ1Zi52YWxpZGF0ZS5BbnlSdWxlc0gAEi8KCGR1cmF0aW9uGBUgASgLMhsuYnVmLnZhbGlkYXRlLkR1cmF0aW9uUnVsZXNIABIxCgl0aW1lc3RhbXAYFiABKAsyHC5idWYudmFsaWRhdGUuVGltZXN0YW1wUnVsZXNIAEIGCgR0eXBlIl8KFVByZWRlZmluZWRDb25zdHJhaW50cxIlCgNjZWwYASADKAsyGC5idWYudmFsaWRhdGUuQ29uc3RyYWludEoECBgQGUoECBoQG1ITc2tpcHBlZGlnbm9yZV9lbXB0eSK1FwoKRmxvYXRSdWxlcxJpCgVjb25zdBgBIAEoAkJawkhXClUKC2Zsb2F0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEp8BCgJsdBgCIAEoAkKQAcJIjAEKiQEKCGZsb2F0Lmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEq8BCgNsdGUYAyABKAJCnwHCSJsBCpgBCglmbG9hdC5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLvBwoCZ3QYBCABKAJC4AfCSNwHCo0BCghmbG9hdC5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsMBCgtmbG9hdC5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs0BChVmbG9hdC5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrTAQoMZmxvYXQuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3QEKFmZsb2F0Lmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEroICgNndGUYBSABKAJCqgjCSKYICpsBCglmbG9hdC5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0gEKDGZsb2F0Lmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3AEKFmZsb2F0Lmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuIBCg1mbG9hdC5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrsAQoXZmxvYXQuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdQoCaW4YBiADKAJCacJIZgpkCghmbG9hdC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ2CgZub3RfaW4YByADKAJCZsJIYwphCgxmbG9hdC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJ1CgZmaW5pdGUYCCABKAhCZcJIYgpgCgxmbG9hdC5maW5pdGUaUHJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ3ZhbHVlIG11c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEisKB2V4YW1wbGUYCSADKAJCGsJIFwoVCg1mbG9hdC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLHFwoLRG91YmxlUnVsZXMSagoFY29uc3QYASABKAFCW8JIWApWCgxkb3VibGUuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSoAEKAmx0GAIgASgBQpEBwkiNAQqKAQoJZG91YmxlLmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErABCgNsdGUYAyABKAFCoAHCSJwBCpkBCgpkb3VibGUubHRlGooBIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS9AcKAmd0GAQgASgBQuUHwkjhBwqOAQoJZG91YmxlLmd0GoABIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKxAEKDGRvdWJsZS5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs4BChZkb3VibGUuZ3RfbHRfZXhjbHVzaXZlGrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycK1AEKDWRvdWJsZS5ndF9sdGUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwreAQoXZG91YmxlLmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEr8ICgNndGUYBSABKAFCrwjCSKsICpwBCgpkb3VibGUuZ3RlGo0BIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCtMBCg1kb3VibGUuZ3RlX2x0GsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrdAQoXZG91YmxlLmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuMBCg5kb3VibGUuZ3RlX2x0ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK7QEKGGRvdWJsZS5ndGVfbHRlX2V4Y2x1c2l2ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ2CgJpbhgGIAMoAUJqwkhnCmUKCWRvdWJsZS5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ3CgZub3RfaW4YByADKAFCZ8JIZApiCg1kb3VibGUubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdgoGZmluaXRlGAggASgIQmbCSGMKYQoNZG91YmxlLmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSLAoHZXhhbXBsZRgJIAMoAUIbwkgYChYKDmRvdWJsZS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLnFAoKSW50MzJSdWxlcxJpCgVjb25zdBgBIAEoBUJawkhXClUKC2ludDMyLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEooBCgJsdBgCIAEoBUJ8wkh5CncKCGludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKAVCjAHCSIgBCoUBCglpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoBUKIB8JIhAcKegoIaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgFQtMHwkjPBwqIAQoJaW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnUKAmluGAYgAygFQmnCSGYKZAoIaW50MzIuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdgoGbm90X2luGAcgAygFQmbCSGMKYQoMaW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKwoHZXhhbXBsZRgIIAMoBUIawkgXChUKDWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIucUCgpJbnQ2NFJ1bGVzEmkKBWNvbnN0GAEgASgDQlrCSFcKVQoLaW50NjQuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSigEKAmx0GAIgASgDQnzCSHkKdwoIaW50NjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnAEKA2x0ZRgDIAEoA0KMAcJIiAEKhQEKCWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASlwcKAmd0GAQgASgDQogHwkiEBwp6CghpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKswEKC2ludDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq7AQoVaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwwEKDGludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKywEKFmludDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEuMHCgNndGUYBSABKANC0wfCSM8HCogBCglpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrCAQoMaW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsoBChZpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrSAQoNaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwraAQoXaW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdQoCaW4YBiADKANCacJIZgpkCghpbnQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ2CgZub3RfaW4YByADKANCZsJIYwphCgxpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAkgAygDQhrCSBcKFQoNaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i+BQKC1VJbnQzMlJ1bGVzEmoKBWNvbnN0GAEgASgNQlvCSFgKVgoMdWludDMyLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEosBCgJsdBgCIAEoDUJ9wkh6CngKCXVpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgNQo0BwkiJAQqGAQoKdWludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgNQo0HwkiJBwp7Cgl1aW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoDULYB8JI1AcKiQEKCnVpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnYKAmluGAYgAygNQmrCSGcKZQoJdWludDMyLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEncKBm5vdF9pbhgHIAMoDUJnwkhkCmIKDXVpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygNQhvCSBgKFgoOdWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIvgUCgtVSW50NjRSdWxlcxJqCgVjb25zdBgBIAEoBEJbwkhYClYKDHVpbnQ2NC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKLAQoCbHQYAiABKARCfcJIegp4Cgl1aW50NjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnQEKA2x0ZRgDIAEoBEKNAcJIiQEKhgEKCnVpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpwHCgJndBgEIAEoBEKNB8JIiQcKewoJdWludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq0AQoMdWludDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq8AQoWdWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsQBCg11aW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrMAQoXdWludDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEugHCgNndGUYBSABKARC2AfCSNQHCokBCgp1aW50NjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwwEKDXVpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKywEKF3VpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrTAQoOdWludDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2wEKGHVpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ2CgJpbhgGIAMoBEJqwkhnCmUKCXVpbnQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ3CgZub3RfaW4YByADKARCZ8JIZApiCg11aW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoBEIbwkgYChYKDnVpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiL4FAoLU0ludDMyUnVsZXMSagoFY29uc3QYASABKBFCW8JIWApWCgxzaW50MzIuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSiwEKAmx0GAIgASgRQn3CSHoKeAoJc2ludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBFCjQHCSIkBCoYBCgpzaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBFCjQfCSIkHCnsKCXNpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgRQtgHwkjUBwqJAQoKc2ludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdgoCaW4YBiADKBFCasJIZwplCglzaW50MzIuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdwoGbm90X2luGAcgAygRQmfCSGQKYgoNc2ludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBFCG8JIGAoWCg5zaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i+BQKC1NJbnQ2NFJ1bGVzEmoKBWNvbnN0GAEgASgSQlvCSFgKVgoMc2ludDY0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEosBCgJsdBgCIAEoEkJ9wkh6CngKCXNpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgSQo0BwkiJAQqGAQoKc2ludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgSQo0HwkiJBwp7CglzaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEkLYB8JI1AcKiQEKCnNpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnYKAmluGAYgAygSQmrCSGcKZQoJc2ludDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEncKBm5vdF9pbhgHIAMoEkJnwkhkCmIKDXNpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygSQhvCSBgKFgoOc2ludDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIokVCgxGaXhlZDMyUnVsZXMSawoFY29uc3QYASABKAdCXMJIWQpXCg1maXhlZDMyLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEowBCgJsdBgCIAEoB0J+wkh7CnkKCmZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoB0KOAcJIigEKhwEKC2ZpeGVkMzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKhBwoCZ3QYBCABKAdCkgfCSI4HCnwKCmZpeGVkMzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrUBCg1maXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq9AQoXZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu0HCgNndGUYBSABKAdC3QfCSNkHCooBCgtmaXhlZDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEncKAmluGAYgAygHQmvCSGgKZgoKZml4ZWQzMi5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ4CgZub3RfaW4YByADKAdCaMJIZQpjCg5maXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAdCHMJIGQoXCg9maXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIokVCgxGaXhlZDY0UnVsZXMSawoFY29uc3QYASABKAZCXMJIWQpXCg1maXhlZDY0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEowBCgJsdBgCIAEoBkJ+wkh7CnkKCmZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoBkKOAcJIigEKhwEKC2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKhBwoCZ3QYBCABKAZCkgfCSI4HCnwKCmZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrUBCg1maXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq9AQoXZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu0HCgNndGUYBSABKAZC3QfCSNkHCooBCgtmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEncKAmluGAYgAygGQmvCSGgKZgoKZml4ZWQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ4CgZub3RfaW4YByADKAZCaMJIZQpjCg5maXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAZCHMJIGQoXCg9maXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIpoVCg1TRml4ZWQzMlJ1bGVzEmwKBWNvbnN0GAEgASgPQl3CSFoKWAoOc2ZpeGVkMzIuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSjQEKAmx0GAIgASgPQn/CSHwKegoLc2ZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoD0KPAcJIiwEKiAEKDHNmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgPQpcHwkiTBwp9CgtzZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKA9C4gfCSN4HCosBCgxzZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESeAoCaW4YBiADKA9CbMJIaQpnCgtzZml4ZWQzMi5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ5CgZub3RfaW4YByADKA9CacJIZgpkCg9zZml4ZWQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygPQh3CSBoKGAoQc2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4imhUKDVNGaXhlZDY0UnVsZXMSbAoFY29uc3QYASABKBBCXcJIWgpYCg5zZml4ZWQ2NC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKNAQoCbHQYAiABKBBCf8JIfAp6CgtzZml4ZWQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgQQo8BwkiLAQqIAQoMc2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKmBwoCZ3QYBCABKBBClwfCSJMHCn0KC3NmaXhlZDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOc2ZpeGVkNjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhzZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPc2ZpeGVkNjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZc2ZpeGVkNjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES8gcKA2d0ZRgFIAEoEELiB8JI3gcKiwEKDHNmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ4CgJpbhgGIAMoEEJswkhpCmcKC3NmaXhlZDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnkKBm5vdF9pbhgHIAMoEEJpwkhmCmQKD3NmaXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKBBCHcJIGgoYChBzZml4ZWQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKsAQoJQm9vbFJ1bGVzEmgKBWNvbnN0GAEgASgIQlnCSFYKVAoKYm9vbC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIi4DYKC1N0cmluZ1J1bGVzEmwKBWNvbnN0GAEgASgJQl3CSFoKWAoMc3RyaW5nLmNvbnN0Gkh0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgYCVzYCcuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSfgoDbGVuGBMgASgEQnHCSG4KbAoKc3RyaW5nLmxlbhpedWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKZAQoHbWluX2xlbhgCIAEoBEKHAcJIgwEKgAEKDnN0cmluZy5taW5fbGVuGm51aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKXAQoHbWF4X2xlbhgDIAEoBEKFAcJIgQEKfwoOc3RyaW5nLm1heF9sZW4abXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSmwEKCWxlbl9ieXRlcxgUIAEoBEKHAcJIgwEKgAEKEHN0cmluZy5sZW5fYnl0ZXMabHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSAhPSBydWxlcy5sZW5fYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKjAQoJbWluX2J5dGVzGAQgASgEQo8BwkiLAQqIAQoQc3RyaW5nLm1pbl9ieXRlcxp0dWludChieXRlcyh0aGlzKS5zaXplKCkpIDwgcnVsZXMubWluX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSogEKCW1heF9ieXRlcxgFIAEoBEKOAcJIigEKhwEKEHN0cmluZy5tYXhfYnl0ZXMac3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9ieXRlc10pIDogJycSjQEKB3BhdHRlcm4YBiABKAlCfMJIeQp3Cg5zdHJpbmcucGF0dGVybhplIXRoaXMubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBkb2VzIG5vdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycShAEKBnByZWZpeBgHIAEoCUJ0wkhxCm8KDXN0cmluZy5wcmVmaXgaXiF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCBgJXNgJy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSggEKBnN1ZmZpeBgIIAEoCUJywkhvCm0KDXN0cmluZy5zdWZmaXgaXCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEpABCghjb250YWlucxgJIAEoCUJ+wkh7CnkKD3N0cmluZy5jb250YWlucxpmIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpgBCgxub3RfY29udGFpbnMYFyABKAlCgQHCSH4KfAoTc3RyaW5nLm5vdF9jb250YWlucxpldGhpcy5jb250YWlucyhydWxlcy5ub3RfY29udGFpbnMpID8gJ3ZhbHVlIGNvbnRhaW5zIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLm5vdF9jb250YWluc10pIDogJycSdgoCaW4YCiADKAlCasJIZwplCglzdHJpbmcuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdwoGbm90X2luGAsgAygJQmfCSGQKYgoNc3RyaW5nLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEt8BCgVlbWFpbBgMIAEoCELNAcJIyQEKYQoMc3RyaW5nLmVtYWlsEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLnAQoIaG9zdG5hbWUYDSABKAhC0gHCSM4BCmUKD3N0cmluZy5ob3N0bmFtZRIedmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLHAQoCaXAYDiABKAhCuAHCSLQBClUKCXN0cmluZy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjQYDyABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY0EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtYBCgRpcHY2GBAgASgIQsUBwkjBAQpcCgtzdHJpbmcuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK/AQoDdXJpGBEgASgIQq8BwkirAQpRCgpzdHJpbmcudXJpEhl2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEmYKB3VyaV9yZWYYEiABKAhCU8JIUApOCg5zdHJpbmcudXJpX3JlZhIZdmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVSSRohIXJ1bGVzLnVyaV9yZWYgfHwgdGhpcy5pc1VyaVJlZigpSAASkAIKB2FkZHJlc3MYFSABKAhC/AHCSPgBCoEBCg5zdHJpbmcuYWRkcmVzcxItdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKYAgoEdXVpZBgWIAEoCEKHAsJIgwIKpQEKC3N0cmluZy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS8AEKBXR1dWlkGCEgASgIQt4BwkjaAQpzCgxzdHJpbmcudHV1aWQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASlgIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvgBwkj0AQp4ChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEs8CChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQq8CwkirAgqTAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS8gEKCWlwX3ByZWZpeBgdIAEoCELcAcJI2AEKbAoQc3RyaW5nLmlwX3ByZWZpeBIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABKDAgoLaXB2NF9wcmVmaXgYHiABKAhC6wHCSOcBCnUKEnN0cmluZy5pcHY0X3ByZWZpeBIhdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjZfcHJlZml4GB8gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2Nl9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAErUCCg1ob3N0X2FuZF9wb3J0GCAgASgIQpsCwkiXAgqZAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSQXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEqgFChB3ZWxsX2tub3duX3JlZ2V4GBggASgOMhguYnVmLnZhbGlkYXRlLktub3duUmVnZXhC8QTCSO0ECvABCiNzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfbmFtZRImdmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIG5hbWUaoAFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoIWhhcyhydWxlcy5zdHJpY3QpIHx8IHJ1bGVzLnN0cmljdCA/J146P1swLTlhLXpBLVohIyQlJlwnKistLl5ffH5ceDYwXSskJyA6J15bXlx1MDAwMFx1MDAwQVx1MDAwRF0rJCcpCo0BCilzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfbmFtZV9lbXB0eRI1dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIEhUVFAgaGVhZGVyIG5hbWUaKXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMSB8fCB0aGlzICE9ICcnCucBCiRzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfdmFsdWUSJ3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciB2YWx1ZRqVAXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMiB8fCB0aGlzLm1hdGNoZXMoIWhhcyhydWxlcy5zdHJpY3QpIHx8IHJ1bGVzLnN0cmljdCA/J15bXlx1MDAwMC1cdTAwMDhcdTAwMEEtXHUwMDFGXHUwMDdGXSokJyA6J15bXlx1MDAwMFx1MDAwQVx1MDAwRF0qJCcpSAASDgoGc3RyaWN0GBkgASgIEiwKB2V4YW1wbGUYIiADKAlCG8JIGAoWCg5zdHJpbmcuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgwKCndlbGxfa25vd24ivxAKCkJ5dGVzUnVsZXMSZgoFY29uc3QYASABKAxCV8JIVApSCgtieXRlcy5jb25zdBpDdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGJlICV4Jy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxJ4CgNsZW4YDSABKARCa8JIaApmCglieXRlcy5sZW4aWXVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnEpABCgdtaW5fbGVuGAIgASgEQn/CSHwKegoNYnl0ZXMubWluX2xlbhppdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9sZW5dKSA6ICcnEogBCgdtYXhfbGVuGAMgASgEQnfCSHQKcgoNYnl0ZXMubWF4X2xlbhphdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ3ZhbHVlIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfbGVuXSkgOiAnJxKQAQoHcGF0dGVybhgEIAEoCUJ/wkh8CnoKDWJ5dGVzLnBhdHRlcm4aaSFzdHJpbmcodGhpcykubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBtdXN0IG1hdGNoIHJlZ2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAnJxKBAQoGcHJlZml4GAUgASgMQnHCSG4KbAoMYnl0ZXMucHJlZml4GlwhdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBwcmVmaXggJXgnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJxJ/CgZzdWZmaXgYBiABKAxCb8JIbApqCgxieXRlcy5zdWZmaXgaWiF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggJXgnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxKDAQoIY29udGFpbnMYByABKAxCccJIbgpsCg5ieXRlcy5jb250YWlucxpaIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gJXgnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpcBCgJpbhgIIAMoDEKKAcJIhgEKgwEKCGJ5dGVzLmluGndkeW4ocnVsZXMpWydpbiddLnNpemUoKSA+IDAgJiYgISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ2CgZub3RfaW4YCSADKAxCZsJIYwphCgxieXRlcy5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLrAQoCaXAYCiABKAhC3AHCSNgBCnQKCGJ5dGVzLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5AEKBGlwdjQYCyABKAhC0wHCSM8BCmUKCmJ5dGVzLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5QEKBGlwdjYYDCABKAhC1AHCSNABCmYKCmJ5dGVzLmlwdjYSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biKvAwoJRW51bVJ1bGVzEmgKBWNvbnN0GAEgASgFQlnCSFYKVAoKZW51bS5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxIUCgxkZWZpbmVkX29ubHkYAiABKAgSdAoCaW4YAyADKAVCaMJIZQpjCgdlbnVtLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnUKBm5vdF9pbhgEIAMoBUJlwkhiCmAKC2VudW0ubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIoEECg1SZXBlYXRlZFJ1bGVzEp4BCgltaW5faXRlbXMYASABKARCigHCSIYBCoMBChJyZXBlYXRlZC5taW5faXRlbXMabXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBhdCBsZWFzdCAlZCBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1pbl9pdGVtc10pIDogJycSogEKCW1heF9pdGVtcxgCIAEoBEKOAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJycScAoGdW5pcXVlGAMgASgIQmDCSF0KWwoPcmVwZWF0ZWQudW5pcXVlEihyZXBlYXRlZCB2YWx1ZSBtdXN0IGNvbnRhaW4gdW5pcXVlIGl0ZW1zGh4hcnVsZXMudW5pcXVlIHx8IHRoaXMudW5pcXVlKCkSLQoFaXRlbXMYBCABKAsyHi5idWYudmFsaWRhdGUuRmllbGRDb25zdHJhaW50cyoJCOgHEICAgIACIpYDCghNYXBSdWxlcxKPAQoJbWluX3BhaXJzGAEgASgEQnzCSHkKdwoNbWFwLm1pbl9wYWlycxpmdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbGVhc3QgJWQgZW50cmllcycuZm9ybWF0KFtydWxlcy5taW5fcGFpcnNdKSA6ICcnEo4BCgltYXhfcGFpcnMYAiABKARCe8JIeAp2Cg1tYXAubWF4X3BhaXJzGmV1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBtb3N0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWF4X3BhaXJzXSkgOiAnJxIsCgRrZXlzGAQgASgLMh4uYnVmLnZhbGlkYXRlLkZpZWxkQ29uc3RyYWludHMSLgoGdmFsdWVzGAUgASgLMh4uYnVmLnZhbGlkYXRlLkZpZWxkQ29uc3RyYWludHMqCQjoBxCAgICAAiImCghBbnlSdWxlcxIKCgJpbhgCIAMoCRIOCgZub3RfaW4YAyADKAki9RYKDUR1cmF0aW9uUnVsZXMShwEKBWNvbnN0GAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQl3CSFoKWAoOZHVyYXRpb24uY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSqAEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQn/CSHwKegoLZHVyYXRpb24ubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASugEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKPAcJIiwEKiAEKDGR1cmF0aW9uLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASwQcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQpcHwkiTBwp9CgtkdXJhdGlvbi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDmR1cmF0aW9uLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD2R1cmF0aW9uLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEo0ICgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25C4gfCSN4HCosBCgxkdXJhdGlvbi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPZHVyYXRpb24uZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQZHVyYXRpb24uZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESkwEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQmzCSGkKZwoLZHVyYXRpb24uaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSlAEKBm5vdF9pbhgIIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJpwkhmCmQKD2R1cmF0aW9uLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEkkKB2V4YW1wbGUYCSADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CHcJIGgoYChBkdXJhdGlvbi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiL4FwoOVGltZXN0YW1wUnVsZXMSiQEKBWNvbnN0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEJewkhbClkKD3RpbWVzdGFtcC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKrAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQoABwkh9CnsKDHRpbWVzdGFtcC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK8AQoDbHRlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKQAcJIjAEKiQEKDXRpbWVzdGFtcC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEmwKBmx0X25vdxgHIAEoCEJawkhXClUKEHRpbWVzdGFtcC5sdF9ub3caQShydWxlcy5sdF9ub3cgJiYgdGhpcyA+IG5vdykgPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gbm93JyA6ICcnSAASxwcKAmd0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKcB8JImAcKfgoMdGltZXN0YW1wLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq3AQoPdGltZXN0YW1wLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq/AQoZdGltZXN0YW1wLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCscBChB0aW1lc3RhbXAuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrPAQoadGltZXN0YW1wLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEpMICgNndGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQucHwkjjBwqMAQoNdGltZXN0YW1wLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsYBChB0aW1lc3RhbXAuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs4BChp0aW1lc3RhbXAuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1gEKEXRpbWVzdGFtcC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt4BCht0aW1lc3RhbXAuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESbwoGZ3Rfbm93GAggASgIQl3CSFoKWAoQdGltZXN0YW1wLmd0X25vdxpEKHJ1bGVzLmd0X25vdyAmJiB0aGlzIDwgbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBub3cnIDogJydIARK4AQoGd2l0aGluGAkgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQowBwkiIAQqFAQoQdGltZXN0YW1wLndpdGhpbhpxdGhpcyA8IG5vdy1ydWxlcy53aXRoaW4gfHwgdGhpcyA+IG5vdytydWxlcy53aXRoaW4gPyAndmFsdWUgbXVzdCBiZSB3aXRoaW4gJXMgb2Ygbm93Jy5mb3JtYXQoW3J1bGVzLndpdGhpbl0pIDogJycSSwoHZXhhbXBsZRgKIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCHsJIGwoZChF0aW1lc3RhbXAuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iOQoKVmlvbGF0aW9ucxIrCgp2aW9sYXRpb25zGAEgAygLMhcuYnVmLnZhbGlkYXRlLlZpb2xhdGlvbiKlAQoJVmlvbGF0aW9uEiYKBWZpZWxkGAUgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIlCgRydWxlGAYgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIVCg1jb25zdHJhaW50X2lkGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSDwoHZm9yX2tleRgEIAEoCEoECAEQAlIKZmllbGRfcGF0aCI9CglGaWVsZFBhdGgSMAoIZWxlbWVudHMYASADKAsyHi5idWYudmFsaWRhdGUuRmllbGRQYXRoRWxlbWVudCLpAgoQRmllbGRQYXRoRWxlbWVudBIUCgxmaWVsZF9udW1iZXIYASABKAUSEgoKZmllbGRfbmFtZRgCIAEoCRI+CgpmaWVsZF90eXBlGAMgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPAoIa2V5X3R5cGUYBCABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI+Cgp2YWx1ZV90eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSDwoFaW5kZXgYBiABKARIABISCghib29sX2tleRgHIAEoCEgAEhEKB2ludF9rZXkYCCABKANIABISCgh1aW50X2tleRgJIAEoBEgAEhQKCnN0cmluZ19rZXkYCiABKAlIAEILCglzdWJzY3JpcHQqhwEKBklnbm9yZRIWChJJR05PUkVfVU5TUEVDSUZJRUQQABIZChVJR05PUkVfSUZfVU5QT1BVTEFURUQQARIbChdJR05PUkVfSUZfREVGQVVMVF9WQUxVRRACEhEKDUlHTk9SRV9BTFdBWVMQAyoaSUdOT1JFX0VNUFRZSUdOT1JFX0RFRkFVTFQqbgoKS25vd25SZWdleBIbChdLTk9XTl9SRUdFWF9VTlNQRUNJRklFRBAAEiAKHEtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX05BTUUQARIhCh1LTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9WQUxVRRACOlwKB21lc3NhZ2USHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYhwkgASgLMiAuYnVmLnZhbGlkYXRlLk1lc3NhZ2VDb25zdHJhaW50c1IHbWVzc2FnZTpUCgVvbmVvZhIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnMYhwkgASgLMh4uYnVmLnZhbGlkYXRlLk9uZW9mQ29uc3RyYWludHNSBW9uZW9mOlQKBWZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiHCSABKAsyHi5idWYudmFsaWRhdGUuRmllbGRDb25zdHJhaW50c1IFZmllbGQ6YwoKcHJlZGVmaW5lZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiAkgASgLMiMuYnVmLnZhbGlkYXRlLlByZWRlZmluZWRDb25zdHJhaW50c1IKcHJlZGVmaW5lZEJuChJidWlsZC5idWYudmFsaWRhdGVCDVZhbGlkYXRlUHJvdG9QAVpHYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9wcm90b3ZhbGlkYXRlL3Byb3RvY29sYnVmZmVycy9nby9idWYvdmFsaWRhdGU",[T,Ye,_t]);var Vo=V("ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJqCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25z+AEBogIER0FQSWIGcHJvdG8z");var Co=V("Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[Vo,T]);var Xo=V("Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQloKDmNvbS5nb29nbGUuYXBpQhBMYXVuY2hTdGFnZVByb3RvUAFaLWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpO2FwaaICBEdBUEliBnByb3RvMw");var So=V("Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIkEKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyL0AQoOUHl0aG9uU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEk4KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgCIAEoCzIvLmdvb2dsZS5hcGkuUHl0aG9uU2V0dGluZ3MuRXhwZXJpbWVudGFsRmVhdHVyZXMaXgoURXhwZXJpbWVudGFsRmVhdHVyZXMSHQoVcmVzdF9hc3luY19pb19lbmFibGVkGAEgASgIEicKH3Byb3RvYnVmX3B5dGhvbmljX3R5cGVzX2VuYWJsZWQYAiABKAgiQgoMTm9kZVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKqAwoORG90bmV0U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEkkKEHJlbmFtZWRfc2VydmljZXMYAiADKAsyLy5nb29nbGUuYXBpLkRvdG5ldFNldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5EksKEXJlbmFtZWRfcmVzb3VyY2VzGAMgAygLMjAuZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkUmVzb3VyY2VzRW50cnkSGQoRaWdub3JlZF9yZXNvdXJjZXMYBCADKAkSIAoYZm9yY2VkX25hbWVzcGFjZV9hbGlhc2VzGAUgAygJEh4KFmhhbmR3cml0dGVuX3NpZ25hdHVyZXMYBiADKAkaNgoUUmVuYW1lZFNlcnZpY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVSZW5hbWVkUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJCCgxSdWJ5U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIr8BCgpHb1NldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJFChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMisuZ29vZ2xlLmFwaS5Hb1NldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5GjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwIKDk1ldGhvZFNldHRpbmdzEhAKCHNlbGVjdG9yGAEgASgJEjwKDGxvbmdfcnVubmluZxgCIAEoCzImLmdvb2dsZS5hcGkuTWV0aG9kU2V0dGluZ3MuTG9uZ1J1bm5pbmcSHQoVYXV0b19wb3B1bGF0ZWRfZmllbGRzGAMgAygJGs0BCgtMb25nUnVubmluZxI1ChJpbml0aWFsX3BvbGxfZGVsYXkYASABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SHQoVcG9sbF9kZWxheV9tdWx0aXBsaWVyGAIgASgCEjEKDm1heF9wb2xsX2RlbGF5GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjUKEnRvdGFsX3BvbGxfdGltZW91dBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiIrChhTZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24SDwoHbWV0aG9kcxgBIAMoCSqjAQoZQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhIrCidDTElFTlRfTElCUkFSWV9PUkdBTklaQVRJT05fVU5TUEVDSUZJRUQQABIJCgVDTE9VRBABEgcKA0FEUxACEgoKBlBIT1RPUxADEg8KC1NUUkVFVF9WSUVXEAQSDAoIU0hPUFBJTkcQBRIHCgNHRU8QBhIRCg1HRU5FUkFUSVZFX0FJEAcqZwoYQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEioKJkNMSUVOVF9MSUJSQVJZX0RFU1RJTkFUSU9OX1VOU1BFQ0lGSUVEEAASCgoGR0lUSFVCEAoSEwoPUEFDS0FHRV9NQU5BR0VSEBQ6SgoQbWV0aG9kX3NpZ25hdHVyZRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGJsIIAMoCVIPbWV0aG9kU2lnbmF0dXJlOkMKDGRlZmF1bHRfaG9zdBIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiZCCABKAlSC2RlZmF1bHRIb3N0OkMKDG9hdXRoX3Njb3BlcxIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiaCCABKAlSC29hdXRoU2NvcGVzOkQKC2FwaV92ZXJzaW9uEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGMG6q/oBIAEoCVIKYXBpVmVyc2lvbkJpCg5jb20uZ29vZ2xlLmFwaUILQ2xpZW50UHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[Xo,T,Ye]);var we=V("Cittb2NoYWJ1Z2FwaXMvYWRhcHQvcGx1Z2lucy92MS9wbHVnaW5zLnByb3RvEh1tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MSKWAQoTVXBsb2FkUGx1Z2luUmVxdWVzdBI7CghtYW5pZmVzdBgBIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLk1hbmlmZXN0SAASMwoEZmlsZRgCIAEoCzIjLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLkZpbGVIAEINCgRkYXRhEgW6SAIIASIWChRVcGxvYWRQbHVnaW5SZXNwb25zZSJPCgRGaWxlEisKBHBhdGgYASABKAlCHbpIGnIYEAIYgCAyEV5bXi9dKyhcL1teL10rKSokEhoKBGRhdGEYAiABKAxCDLpICXoHEAEYgLSJEyKIEAoITWFuaWZlc3QSLQoEbmFtZRgBIAEoCUIfukgcchoQARhkMhReW18kYS16XVtfJGEtejAtOV0qJBLUAQoHdmVyc2lvbhgCIAEoCULCAbpIvgFyuwEQBRiWATKzAV4oMHxbMS05XVxkKilcLigwfFsxLTldXGQqKVwuKDB8WzEtOV1cZCopKD86LSgoPzowfFsxLTldXGQqfFxkKlthLXpBLVotXVswLTlhLXpBLVotXSopKD86XC4oPzowfFsxLTldXGQqfFxkKlthLXpBLVotXVswLTlhLXpBLVotXSopKSopKT8oPzpcKyhbMC05YS16QS1aLV0rKD86XC5bMC05YS16QS1aLV0rKSopKT8kEhgKBWxhYmVsGAMgASgJQgm6SAZyBBABGGQSHwoLZGVzY3JpcHRpb24YBCABKAlCCrpIB3IFEAEY+gESHgoMb3JnYW5pemF0aW9uGAUgASgJQgi6SAVyA7ABARJYCghob21lcGFnZRgGIAEoCUJBukg+2AEBcjkQCxiAIDIyXmh0dHBzOi8vW2EtekEtWjAtOS4tXSsoPzpcLlthLXpBLVpdezIsfSkoPzovLiopPyRIAIgBARJaCgpyZXBvc2l0b3J5GAcgASgJQkG6SD7YAQFyORALGIAgMjJeaHR0cHM6Ly9bYS16QS1aMC05Li1dKyg/OlwuW2EtekEtWl17Mix9KSg/Oi8uKik/JEgBiAEBEtkBCgRidWdzGAggASgJQsUBukjBAboBugEKEnZhbGlkX2VtYWlsX29yX3VybBIhYnVncyBtdXN0IGJlIGEgdmFsaWQgZW1haWwgb3IgVVJMGoABc2l6ZSh0aGlzKSA+PSAyICYmIHNpemUodGhpcykgPD0gNDA5NiAmJiAodGhpcy5pc0VtYWlsKCkgfHwgdGhpcy5tYXRjaGVzKCdeaHR0cHM6Ly9bYS16QS1aMC05Li1dKyg/OlxcLlthLXpBLVpdezIsfSkoPzovLiopPyQnKSnYAQFIAogBARIhCgZhdXRob3IYCSABKAlCDLpICdgBAXIEEAEYZEgDiAEBEmUKBGxvZ28YCiABKAlCUrpIT9gBAXJKEAIYgCAyQ14oW14vXSsoL1teL10rKSopXC4oZ2lmfGpwZ3xqcGVnfGpmaWZ8cGpwZWd8cGpwfHBuZ3xzdmd8d2VicHxhdmlmKSRIBIgBARI7CglleGVjdXRvcnMYCyABKAlCKLpIJXIjEAIYgCAyHF4oW14vXSsoL1teL10rKSopXC4obWpzfGpzKSQSRwoNY29uZmlndXJhdG9ycxgMIAEoCUIrukgo2AEBciMQAhiAIDIcXihbXi9dKygvW14vXSspKilcLihtanN8anMpJEgFiAEBEjIKBmFzc2V0cxgNIAEoCUIdukgachgQAhiAIDIRXlteL10rKFwvW14vXSspKiRIBogBARIvCgNjZG4YDiABKAlCHbpIGnIYEAIYgCAyEV5bXi9dKyhcL1teL10rKSokSAeIAQESqAEKCHZlcnRpY2VzGA8gAygLMiUubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuVmVydGV4Qm+6SGy6AWIKE3ZlcnRleF91bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiZ0aGlzLm1hcCh2ZXJ0ZXgsIHZlcnRleC5uYW1lKS51bmlxdWUoKZIBBAgBEGQSnwIKDXBsdWdpbl9vYXV0aDIYECADKAsyLC5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5PYXV0aDJTZXJ2aWNlQtkBukjVAboBbQogcGx1Z2luX29hdXRoMi5vYXV0aF91bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiR0aGlzLm1hcChvYXV0aCwgb2F1dGgubmFtZSkudW5pcXVlKCmSAWIIABAUIly6AVkKHnBsdWdpbl9vYXV0aDIub2F1dGgyLmNsaWVudF9pZBIiVGhlIGNsaWVudF9pZCBwcm9wZXJ0eSBtdXN0IGJlIHNldBoTaGFzKHRoaXMuY2xpZW50X2lkKRK7AQoQcGx1Z2luX3ZhcmlhYmxlcxgRIAMoCzIuLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZhcmlhYmxlU2VydmljZUJxukhuugFkChF2YXJzX3VuaXF1ZV9uYW1lcxIjYSBuYW1lIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UaKnRoaXMubWFwKHZhcmlhYmxlLCB2YXJpYWJsZS5uYW1lKS51bmlxdWUoKZIBBAgAEGQSqgEKC3BsdWdpbl9tdGxzGBIgAygLMioubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuTVRMU1NlcnZpY2VCabpIZroBXAoRbXRsc191bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiJ0aGlzLm1hcChtdGxzLCBtdGxzLm5hbWUpLnVuaXF1ZSgpkgEECAAQFEILCglfaG9tZXBhZ2VCDQoLX3JlcG9zaXRvcnlCBwoFX2J1Z3NCCQoHX2F1dGhvckIHCgVfbG9nb0IQCg5fY29uZmlndXJhdG9yc0IJCgdfYXNzZXRzQgYKBF9jZG4ixg0KBlZlcnRleBItCgRuYW1lGAEgASgJQh+6SBxyGhABGGQyFF5bXyRhLXpdW18kYS16MC05XSokEhgKBWxhYmVsGAIgASgJQgm6SAZyBBABGGQSJwoLZGVzY3JpcHRpb24YAyABKAlCDbpICtgBAXIFEAEY+gFIAIgBARJlCgRsb2dvGAQgASgJQlK6SE/YAQFyShACGIAgMkNeKFteL10rKC9bXi9dKykqKVwuKGdpZnxqcGd8anBlZ3xqZmlmfHBqcGVnfHBqcHxwbmd8c3ZnfHdlYnB8YXZpZikkSAGIAQESSAoEdHlwZRgFIAEoDjIwLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZlcnRleC5WZXJ0ZXhUeXBlQgi6SAWCAQIgABIyCgZjb25maWcYBiABKAlCHbpIGnIYEAUYgCAyEV4oW14vXSsoL1teL10rKSopSAKIAQESNgoIbWV0YWRhdGEYByABKAlCJLpIIXIfEAUYgCAyGF4oW14vXSsoL1teL10rKSopXC5qc29uJBIUCgxjb25maWd1cmF0b3IYCCABKAgStAEKCXZhcmlhYmxlcxgJIAMoCzIuLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZhcmlhYmxlU2VydmljZUJxukhuugFkChF2YXJzX3VuaXF1ZV9uYW1lcxIjYSBuYW1lIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UaKnRoaXMubWFwKHZhcmlhYmxlLCB2YXJpYWJsZS5uYW1lKS51bmlxdWUoKZIBBAgAEGQSowEKBG10bHMYCiADKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5NVExTU2VydmljZUJpukhmugFcChFtdGxzX3VuaXF1ZV9uYW1lcxIjYSBuYW1lIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UaInRoaXMubWFwKG10bHMsIG10bHMubmFtZSkudW5pcXVlKCmSAQQIABBkEsABCgtjb2RlX29hdXRoMhgLIAMoCzIwLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLk9hdXRoMkNvZGVCaW5kaW5nQnm6SHa6AWwKH3ZlcnRleC5jb2RlX29hdXRoMi51bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiR0aGlzLm1hcChvYXV0aCwgb2F1dGgubmFtZSkudW5pcXVlKCmSAQQIABAUEvICCgZvYXV0aDIYDCADKAsyLC5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5PYXV0aDJTZXJ2aWNlQrMCukivAroBZwoadmVydGV4Lm9hdXRoMi51bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiR0aGlzLm1hcChvYXV0aCwgb2F1dGgubmFtZSkudW5pcXVlKCmSAcEBCAAQFCK6AboBtgEKIHZlcnRleC5vYXV0aDIuY2xpZW50X2lkX2FuZF9jb2RlElFUaGUgY2xpZW50X2lkIGFuZCB0aGUgY29kZSBwcm9wZXJ0eSBtYXkgbm90IGJlIHNldCBhcyB3ZWxsIGFzIHRoZSBjb2RlIGdyYW50IHR5cGUaPyFoYXModGhpcy5jbGllbnRfaWQpICYmICFoYXModGhpcy5jb2RlKSAmJiB0aGlzLmdyYW50X3R5cGUgIT0gMSKaAQoKVmVydGV4VHlwZRIbChdWRVJURVhfVFlQRV9VTlNQRUNJRklFRBAAEhYKElZFUlRFWF9UWVBFX0FDVElPThABEhcKE1ZFUlRFWF9UWVBFX0JST1dTRVIQAhIcChhWRVJURVhfVFlQRV9DUk9OX1RSSUdHRVIQAxIgChxWRVJURVhfVFlQRV9FWFRFUk5BTF9UUklHR0VSEAQ6wAG6SLwBGrkBCh92ZXJ0ZXgub2F1dGgyX2FuZF9jb2RlX2JpbmRpbmdzEkVUaGUgbmFtZXMgb2YgdGhlIG9hdXRoMiBzZXJ2aWNlcyBhbmQgdGhlIGNvZGUgYmluZGluZ3MgbXVzdCBiZSB1bmlxdWUaTyh0aGlzLm9hdXRoMi5tYXAodmFsLCB2YWwubmFtZSkgKyB0aGlzLmNvZGVfb2F1dGgyLm1hcCh2YWwsIHZhbC5uYW1lKSkudW5pcXVlKClCDgoMX2Rlc2NyaXB0aW9uQgcKBV9sb2dvQgkKB19jb25maWcixQEKC01UTFNTZXJ2aWNlEi0KBG5hbWUYASABKAlCH7pIHHIaEAEYZDIUXltfJGEtel1bXyRhLXowLTldKiQSIAoFbGFiZWwYAiABKAlCDLpICdgBAXIEEAEYZEgAiAEBEicKC2Rlc2NyaXB0aW9uGAMgASgJQg26SArYAQFyBRABGPoBSAGIAQESFQoIb3B0aW9uYWwYBCABKAhIAogBAUIICgZfbGFiZWxCDgoMX2Rlc2NyaXB0aW9uQgsKCV9vcHRpb25hbCLkAgoPVmFyaWFibGVTZXJ2aWNlEi0KBG5hbWUYASABKAlCH7pIHHIaEAEYZDIUXltfJGEtel1bXyRhLXowLTldKiQSHQoFbGFiZWwYAiABKAlCCbpIBnIEEAEYZEgAiAEBEicKC2Rlc2NyaXB0aW9uGAMgASgJQg26SArYAQFyBRABGPoBSAGIAQESSwoEdHlwZRgEIAEoDjIzLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZhcmlhYmxlU2VydmljZS5UeXBlQgi6SAWCAQIgABIVCghvcHRpb25hbBgFIAEoCEgCiAEBIk8KBFR5cGUSFAoQVFlQRV9VTlNQRUNJRklFRBAAEg8KC1RZUEVfU0VDUkVUEAESDwoLVFlQRV9TVFJJTkcQAhIPCgtUWVBFX1NXSVRDSBADQggKBl9sYWJlbEIOCgxfZGVzY3JpcHRpb25CCwoJX29wdGlvbmFsIugMCg1PYXV0aDJTZXJ2aWNlEi0KBG5hbWUYASABKAlCH7pIHHIaEAEYZDIUXltfJGEtel1bXyRhLXowLTldKiQSIAoFbGFiZWwYAiABKAlCDLpICdgBAXIEEAEYZEgAiAEBEicKC2Rlc2NyaXB0aW9uGAMgASgJQg26SArYAQFyBRABGPoBSAGIAQESTAoKZ3JhbnRfdHlwZRgEIAEoDjIuLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLk9hdXRoMkdyYW50VHlwZUIIukgFggECIAASJQoGc2NvcGVzGAUgAygJQhW6SBKSAQ8IARD0AxgBIgZyBBABGGQSVAoLYXV0aF9tZXRob2QYBiABKA4yLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5PYXV0aDJBdXRoVHlwZUILukgI2AEBggECIABIAogBARJLCgNhbGcYByABKA4yLC5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5Qcml2YXRlS2V5QWxnQgu6SAjYAQGCAQIgAEgDiAEBEiUKCWNsaWVudF9pZBgIIAEoCUINukgK2AEBcgUQARj6AUgEiAEBElYKDnRva2VuX2VuZHBvaW50GAkgASgJQj66SDtyORALGIAgMjJeaHR0cHM6Ly9bYS16QS1aMC05Li1dKyg/OlwuW2EtekEtWl17Mix9KSg/Oi8uKik/JBI8CgRjb2RlGAogASgLMikubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuT2F1dGgyQ29kZUgFiAEBEhUKCG9wdGlvbmFsGAsgASgISAaIAQE6mge6SJYHGucBChJvYXV0aDIuYXV0aF9tZXRob2QShwFUaGUgYXV0aF9tZXRob2QgcHJvcGVydHkgbXVzdCBiZSBzZXQgaW4gY2FzZSBvZiBncmFudF90eXBlIE9BVVRIMl9HUkFOVF9UWVBFX0FVVEhPUklaQVRJT05fQ09ERSBvciBPQVVUSDJfR1JBTlRfVFlQRV9DTElFTlRfQ1JFREVOVElBTFMaR2hhcyh0aGlzLmF1dGhfbWV0aG9kKSA9PSAodGhpcy5ncmFudF90eXBlID09IDEgfHwgdGhpcy5ncmFudF90eXBlID09IDIpGsACCgpvYXV0aDIuYWxnEr4BVGhlIGFsZyBwcm9wZXJ0eSBtdXN0IGJlIHNldCBpbiBjYXNlIG9mIGdyYW50X3R5cGUgT0FVVEgyX0dSQU5UX1RZUEVfSldUX0JFQVJFUiwgT0FVVEgyX0dSQU5UX1RZUEVfU0FNTDJfQkVBUkVSIG9yIGF1dGhfbWV0aG9kIE9BVVRIMl9BVVRIX1RZUEVfUFJJVkFURV9LRVlfSldULCBPQVVUSDJfQVVUSF9UWVBFX1NBTUwyX0JFQVJFUhpxaGFzKHRoaXMuYWxnKSA9PSAodGhpcy5ncmFudF90eXBlID09IDMgfHwgdGhpcy5ncmFudF90eXBlID09IDQgfHwgdGhpcy5hdXRoX21ldGhvZCA9PSAzIHx8IHRoaXMuYXV0aF9tZXRob2QgPT0gNSkakQEKC29hdXRoMi5jb2RlElhUaGUgY29kZSBwcm9wZXJ0eSBtdXN0IGJlIHNldCBpbiBjYXNlIG9mIGdyYW50X3R5cGUgT0FVVEgyX0dSQU5UX1RZUEVfQVVUSE9SSVpBVElPTl9DT0RFGihoYXModGhpcy5jb2RlKSA9PSAodGhpcy5ncmFudF90eXBlID09IDEpGtIBCg9vYXV0aDIub3B0aW9uYWwSZlRoZSBvcHRpb25hbCBwcm9wZXJ0eSBjYW5ub3QgYmUgc2V0IHRvIHRydWUgaW4gY2FzZSBvZiBncmFudF90eXBlIE9BVVRIMl9HUkFOVF9UWVBFX0FVVEhPUklaQVRJT05fQ09ERRpXIWhhcyh0aGlzLm9wdGlvbmFsKSB8fCB0aGlzLmdyYW50X3R5cGUgIT0gMSB8fCAoIXRoaXMub3B0aW9uYWwgJiYgdGhpcy5ncmFudF90eXBlID09IDEpQggKBl9sYWJlbEIOCgxfZGVzY3JpcHRpb25CDgoMX2F1dGhfbWV0aG9kQgYKBF9hbGdCDAoKX2NsaWVudF9pZEIHCgVfY29kZUILCglfb3B0aW9uYWwiZgoRT2F1dGgyQ29kZUJpbmRpbmcSLQoEbmFtZRgBIAEoCUIfukgcchoQARhkMhReW18kYS16XVtfJGEtejAtOV0qJBIVCghvcHRpb25hbBgCIAEoCEgAiAEBQgsKCV9vcHRpb25hbCKWAwoKT2F1dGgyQ29kZRJVCg1hdXRoX2VuZHBvaW50GAEgASgJQj66SDtyORALGIAgMjJeaHR0cHM6Ly9bYS16QS1aMC05Li1dKyg/OlwuW2EtekEtWl17Mix9KSg/Oi8uKik/JBIaCgZpc3N1ZXIYAiABKAlCCrpIB3IFEAEYgCASUAoIandrc191cmkYAyABKAlCPrpIO3I5EAsYgCAyMl5odHRwczovL1thLXpBLVowLTkuLV0rKD86XC5bYS16QS1aXXsyLH0pKD86Ly4qKT8kEngKEWFkZGl0aW9uYWxfcGFyYW1zGAQgAygLMj8ubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuT2F1dGgyQ29kZS5BZGRpdGlvbmFsUGFyYW1zRW50cnlCHLpIGZoBFggAEDIiB3IFEAEY+gEqB3IFEAEY+gESEAoIdXNlX3BrY2UYBSABKAgaNwoVQWRkaXRpb25hbFBhcmFtc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEqSwoNUHJpdmF0ZUtleUFsZxIfChtQUklWQVRFX0tFWV9BTEdfVU5TUEVDSUZJRUQQABIZChVQUklWQVRFX0tFWV9BTEdfUlMyNTYQASrOAQoPT2F1dGgyR3JhbnRUeXBlEiEKHU9BVVRIMl9HUkFOVF9UWVBFX1VOU1BFQ0lGSUVEEAASKAokT0FVVEgyX0dSQU5UX1RZUEVfQVVUSE9SSVpBVElPTl9DT0RFEAESKAokT0FVVEgyX0dSQU5UX1RZUEVfQ0xJRU5UX0NSRURFTlRJQUxTEAISIAocT0FVVEgyX0dSQU5UX1RZUEVfSldUX0JFQVJFUhADEiIKHk9BVVRIMl9HUkFOVF9UWVBFX1NBTUwyX0JFQVJFUhAEKs0BCg5PYXV0aDJBdXRoVHlwZRIgChxPQVVUSDJfQVVUSF9UWVBFX1VOU1BFQ0lGSUVEEAASGgoWT0FVVEgyX0FVVEhfVFlQRV9CQVNJQxABEhkKFU9BVVRIMl9BVVRIX1RZUEVfRk9STRACEiQKIE9BVVRIMl9BVVRIX1RZUEVfUFJJVkFURV9LRVlfSldUEAMSGQoVT0FVVEgyX0FVVEhfVFlQRV9NVExTEAQSIQodT0FVVEgyX0FVVEhfVFlQRV9TQU1MMl9CRUFSRVIQBTKvAgoNUGx1Z2luU2VydmljZRKYAQoMVXBsb2FkUGx1Z2luEjIubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuVXBsb2FkUGx1Z2luUmVxdWVzdBozLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlVwbG9hZFBsdWdpblJlc3BvbnNlIh2C0+STAhc6ASoiEi92MS9wbHVnaW5zL3VwbG9hZCgBGoIBykEWYWRhcHQubW9jaGFidWdhcGlzLmNvbdJBZmh0dHBzOi8vd3d3Lm1vY2hhYnVnYXBpcy5jb20vYXV0aC9hZGFwdC9wbHVnaW5zLGh0dHBzOi8vd3d3Lm1vY2hhYnVnYXBpcy5jb20vYXV0aC9hZGFwdC9wbHVnaW5zLnVwbG9hZGIGcHJvdG8z",[Ao,Co,So]),Nn=J(we,0);var ne=J(we,3),Hn=J(we,4);var Mn=fo(we,0);import{execSync as Xa}from"child_process";import me from"fs";import{mkdirp as Sa}from"mkdirp";import S from"path";import Bo from"chalk";import ve from"fs";import{mkdirp as Va}from"mkdirp";import Ue from"path";import{fileURLToPath as Ca}from"url";function y(e){return ve.readFileSync(Ue.join(Ue.dirname(Ca(import.meta.url)),"..","assets",e)).toString()}function h(e,n){let t=Ue.dirname(e);Va.sync(t),ve.writeFileSync(e,n)}function ge(e){let n=Ue.resolve(e);if(!ve.existsSync(n))return console.error(Bo.red(`Invalid command: Manifest file not found at ${n}.`)),null;try{let t=ve.readFileSync(n).toString();return Io(ne,t)}catch(t){return console.error(Bo.red("An error occurred while reading the manifest")),console.error(t.message),null}}function ke(e){return(e.charAt(0).toUpperCase()+e.substring(1)).replace("_"," ")}function Ba(e){switch(e){case"action":return"VERTEX_TYPE_ACTION";case"cron-trigger":return"VERTEX_TYPE_CRON_TRIGGER";case"external-trigger":return"VERTEX_TYPE_EXTERNAL_TRIGGER";case"browser":return"VERTEX_TYPE_BROWSER";default:throw new Error("The node type is invalid")}}function De(e,n,t,o,s,a){let i=S.join(e,"src","vertices",n);if(me.existsSync(i))throw new Error(`The folder for the new vertex: ${i} already exists`);Sa.sync(i);let r=S.join(i,"executor.ts"),l={name:n,label:ke(n),description:`The better description of what ${n} is doing, the better it is for both AI and humans`,type:Ba(t),metadata:S.join("src","vertices",n,"metadata.json"),configurator:o,mtls:[],codeOauth2:[],oauth2:[],variables:[]};if(a==="react"){Xa("npm install react react-dom @types/react @types/react-dom",{cwd:e,stdio:"inherit"});let u=S.join(e,"src/vertices",n,"ui");o&&(h(S.join(u,"configurator.App.tsx"),y("configurator.App.tsx")),h(S.join(u,"configurator.main.tsx"),y("configurator.main.tsx")),h(S.join(u,"configurator.ssg.tsx"),y("configurator.ssg.tsx"))),t==="browser"&&(h(S.join(u,"executor.App.tsx"),y("executor.App.tsx")),h(S.join(u,"executor.main.tsx"),y("executor.main.tsx")),h(S.join(u,"executor.ssg.tsx"),y("executor.ssg.tsx"))),me.existsSync(S.join(e,"build-client.js"))||h(S.join(e,"build-client.js"),y("build-client.js"))}switch(l.type){case"VERTEX_TYPE_ACTION":h(r,y("executor_action.ts"));break;case"VERTEX_TYPE_BROWSER":a==="react"?h(r,y("executor_browser_react.tsx").replaceAll("___VERTEX_NAME___",n)):h(r,y("executor_browser_none.ts"));break;case"VERTEX_TYPE_EXTERNAL_TRIGGER":h(r,y("executor_external_trigger.ts"));break;case"VERTEX_TYPE_CRON_TRIGGER":h(r,y("executor_cron_trigger.ts"));break;default:throw new Error("The vertex type is invalid")}me.writeFileSync(S.join(e,"src","executors.ts"),Jo([n,...s.map(u=>u.name)],"ExecutorEnvironment"));let d={complete:!0,receivers:[{name:"input",description:"Default input receiver",bindings:[]}],transmitters:[{name:"output",description:"Default output transmitter",signals:[],failure:!1}],procedures:[],streams:[]};return l.type==="VERTEX_TYPE_CRON_TRIGGER"&&(d.cronSchedule="/5 * * * * *"),o&&(a==="react"?h(S.join(i,"configurator.ts"),y("configurator_react.tsx").replaceAll("___VERTEX_NAME___",n)):h(S.join(i,"configurator.ts"),y("configurator_none.ts")),d.complete=!1,me.writeFileSync(S.join(e,"src","configurators.ts"),Jo([n,...s.filter(u=>u.configurator).map(u=>u.name)],"ConfiguratorEnvironment"))),me.writeFileSync(S.join(i,"metadata.json"),JSON.stringify(d,null,2)),l}function Jo(e,n){let t=e.map(o=>`import ${o} from './vertices/${o}/${n==="ExecutorEnvironment"?"executor":"configurator"}';`).join(`
3
4
  `);return`/**
4
5
  * ---------------------------------------------------------------------------
5
6
  * THIS FILE IS AUTOGENERATED - DO NOT EDIT MANUALLY
@@ -18,12 +19,12 @@ import { selectVertex } from '@mochabug/adapt-plugin-toolkit/router';
18
19
  ${t}
19
20
 
20
21
  export default {
21
- async fetch(req: Request, env: ${e}, ctx: ExecutionContext): Promise<Response> {
22
- return await selectVertex(req, env, ctx, { ${o.join(", ")} });
22
+ async fetch(req: Request, env: ${n}, ctx: ExecutionContext): Promise<Response> {
23
+ return await selectVertex(req, env, ctx, { ${e.join(", ")} });
23
24
  },
24
- };`}async function lt(o){let e=await tn({message:"Type a new unused vertex name",transformer:s=>s.trim(),validate:s=>(s=s.trim(),o.vertices.filter(r=>r.name===s).length>0?!1:/^[_a-z][_a-z0-9]*$/.test(s))}),t=await st({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),i=await en({message:"Need a configurator for the vertex?"}),a;(i||t==="browser")&&(a=await st({message:"Choose frontend library",choices:[{name:"React",value:"react",description:"React with TypeScript"},{name:"None",value:"none",description:"I do it myself"}]})),console.log(Ce.magenta("Creating new vertex templates..."));let n=le(".",e,t,i,o.vertices,a);o.vertices.push(n),!o.configurators&&n.configurator&&(o.configurators="dist/configurators.js"),console.log(Ce.magenta("Updating manifest...")),nn.writeFileSync("manifest.json",L.toJsonString(o,{enumAsInteger:!1,prettySpaces:2,emitDefaultValues:!1})),console.log(Ce.bgGreen("Success"))}import{confirm as an,input as pt,select as ct}from"@inquirer/prompts";import ut from"chalk";import{execSync as dt}from"child_process";import rn from"fs";import{mkdirp as mt}from"mkdirp";import B from"path";async function ft(o){let e=await pt({message:"Type plugin name",transformer:c=>c.trim().toLowerCase(),validate:c=>/^[_a-z][_a-z0-9]*$/.test(c)}),t=await ct({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),i=await pt({message:"Type a new unused vertex name",transformer:c=>c.trim().toLowerCase(),validate:c=>/^[_a-z][_a-z0-9]*$/.test(c)}),a=await an({message:"Need a configurator for the vertex?"}),n;(a||t==="browser")&&(n=await ct({message:"Choose frontend library",choices:[{name:"React",value:"react",description:"React with TypeScript"},{name:"None",value:"none",description:"I do it myself"}]})),mt.sync(o);let s=B.isAbsolute(o)?o:B.join(process.cwd(),o);h(B.join(s,".gitignore"),g("gitignore"));let r={name:e,version:"",private:!0,type:"module",scripts:{"build-client":`node -e "if(require('fs').existsSync('build-client.js')) require('child_process').execSync('node build-client.js', { stdio: 'inherit' })"`,"build-common":"rimraf dist && npm run build-client && node build.js","build-dev":"export PLUGINS_CDN=https://cdn-dev.mochabug.com/adapt/plugins && npm run build-common","build-prod":"export PLUGINS_CDN=https://cdn.mochabug.com/adapt/plugins && npm run build-common","build-emulate":"export PLUGINS_CDN=http://localhost:51002 && npm run build-common",build:"npm run build-dev",emulate:"npm run build-emulate && adaptkit emulate",add:"adaptkit add"},devDependencies:{unenv:"npm:unenv-nightly@*"}};h(B.join(s,"package.json"),JSON.stringify(r,null,2)),h(B.join(s,"README.md"),g("readme.md")),h(B.join(s,"LICENSE.md"),g("license.md")),dt("npm install --save-dev @mochabug/adapt-plugin-typings typescript @cloudflare/unenv-preset @types/node esbuild rimraf glob",{cwd:s,stdio:"inherit"}),dt("npm install @mochabug/adapt-plugin-toolkit",{cwd:s,stdio:"inherit"}),h(B.join(s,"global.d.ts"),g("global.d.ts")),h(B.join(s,"tsconfig.json"),g("tsconf.json")),h(B.join(s,"build.js"),g("build.js")),h(B.join(s,"inject.js"),g("inject.js"));let p=le(s,i,t,a,[],n);console.log(ut.magenta("Creating manifest..."));let l={name:e,organization:"00000000-0000-0000-0000-000000000000",version:"0.1.0",label:se(e),description:`A nice description of what ${e} does`,author:"John Doe",bugs:"bugs@foobar.com",homepage:"https://www.foobar.com",repository:"https://github.com",vertices:[p],executors:"dist/executors.js",pluginVariables:[],pluginOauth2:[],pluginMtls:[]};if(n==="react"&&(mt.sync(B.join(o,"cdn")),l.cdn="cdn"),!p.metadata)throw new Error("This cannot happen");p.configurator&&(l.configurators="dist/configurators.js"),rn.writeFileSync(B.join(s,"manifest.json"),L.toJsonString(l,{enumAsInteger:!1,prettySpaces:2,emitDefaultValues:!1})),console.log(ut.bgGreen("Success"))}import gt from"chalk";import{randomBytes as on}from"crypto";import sn from"express";import ln from"node-fetch";import pn from"open";import cn from"pkce-challenge";var un=51421,dn=5,mn="https://www.mochabugapis.com/auth/adapt/plugins.upload",fn="https://adapt-dev.mochabugapis.com";function gn({clientId:o,redirectUri:e,scope:t,state:i,authUrl:a,codeChallenge:n,audience:s}){let r=new URL(a);return r.searchParams.set("response_type","code"),r.searchParams.set("client_id",o),r.searchParams.set("audience",s),r.searchParams.set("redirect_uri",e),r.searchParams.set("scope",t),r.searchParams.set("state",i),r.searchParams.set("code_challenge",n),r.searchParams.set("code_challenge_method","S256"),r.toString()}function hn({redirectUri:o,codeVerifier:e,clientId:t,code:i}){let a=new URLSearchParams;return a.set("grant_type","authorization_code"),a.set("code_verifier",e),a.set("client_id",t),a.set("code",i),a.set("redirect_uri",o),a.toString()}function ht(o,e=0){return new Promise((t,i)=>{let a=un+e,n=o.listen(a,()=>{console.log(gt.green.bold(`Server running on http://localhost:${a} to listen to OAuth2 callbacks`)),t({server:n,port:a})});n.on("error",s=>{s.code==="EADDRINUSE"&&e<dn-1?(console.log(gt.yellow.bold(`Port ${a} is in use, trying next available port.`)),n.close(),t(ht(o,e+1))):i(s)})})}var b="[waitForConsent]";async function bt(o,e,t){console.info(`${b} Starting OAuth2 consent workflow for client: ${t}`);let i=`${o}/oauth2/auth`,a=`${o}/oauth2/token`;console.info(`${b} Authorization URL: ${i}`),console.info(`${b} Token URL: ${a}`);let n=sn(),s=on(32).toString("hex");console.info(`${b} Generated state for CSRF protection`);let r={base:"",redirect:""},{code_verifier:p,code_challenge:l}=await cn();console.info(`${b} PKCE Challenge generated`);let c,N,H,_t=new Promise((x,_)=>{c=x,N=_});n.get("/",async(x,_)=>{let ce=gn({authUrl:i,clientId:t,redirectUri:r.redirect,scope:mn,state:s,codeChallenge:l,audience:fn});console.info(`${b} Redirecting to code URL for user consent`),_.redirect(ce)}),n.get("/callback",async(x,_)=>{if("error"in x.query){console.error(`${b} OAuth Error: error in callback`);let O=x.url.split("?")[1];_.redirect(`${e}?${O}`),N();return}if(x.query.state!==s){console.error(`${b} OAuth Error: Invalid state. Received state does not match.`);let O=encodeURIComponent("Invalid state parameter.");_.redirect(`${e}?error=invalid_request&error_description=${O}`),N();return}console.info(`${b} OAuth state validated`);let ce=hn({clientId:t,redirectUri:r.redirect,codeVerifier:p,code:x.query.code});try{console.info(`${b} Exchanging code for token`);let O=await ln(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:ce});if(!O.ok){console.error(`${b} OAuth Error: could not exchange code for token`);let Lt=O.url.split("?")[1];_.redirect(`${e}?${Lt}`),N();return}let Y=await O.json();console.info(`${b} Token exchange successful`),console.info(`${b} Token exchange successful. Details: `,{expires_in:Y.expires_in,scope:Y.scope,type:Y.token_type,token:"<secret>"}),H=Y.access_token,_.redirect("/success")}catch(O){console.error(`${b} Error exchanging token: ${O}`),_.redirect(`${e}?error=unkown&error_description=${encodeURIComponent("Unknown error during token exchange")}`),N()}}),n.get("/success",(x,_)=>{_.send(g("success_page.html")),H||(console.error("Token is undefined"),N()),c()});let pe;try{console.info(`${b} Starting local server to handle callbacks`);let x=await ht(n);pe=x.server,r.base=`http://localhost:${x.port}`,r.redirect=`${r.base}/callback`,console.info(`${b} Server started on ${r.base}`)}catch(x){console.error(`${b} Error starting server: ${x}`);return}try{return console.info(`${b} Opening user consent page`),await pn(r.base),console.info(`${b} Waiting for user consent...`),await _t,console.info(`${b} OAuth consent workflow completed successfully`),H||console.error("Token is undefined"),H}catch(x){console.error(`${b} Error in OAuth2 flow: ${x}`);return}finally{console.info(`${b} Closing the server...`),pe.closeAllConnections(),pe.close(),console.info(`${b} Server closed`)}}import{ChannelCredentials as Fe}from"@grpc/grpc-js";import{GrpcTransport as kt}from"@protobuf-ts/grpc-transport";import{RpcError as vt}from"@protobuf-ts/runtime-rpc";import yn from"archiver";import d from"chalk";import kn from"fast-glob";import W from"fs";import F from"path";import G from"sharp";import{PassThrough as vn}from"stream";import{stackIntercept as bn}from"@protobuf-ts/runtime-rpc";var K=class{constructor(e){this._transport=e}typeName=Z.typeName;methods=Z.methods;options=Z.options;uploadPlugin(e){let t=this.methods[0],i=this._transport.mergeOptions(e);return bn("clientStreaming",this._transport,t,i)}};async function Tn(o,e,t){switch(F.extname(o)){case".avif":return await G(o).resize(e,t).avif().toBuffer();case".gif":return await G(o).resize(e,t).gif().toBuffer();case".jpg":case".jpeg":case".jfif":case".pjpeg":case".pjp":return await G(o).resize(e,t).jpeg().toBuffer();case".png":return await G(o).resize(e,t).png().toBuffer();case".svg":return W.readFileSync(o);case".webp":return await G(o).resize(e,t).webp().toBuffer()}throw new Error("Invalid logotype")}function xn(o){let e=F.resolve(".");return F.resolve(o).startsWith(e)}function Rn(o){try{let e=F.resolve(o);return W.existsSync(e)?W.statSync(e).isDirectory():!1}catch(e){return console.error("Error checking if folder exists:",e),!1}}function yt(o){return new Promise((e,t)=>{Rn(o)||t(`The folder ${o} does not exist`);let i=yn("tar",{gzip:!0,zlib:{level:9}});i.on("error",s=>{t(s)});let a=[],n=new vn;n.on("data",s=>a.push(s)),n.on("end",()=>{let s=Buffer.concat(a);console.log(`${o} have been compressed successfully into a buffer.`),e(s)}),i.pipe(n),kn(F.join(o,"**","*")).then(s=>{for(let r of s)if(W.statSync(r).isFile()){let p=F.relative(o,r);i.file(r,{name:p})}i.finalize()}).catch(s=>t(s))})}async function Tt(o,e,t){console.log("Sending the plugin to the server");let i=e.uploadPlugin({meta:t}),a={};async function n(r,p,l){if(!r||a[r])return;if(!xn(r))throw new Error(`The file path is not safe: ${r}. It must be contained inside the manifest folder. Invalid manifest`);if(!W.existsSync(r))throw new Error(`The path does not exists: ${r}. Invalid manifest`);let c;p?(c=await Tn(r,p[0],p[1]),console.log(`Compressed: ${r} to ${p[0]}x${p[1]} size`)):l?c=l:c=W.readFileSync(r),console.log(`Sending: ${r}`);let N={data:{oneofKind:"file",file:{data:c,path:r}}};await Promise.race([i.requests.send(N),i.status]),a[r]=!0}let s={data:{oneofKind:"manifest",manifest:o}};if(await i.requests.send(s),await n("README.md"),await n("LICENSE.md"),await n(o.executors),await n(o.configurators),await n(o.logo,[80,80]),o.assets&&W.existsSync(o.assets)){let r=await yt(o.assets);await n(o.assets,void 0,r)}if(o.cdn&&W.existsSync(o.cdn)){let r=await yt(o.cdn);await n(o.cdn,void 0,r)}for(let r of o.vertices)await n(r.logo,[40,40]),await n(r.metadata),r.config&&await n(r.config);await i.requests.complete(),wn(await i.status,await i.headers,await i.trailers)}async function xt(o,e){let t=new kt({host:e,channelCredentials:Fe.createInsecure(),"grpc.default_compression_algorithm":2,"grpc.default_compression_level":2,"grpc.max_send_message_length":16777216}),i=new K(t);try{await Tt(o,i)}catch(a){a instanceof vt?wt(a):console.error(a),console.log(`For more information, use: ${d.blue("adaptkit help emulate")}`)}}async function Rt(o,e,t,i){let a=new kt({host:e,channelCredentials:i?Fe.createSsl(void 0,void 0,void 0,{checkServerIdentity:()=>{}}):Fe.createSsl(),"grpc.default_compression_algorithm":2,"grpc.default_compression_level":2,"grpc.max_send_message_length":16777216}),n=new K(a),s={authorization:`Bearer ${t}`};try{await Tt(o,n,s)}catch(r){r instanceof vt?wt(r):console.error(r),console.log(`For more information, use: ${d.blue("adaptkit help publish")}`)}}function wn(o,e,t){let i=d.green("=================================================="),a=d.bgGreen.black.bold(" RPC Success Details "),n=d.bold.white("Status Code: ")+d.greenBright.bold(o.code),s=o.detail?d.bold.white("Details: ")+d.greenBright(o.detail):d.gray(" No Details Provided"),r=d.bold.white(`Headers:
25
- `)+(e?d.blue(JSON.stringify(e,null,2)):d.gray(" No Metadata")),p=d.bold.white(`Trailers:
26
- `)+(t?d.blue(JSON.stringify(t,null,2)):d.gray(" No Trailers"));console.log(i),console.log(a),console.log(i),console.log(n),console.log(s),console.log(i),console.log(r),console.log(i),console.log(p),console.log(i),console.log(d.bgGreen.black.bold(" SUCCESS ")),console.log(i)}function wt(o){let e=d.red("=================================================="),t=d.bgRed.white.bold(" RPC Error Details "),i=d.bold.white("Name: ")+d.redBright.bold(o.name),a=d.bold.white("Message: ")+d.redBright(o.message),n=d.bold.white("Code: ")+d.redBright.bold(o.code),s=o.methodName?d.bold.white("Method Name: ")+d.yellowBright(o.methodName):d.gray("No Method Name"),r=o.serviceName?d.bold.white("Service Name: ")+d.yellowBright(o.serviceName):d.gray("No Service Name"),p=d.bold.white(`Metadata:
27
- `)+(o.meta?d.blue(JSON.stringify(o.meta,null,2)):d.gray(" No Metadata"));console.error(e),console.error(t),console.error(e),console.error(i),console.error(a),console.error(n),console.error(e),s&&console.error(s),r&&console.error(r),console.error(e),console.error(p),console.error(e),console.error(d.bgRed.white.bold(" ERROR ")),console.error(e)}async function On(o){try{return new URL(o),!0}catch{return!1}}function Pn(o){let e=parseInt(o,10);return e>0&&e<=65535}function Bt(o){let[e,t]=o.split(":");return Ln(e)?t!==void 0?Pn(t)?{isValid:!0,hostname:e,port:parseInt(t,10)}:{isValid:!1,hostname:e,port:parseInt(t,10)}:{isValid:!0,hostname:e}:{isValid:!1,hostname:e}}function Nn(){return m.yellowBright(Bn.textSync("Adaptkit"))}async function Dn(o,e){e.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help init")}`),process.exit(1)),await ft(o)}async function Wn(o){o.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help add")}`),process.exit(1));let e=q("manifest.json");e||(console.log(`For more information, use: ${m.blue("adaptkit help add")}`),process.exit(1)),await lt(e)}async function Vn(o,e,t,i,a,n){await On(e)||(console.error(m.red(`Error: The provided authority url is not a valid URL: ${e}`)),console.log(`For more information, use: ${m.blue("adaptkit help publish")}`),process.exit(1));let{isValid:s,hostname:r,port:p}=Bt(o);s||(console.error(m.red(`Error: The provided host or port is not valid: ${r}${p?":"+p:""}`)),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1)),n.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help publish")}`),process.exit(1));let l=q("manifest.json");l||(console.log(`For more information, use: ${m.blue("adaptkit help publish")}`),process.exit(1)),i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0");let c=await bt(e,a,t);c||(console.log("Could not fetch the acccess token. Terminating..."),process.exit(1)),await Rt(l,o,c,i)}async function $n(o,e){let{isValid:t,hostname:i,port:a}=Bt(o);t||(console.error(m.red(`Error: The provided host or port is not valid: ${i}${a?":"+a:""}`)),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1)),e.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1));let n=q("manifest.json");n||(console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`),process.exit(1)),await xt(n,o)}function Un(o,e){e.args.length>=1&&(console.error(m.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1));let t=q("manifest.json");t||(console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1));let i=Sn.parse(t.version);i||(console.error(m.red(`Error: The version in the manifest is not a valid semver version: ${t.version}`)),console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1)),o===null&&(console.error(m.red("You must provide either --patch --minor or --major to bump the version.")),console.log(`For more information, use: ${m.blue("adaptkit help version")}`),process.exit(1));let a=t.version;t.version=i.inc(o).toString(),_n.writeFileSync(En.join(process.cwd(),"manifest.json"),L.toJsonString(t,{enumAsInteger:!1,prettySpaces:2,emitDefaultValues:!1})),console.log(m.green(`Bumped the version from ${a} to ${t.version}`))}async function Mn(){In({pkg:k}).notify({isGlobal:!0,defer:!1}),P.name("Adaptkit").version("1.0.0").description("Unleash the power of seamless plugin development with Adaptkit, your premier CLI companion for Mochabug Adapt. Effortlessly create, manage and deploy plugins with finesse. Explore the full potential of Adaptkit at "+m.underline.blue("https://www.mochabug.com")).configureHelp({sortSubcommands:!0,sortOptions:!0,showGlobalOptions:!0,helpWidth:140});let e="./";P.command("init").option("-d, --dir <dir>",`Choose the directory to initiate your plugin's journey. Default: '${e}'`,e).description("Kickstart your plugin adventure. This command scaffolds a ready-to-go project structure.").action(({dir:t},i)=>Dn(t,i)),P.command("add").description("Expand your plugin's capabilities").action((t,i)=>Wn(i)),P.command("publish").option("-h, --host <host>",m.yellow("Warning: Primarily for development purposes"),"adapt-grpc-dev.mochabugapis.com").option("-a, --authority <authority>",m.yellow("Warning: Primarily for development purposes"),"https://auth-dev.mochabugapis.com").option("-c, --client <client>",m.yellow("Warning: Primarily for development purposes"),"2d711bbb-4b57-4ad5-8bf0-f2269de5b71d").option("-e, --error-url <errorUrl>",m.yellow("Warning: Primarily for development purposes"),"https://accounts-dev.mochabug.com/services/error").option("--insecure",m.red("Ignore SSL certificate errors (insecure)")).description("Ready for liftoff? Publish your plugin to your organization with this command.").action(({host:t,authority:i,client:a,insecure:n,errorUrl:s},r)=>Vn(t,i,a,n,s,r)),P.command("emulate").option("-h, --host <host>","Specify the URL to test your plugin in the emulator. Ideal for custom port configurations.","localhost:51001").description("Take your plugin for a test drive. Best used in conjunction with your build pipeline.").action(({host:t},i)=>$n(t,i)),P.command("version").option("--patch","Bump the manifest version to the next patch version").option("--minor","Bump the manifest version to the next minor version").option("--major","Bump the manifest version to the next major version").description("The version command can manipulate the version of the plugin manifest.").action(({major:t,minor:i,patch:a},n)=>Un(t?"major":i?"minor":a?"patch":null,n)),P.addHelpText("beforeAll",Nn()+`
28
- `),P.showHelpAfterError();try{await P.parseAsync(process.argv)}catch(t){console.error(t),console.error("An error occurred:",t.message)}}Mn();
25
+ };`}async function xo(e){let n=await Wa({message:"Type a new unused vertex name",transformer:i=>i.trim(),validate:i=>(i=i.trim(),e.vertices.filter(r=>r.name===i).length>0?!1:/^[_a-z][_a-z0-9]*$/.test(i))}),t=await Wo({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),o=await Ja({message:"Need a configurator for the vertex?"}),s;(o||t==="browser")&&(s=await Wo({message:"Choose frontend library",choices:[{name:"React",value:"react",description:"React with TypeScript"},{name:"None",value:"none",description:"I do it myself"}]})),console.log(zn.magenta("Creating new vertex templates..."));let a=De(".",n,t,o,e.vertices.map(i=>Jn(Hn,i)),s);e.vertices.push(Rn(Hn,a)),!e.configurators&&a.configurator&&(e.configurators="dist/configurators.js"),console.log(zn.magenta("Updating manifest...")),xa.writeFileSync("manifest.json",He(ne,e,{enumAsInteger:!1,prettySpaces:2})),console.log(zn.bgGreen("Success"))}import{confirm as Ra,input as Ro,select as Fo}from"@inquirer/prompts";import Eo from"chalk";import{execSync as Yo}from"child_process";import Fa from"fs";import{mkdirp as No}from"mkdirp";import E from"path";async function Ho(e){let n=await Ro({message:"Type plugin name",transformer:u=>u.trim().toLowerCase(),validate:u=>/^[_a-z][_a-z0-9]*$/.test(u)}),t=await Fo({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),o=await Ro({message:"Type a new unused vertex name",transformer:u=>u.trim().toLowerCase(),validate:u=>/^[_a-z][_a-z0-9]*$/.test(u)}),s=await Ra({message:"Need a configurator for the vertex?"}),a;(s||t==="browser")&&(a=await Fo({message:"Choose frontend library",choices:[{name:"React",value:"react",description:"React with TypeScript"},{name:"None",value:"none",description:"I do it myself"}]})),No.sync(e);let i=E.isAbsolute(e)?e:E.join(process.cwd(),e);h(E.join(i,".gitignore"),y("gitignore"));let r={name:n,version:"",private:!0,type:"module",scripts:{"build-client":`node -e "if(require('fs').existsSync('build-client.js')) require('child_process').execSync('node build-client.js', { stdio: 'inherit' })"`,"build-common":"rimraf dist && npm run build-client && node build.js","build-dev":"export PLUGINS_CDN=https://cdn-dev.mochabug.com/adapt/plugins && npm run build-common","build-prod":"export PLUGINS_CDN=https://cdn.mochabug.com/adapt/plugins && npm run build-common","build-emulate":"export PLUGINS_CDN=http://localhost:51002 && npm run build-common",build:"npm run build-dev",emulate:"npm run build-emulate && adaptkit emulate",add:"adaptkit add"},devDependencies:{unenv:"npm:unenv-nightly@*"}};h(E.join(i,"package.json"),JSON.stringify(r,null,2)),h(E.join(i,"README.md"),y("readme.md")),h(E.join(i,"LICENSE.md"),y("license.md")),Yo("npm install --save-dev @mochabug/adapt-plugin-typings typescript @cloudflare/unenv-preset @types/node esbuild rimraf glob",{cwd:i,stdio:"inherit"}),Yo("npm install @mochabug/adapt-plugin-toolkit",{cwd:i,stdio:"inherit"}),h(E.join(i,"global.d.ts"),y("global.d.ts")),h(E.join(i,"tsconfig.json"),y("tsconf.json")),h(E.join(i,"build.js"),y("build.js")),h(E.join(i,"inject.js"),y("inject.js"));let l=De(i,o,t,s,[],a);console.log(Eo.magenta("Creating manifest..."));let d={name:n,organization:"00000000-0000-0000-0000-000000000000",version:"0.1.0",label:ke(n),description:`A nice description of what ${n} does`,author:"John Doe",bugs:"bugs@foobar.com",homepage:"https://www.foobar.com",repository:"https://github.com",vertices:[l],executors:"dist/executors.js",pluginVariables:[],pluginOauth2:[],pluginMtls:[]};if(a==="react"&&(No.sync(E.join(e,"cdn")),d.cdn="cdn"),!l.metadata)throw new Error("This cannot happen");l.configurator&&(d.configurators="dist/configurators.js"),Fa.writeFileSync(E.join(i,"manifest.json"),JSON.stringify(d,null,2)),console.log(Eo.bgGreen("Success"))}import Mo from"chalk";import{randomBytes as Ea}from"crypto";import Ya from"express";import Na from"node-fetch";import Ha from"open";import Ma from"pkce-challenge";var za=51421,Ka=5,La="https://www.mochabugapis.com/auth/adapt/plugins.upload",wa="https://adapt-dev.mochabugapis.com";function va({clientId:e,redirectUri:n,scope:t,state:o,authUrl:s,codeChallenge:a,audience:i}){let r=new URL(s);return r.searchParams.set("response_type","code"),r.searchParams.set("client_id",e),r.searchParams.set("audience",i),r.searchParams.set("redirect_uri",n),r.searchParams.set("scope",t),r.searchParams.set("state",o),r.searchParams.set("code_challenge",a),r.searchParams.set("code_challenge_method","S256"),r.toString()}function Ua({redirectUri:e,codeVerifier:n,clientId:t,code:o}){let s=new URLSearchParams;return s.set("grant_type","authorization_code"),s.set("code_verifier",n),s.set("client_id",t),s.set("code",o),s.set("redirect_uri",e),s.toString()}function zo(e,n=0){return new Promise((t,o)=>{let s=za+n,a=e.listen(s,()=>{console.log(Mo.green.bold(`Server running on http://localhost:${s} to listen to OAuth2 callbacks`)),t({server:a,port:s})});a.on("error",i=>{i.code==="EADDRINUSE"&&n<Ka-1?(console.log(Mo.yellow.bold(`Port ${s} is in use, trying next available port.`)),a.close(),t(zo(e,n+1))):o(i)})})}var Z="[waitForConsent]";async function Ko(e,n,t){console.info(`${Z} Starting OAuth2 consent workflow for client: ${t}`);let o=`${e}/oauth2/auth`,s=`${e}/oauth2/token`;console.info(`${Z} Authorization URL: ${o}`),console.info(`${Z} Token URL: ${s}`);let a=Ya(),i=Ea(32).toString("hex");console.info(`${Z} Generated state for CSRF protection`);let r={base:"",redirect:""},{code_verifier:l,code_challenge:d}=await Ma();console.info(`${Z} PKCE Challenge generated`);let u,I,W,x=new Promise((G,R)=>{u=G,I=R});a.get("/",async(G,R)=>{let Qe=va({authUrl:o,clientId:t,redirectUri:r.redirect,scope:La,state:i,codeChallenge:d,audience:wa});console.info(`${Z} Redirecting to code URL for user consent`),R.redirect(Qe)}),a.get("/callback",async(G,R)=>{if("error"in G.query){console.error(`${Z} OAuth Error: error in callback`);let z=G.url.split("?")[1];R.redirect(`${n}?${z}`),I();return}if(G.query.state!==i){console.error(`${Z} OAuth Error: Invalid state. Received state does not match.`);let z=encodeURIComponent("Invalid state parameter.");R.redirect(`${n}?error=invalid_request&error_description=${z}`),I();return}console.info(`${Z} OAuth state validated`);let Qe=Ua({clientId:t,redirectUri:r.redirect,codeVerifier:l,code:G.query.code});try{console.info(`${Z} Exchanging code for token`);let z=await Na(s,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Qe});if(!z.ok){console.error(`${Z} OAuth Error: could not exchange code for token`);let _o=z.url.split("?")[1];R.redirect(`${n}?${_o}`),I();return}let pe=await z.json();console.info(`${Z} Token exchange successful`),console.info(`${Z} Token exchange successful. Details: `,{expires_in:pe.expires_in,scope:pe.scope,type:pe.token_type,token:"<secret>"}),W=pe.access_token,R.redirect("/success")}catch(z){console.error(`${Z} Error exchanging token: ${z}`),R.redirect(`${n}?error=unkown&error_description=${encodeURIComponent("Unknown error during token exchange")}`),I()}}),a.get("/success",(G,R)=>{R.send(y("success_page.html")),W||(console.error("Token is undefined"),I()),u()});let v;try{console.info(`${Z} Starting local server to handle callbacks`);let G=await zo(a);v=G.server,r.base=`http://localhost:${G.port}`,r.redirect=`${r.base}/callback`,console.info(`${Z} Server started on ${r.base}`)}catch(G){console.error(`${Z} Error starting server: ${G}`);return}try{return console.info(`${Z} Opening user consent page`),await Ha(r.base),console.info(`${Z} Waiting for user consent...`),await x,console.info(`${Z} OAuth consent workflow completed successfully`),W||console.error("Token is undefined"),W}catch(G){console.error(`${Z} Error in OAuth2 flow: ${G}`);return}finally{console.info(`${Z} Closing the server...`),v.closeAllConnections(),v.close(),console.info(`${Z} Server closed`)}}import{ConnectError as wo,createClient as vo}from"@connectrpc/connect";import{createGrpcTransport as Uo}from"@connectrpc/connect-node";import ka from"archiver";import m from"chalk";import Da from"fast-glob";import k from"fs";import te from"path";import be from"sharp";import{PassThrough as Qa}from"stream";async function Ta(e,n,t){switch(te.extname(e)){case".avif":return await be(e).resize(n,t).avif().toBuffer();case".gif":return await be(e).resize(n,t).gif().toBuffer();case".jpg":case".jpeg":case".jfif":case".pjpeg":case".pjp":return await be(e).resize(n,t).jpeg().toBuffer();case".png":return await be(e).resize(n,t).png().toBuffer();case".svg":return k.readFileSync(e);case".webp":return await be(e).resize(n,t).webp().toBuffer()}throw new Error("Invalid logotype")}function Pa(e){let n=te.resolve(".");return te.resolve(e).startsWith(n)}function _a(e){try{let n=te.resolve(e);return k.existsSync(n)?k.statSync(n).isDirectory():!1}catch(n){return console.error("Error checking if folder exists:",n),!1}}function Lo(e){return new Promise((n,t)=>{_a(e)||t(`The folder ${e} does not exist`);let o=ka("tar",{gzip:!0,zlib:{level:9}});o.on("error",i=>{t(i)});let s=[],a=new Qa;a.on("data",i=>s.push(i)),a.on("end",()=>{let i=Buffer.concat(s);console.log(`${e} have been compressed successfully into a buffer.`),n(i)}),o.pipe(a),Da(te.join(e,"**","*")).then(i=>{for(let r of i)if(k.statSync(r).isFile()){let l=te.relative(e,r);o.file(r,{name:l})}o.finalize()}).catch(i=>t(i))})}async function ko(e,n,t){let o={};async function s(r,l,d){if(!r||o[r])return;if(!Pa(r))throw new Error(`The file path is not safe: ${r}. It must be contained inside the manifest folder. Invalid manifest`);if(!k.existsSync(r))throw new Error(`The path does not exists: ${r}. Invalid manifest`);let u;return l?(u=await Ta(r,l[0],l[1]),console.log(`Compressed: ${r} to ${l[0]}x${l[1]} size`)):d?u=d:u=k.readFileSync(r),o[r]=!0,B(Nn,{data:{case:"file",value:{data:u,path:r}}})}let a=new Headers,i=new Headers;await n.uploadPlugin(async function*(){yield B(Nn,{data:{case:"manifest",value:e}});let r=[s("README.md"),s("LICENSE.md"),s(e.executors),s(e.configurators),s(e.logo,[80,80])];e.assets&&k.existsSync(e.assets)&&r.push(s(e.assets,void 0,await Lo(e.assets))),e.cdn&&k.existsSync(e.cdn)&&r.push(s(e.cdn,void 0,await Lo(e.cdn)));for(let l of e.vertices)r.push(s(l.logo,[40,40])),r.push(s(l.metadata)),l.config&&r.push(s(l.config));for await(let l of r)l&&(yield l)}(),{headers:t,onHeader:r=>{i=r},onTrailer:r=>{a=r}}),Oa(i,a)}async function Do(e,n){let t=vo(Mn,Uo({baseUrl:n}));try{await ko(e,t)}catch(o){o instanceof wo?To(o):console.error(o),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`)}}async function Qo(e,n,t,o){let s=vo(Mn,Uo({baseUrl:n})),a=new Headers({authorization:`Bearer ${t}`});try{await ko(e,s,a)}catch(i){i instanceof wo?To(i):console.error(i),console.log(`For more information, use: ${m.blue("adaptkit help publish")}`)}}function Oa(e,n){let t=m.green("=================================================="),o=m.bgGreen.black.bold(" RPC Success Details "),s=m.bold.white("Status Code: ")+m.greenBright.bold("OK"),a=m.bold.white("Details: ")+m.greenBright("The upload was successful"),i=m.bold.white(`Headers:
26
+ `)+(e?m.blue(JSON.stringify(e,null,2)):m.gray(" No Metadata")),r=m.bold.white(`Trailers:
27
+ `)+(n?m.blue(JSON.stringify(n,null,2)):m.gray(" No Trailers"));console.log(t),console.log(o),console.log(t),console.log(s),console.log(a),console.log(t),console.log(i),console.log(t),console.log(r),console.log(t),console.log(m.bgGreen.black.bold(" SUCCESS ")),console.log(t)}function To(e){let n=m.red("=================================================="),t=m.bgRed.white.bold(" RPC Error Details "),o=m.bold.white("Name: ")+m.redBright.bold(e.name),s=m.bold.white("Message: ")+m.redBright(e.message),a=m.bold.white("Code: ")+m.redBright.bold(e.code),i=e.methodName?m.bold.white("Method Name: ")+m.yellowBright(e.methodName):m.gray("No Method Name"),r=e.serviceName?m.bold.white("Service Name: ")+m.yellowBright(e.serviceName):m.gray("No Service Name"),l=m.bold.white(`Metadata:
28
+ `)+(e.metadata?m.blue(JSON.stringify([...e.metadata.entries()],null,2)):m.gray(" No Metadata"));console.error(n),console.error(t),console.error(n),console.error(o),console.error(s),console.error(a),console.error(n),i&&console.error(i),r&&console.error(r),console.error(n),console.error(l),console.error(n);let d=e.details;if(console.error(m.bold.white("Error Details:")),d.length===0)console.error(m.gray(" No error details"));else for(let u of d)console.error(m.red(JSON.stringify(u,null,2)));console.error(n),console.error(m.bgRed.white.bold(" ERROR ")),console.error(n)}async function oi(e){try{return new URL(e),!0}catch{return!1}}function si(e){let n=parseInt(e,10);return n>0&&n<=65535}function Po(e){let[n,t]=e.split(":");return qa(n)?t!==void 0?si(t)?{isValid:!0,hostname:n,port:parseInt(t,10)}:{isValid:!1,hostname:n,port:parseInt(t,10)}:{isValid:!0,hostname:n}:{isValid:!1,hostname:n}}function ai(){return b.yellowBright(ja.textSync("Adaptkit"))}async function ii(e,n){n.args.length>=1&&(console.error(b.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${b.blue("adaptkit help init")}`),process.exit(1)),await Ho(e)}async function ri(e){e.args.length>=1&&(console.error(b.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${b.blue("adaptkit help add")}`),process.exit(1));let n=ge("manifest.json");n||(console.log(`For more information, use: ${b.blue("adaptkit help add")}`),process.exit(1)),await xo(n)}async function ci(e,n,t,o,s,a){await oi(n)||(console.error(b.red(`Error: The provided authority url is not a valid URL: ${n}`)),console.log(`For more information, use: ${b.blue("adaptkit help publish")}`),process.exit(1));let{isValid:i,hostname:r,port:l}=Po(e);i||(console.error(b.red(`Error: The provided host or port is not valid: ${r}${l?":"+l:""}`)),console.log(`For more information, use: ${b.blue("adaptkit help emulate")}`),process.exit(1)),a.args.length>=1&&(console.error(b.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${b.blue("adaptkit help publish")}`),process.exit(1));let d=ge("manifest.json");d||(console.log(`For more information, use: ${b.blue("adaptkit help publish")}`),process.exit(1)),o&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0");let u=await Ko(n,s,t);u||(console.log("Could not fetch the acccess token. Terminating..."),process.exit(1)),await Qo(d,e,u,o)}async function li(e,n){let{isValid:t,hostname:o,port:s}=Po(e);t||(console.error(b.red(`Error: The provided host or port is not valid: ${o}${s?":"+s:""}`)),console.log(`For more information, use: ${b.blue("adaptkit help emulate")}`),process.exit(1)),n.args.length>=1&&(console.error(b.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${b.blue("adaptkit help emulate")}`),process.exit(1));let a=ge("manifest.json");a||(console.log(`For more information, use: ${b.blue("adaptkit help emulate")}`),process.exit(1)),await Do(a,e)}function di(e,n){n.args.length>=1&&(console.error(b.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${b.blue("adaptkit help version")}`),process.exit(1));let t=ge("manifest.json");t||(console.log(`For more information, use: ${b.blue("adaptkit help version")}`),process.exit(1));let o=ni.parse(t.version);o||(console.error(b.red(`Error: The version in the manifest is not a valid semver version: ${t.version}`)),console.log(`For more information, use: ${b.blue("adaptkit help version")}`),process.exit(1)),e===null&&(console.error(b.red("You must provide either --patch --minor or --major to bump the version.")),console.log(`For more information, use: ${b.blue("adaptkit help version")}`),process.exit(1));let s=t.version;t.version=o.inc(e).toString(),$a.writeFileSync(ei.join(process.cwd(),"manifest.json"),He(ne,t,{enumAsInteger:!1,prettySpaces:2})),console.log(b.green(`Bumped the version from ${s} to ${t.version}`))}async function ui(){ti({pkg:g}).notify({isGlobal:!0,defer:!1}),w.name("Adaptkit").version("1.0.0").description("Unleash the power of seamless plugin development with Adaptkit, your premier CLI companion for Mochabug Adapt. Effortlessly create, manage and deploy plugins with finesse. Explore the full potential of Adaptkit at "+b.underline.blue("https://www.mochabug.com")).configureHelp({sortSubcommands:!0,sortOptions:!0,showGlobalOptions:!0,helpWidth:140});let n="./";w.command("init").option("-d, --dir <dir>",`Choose the directory to initiate your plugin's journey. Default: '${n}'`,n).description("Kickstart your plugin adventure. This command scaffolds a ready-to-go project structure.").action(({dir:t},o)=>ii(t,o)),w.command("add").description("Expand your plugin's capabilities").action((t,o)=>ri(o)),w.command("publish").option("-h, --host <host>",b.yellow("Warning: Primarily for development purposes"),"adapt-grpc-dev.mochabugapis.com").option("-a, --authority <authority>",b.yellow("Warning: Primarily for development purposes"),"https://auth-dev.mochabugapis.com").option("-c, --client <client>",b.yellow("Warning: Primarily for development purposes"),"2d711bbb-4b57-4ad5-8bf0-f2269de5b71d").option("-e, --error-url <errorUrl>",b.yellow("Warning: Primarily for development purposes"),"https://accounts-dev.mochabug.com/services/error").option("--insecure",b.red("Ignore SSL certificate errors (insecure)")).description("Ready for liftoff? Publish your plugin to your organization with this command.").action(({host:t,authority:o,client:s,insecure:a,errorUrl:i},r)=>ci(t,o,s,a,i,r)),w.command("emulate").option("-h, --host <host>","Specify the URL to test your plugin in the emulator. Ideal for custom port configurations.","localhost:51001").description("Take your plugin for a test drive. Best used in conjunction with your build pipeline.").action(({host:t},o)=>li(t,o)),w.command("version").option("--patch","Bump the manifest version to the next patch version").option("--minor","Bump the manifest version to the next minor version").option("--major","Bump the manifest version to the next major version").description("The version command can manipulate the version of the plugin manifest.").action(({major:t,minor:o,patch:s},a)=>di(t?"major":o?"minor":s?"patch":null,a)),w.addHelpText("beforeAll",ai()+`
29
+ `),w.showHelpAfterError();try{await w.parseAsync(process.argv)}catch(t){console.error(t),console.error("An error occurred:",t.message)}}ui();
29
30
  //# sourceMappingURL=index.js.map