@hagicode/cli 0.1.0-dev.49.1.aa038f5 → 0.1.0-dev.50.1.674e23d
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/README.md +9 -6
- package/dist/chunks/{main-D5eiMFz8.js → main-BHYpWMTH.js} +127 -125
- package/dist/cli.js +1 -1
- package/dist/main.js +1 -1
- package/package.json +1 -1
- package/resources/saga/manifest.json +11 -9
- package/skills/hagi/SKILL.md +1 -0
- package/skills/hagi/references/cli-usage.md +1 -0
- package/skills/hagi/references/local-development.md +4 -2
- package/skills/hagi/references/saga.md +48 -15
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
var
|
|
2
|
-
`)}displayWidth(a){return o(a).length}styleTitle(a){return a}styleUsage(a){return a.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r==="[command]"?this.styleSubcommandText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleCommandText(r)).join(" ")}styleCommandDescription(a){return this.styleDescriptionText(a)}styleOptionDescription(a){return this.styleDescriptionText(a)}styleSubcommandDescription(a){return this.styleDescriptionText(a)}styleArgumentDescription(a){return this.styleDescriptionText(a)}styleDescriptionText(a){return a}styleOptionTerm(a){return this.styleOptionText(a)}styleSubcommandTerm(a){return a.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleSubcommandText(r)).join(" ")}styleArgumentTerm(a){return this.styleArgumentText(a)}styleOptionText(a){return a}styleArgumentText(a){return a}styleSubcommandText(a){return a}styleCommandText(a){return a}padWidth(a,r){return Math.max(r.longestOptionTermLength(a,r),r.longestGlobalOptionTermLength(a,r),r.longestSubcommandTermLength(a,r),r.longestArgumentTermLength(a,r))}preformatted(a){return/\n[^\S\r\n]/.test(a)}formatItem(a,r,i,s){const c=" ".repeat(2);if(!i)return c+a;const u=a.padEnd(r+a.length-s.displayWidth(a)),h=2,
|
|
1
|
+
var xl=Object.create,oi=Object.defineProperty,Kl=Object.getOwnPropertyDescriptor,zl=Object.getOwnPropertyNames,Ll=Object.getPrototypeOf,jl=Object.prototype.hasOwnProperty,ot=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Hl=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(var a=zl(t),r=0,i=a.length,s;r<i;r++)s=a[r],!jl.call(e,s)&&s!==n&&oi(e,s,{get:(l=>t[l]).bind(null,s),enumerable:!(o=Kl(t,s))||o.enumerable});return e},at=(e,t,n)=>(n=e!=null?xl(Ll(e)):{},Hl(t||!e||!e.__esModule?oi(n,"default",{value:e,enumerable:!0}):n,e));let R=require("node:path");R=at(R);let Y=require("node:fs");Y=at(Y);let Tl=require("node:os"),gt=require("node:zlib");gt=at(gt);let Zn=require("node:util"),Pn=require("node:http");Pn=at(Pn);let qn=require("node:https");qn=at(qn);let Re=require("node:http2");Re=at(Re);let Ql=require("node:fs/promises"),je=require("node:crypto"),ai=require("node:url");var Rn=ot((e=>{var t=class extends Error{constructor(o,a,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=a,this.exitCode=o,this.nestedError=void 0}},n=class extends t{constructor(o){super(1,"commander.invalidArgument",o),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};e.CommanderError=t,e.InvalidArgumentError=n})),Zo=ot((e=>{var{InvalidArgumentError:t}=Rn(),n=class{constructor(a,r){switch(this.description=r||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,a[0]){case"<":this.required=!0,this._name=a.slice(1,-1);break;case"[":this.required=!1,this._name=a.slice(1,-1);break;default:this.required=!0,this._name=a;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(a,r){return r===this.defaultValue||!Array.isArray(r)?[a]:(r.push(a),r)}default(a,r){return this.defaultValue=a,this.defaultValueDescription=r,this}argParser(a){return this.parseArg=a,this}choices(a){return this.argChoices=a.slice(),this.parseArg=(r,i)=>{if(!this.argChoices.includes(r))throw new t(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(r,i):r},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function o(a){const r=a.name()+(a.variadic===!0?"...":"");return a.required?"<"+r+">":"["+r+"]"}e.Argument=n,e.humanReadableArgName=o})),ri=ot((e=>{var{humanReadableArgName:t}=Zo(),n=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(a){this.helpWidth=this.helpWidth??a.helpWidth??80}visibleCommands(a){const r=a.commands.filter(s=>!s._hidden),i=a._getHelpCommand();return i&&!i._hidden&&r.push(i),this.sortSubcommands&&r.sort((s,l)=>s.name().localeCompare(l.name())),r}compareOptions(a,r){const i=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return i(a).localeCompare(i(r))}visibleOptions(a){const r=a.options.filter(s=>!s.hidden),i=a._getHelpOption();if(i&&!i.hidden){const s=i.short&&a._findOption(i.short),l=i.long&&a._findOption(i.long);!s&&!l?r.push(i):i.long&&!l?r.push(a.createOption(i.long,i.description)):i.short&&!s&&r.push(a.createOption(i.short,i.description))}return this.sortOptions&&r.sort(this.compareOptions),r}visibleGlobalOptions(a){if(!this.showGlobalOptions)return[];const r=[];for(let i=a.parent;i;i=i.parent){const s=i.options.filter(l=>!l.hidden);r.push(...s)}return this.sortOptions&&r.sort(this.compareOptions),r}visibleArguments(a){return a._argsDescription&&a.registeredArguments.forEach(r=>{r.description=r.description||a._argsDescription[r.name()]||""}),a.registeredArguments.find(r=>r.description)?a.registeredArguments:[]}subcommandTerm(a){const r=a.registeredArguments.map(i=>t(i)).join(" ");return a._name+(a._aliases[0]?"|"+a._aliases[0]:"")+(a.options.length?" [options]":"")+(r?" "+r:"")}optionTerm(a){return a.flags}argumentTerm(a){return a.name()}longestSubcommandTermLength(a,r){return r.visibleCommands(a).reduce((i,s)=>Math.max(i,this.displayWidth(r.styleSubcommandTerm(r.subcommandTerm(s)))),0)}longestOptionTermLength(a,r){return r.visibleOptions(a).reduce((i,s)=>Math.max(i,this.displayWidth(r.styleOptionTerm(r.optionTerm(s)))),0)}longestGlobalOptionTermLength(a,r){return r.visibleGlobalOptions(a).reduce((i,s)=>Math.max(i,this.displayWidth(r.styleOptionTerm(r.optionTerm(s)))),0)}longestArgumentTermLength(a,r){return r.visibleArguments(a).reduce((i,s)=>Math.max(i,this.displayWidth(r.styleArgumentTerm(r.argumentTerm(s)))),0)}commandUsage(a){let r=a._name;a._aliases[0]&&(r=r+"|"+a._aliases[0]);let i="";for(let s=a.parent;s;s=s.parent)i=s.name()+" "+i;return i+r+" "+a.usage()}commandDescription(a){return a.description()}subcommandDescription(a){return a.summary()||a.description()}optionDescription(a){const r=[];if(a.argChoices&&r.push(`choices: ${a.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),a.defaultValue!==void 0&&(a.required||a.optional||a.isBoolean()&&typeof a.defaultValue=="boolean")&&r.push(`default: ${a.defaultValueDescription||JSON.stringify(a.defaultValue)}`),a.presetArg!==void 0&&a.optional&&r.push(`preset: ${JSON.stringify(a.presetArg)}`),a.envVar!==void 0&&r.push(`env: ${a.envVar}`),r.length>0){const i=`(${r.join(", ")})`;return a.description?`${a.description} ${i}`:i}return a.description}argumentDescription(a){const r=[];if(a.argChoices&&r.push(`choices: ${a.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),a.defaultValue!==void 0&&r.push(`default: ${a.defaultValueDescription||JSON.stringify(a.defaultValue)}`),r.length>0){const i=`(${r.join(", ")})`;return a.description?`${a.description} ${i}`:i}return a.description}formatItemList(a,r,i){return r.length===0?[]:[i.styleTitle(a),...r,""]}groupItems(a,r,i){const s=new Map;return a.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[])}),r.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[]),s.get(c).push(l)}),s}formatHelp(a,r){const i=r.padWidth(a,r),s=r.helpWidth??80;function l(A,Z){return r.formatItem(A,i,Z,r)}let c=[`${r.styleTitle("Usage:")} ${r.styleUsage(r.commandUsage(a))}`,""];const u=r.commandDescription(a);u.length>0&&(c=c.concat([r.boxWrap(r.styleCommandDescription(u),s),""]));const h=r.visibleArguments(a).map(A=>l(r.styleArgumentTerm(r.argumentTerm(A)),r.styleArgumentDescription(r.argumentDescription(A))));if(c=c.concat(this.formatItemList("Arguments:",h,r)),this.groupItems(a.options,r.visibleOptions(a),A=>A.helpGroupHeading??"Options:").forEach((A,Z)=>{const G=A.map(S=>l(r.styleOptionTerm(r.optionTerm(S)),r.styleOptionDescription(r.optionDescription(S))));c=c.concat(this.formatItemList(Z,G,r))}),r.showGlobalOptions){const A=r.visibleGlobalOptions(a).map(Z=>l(r.styleOptionTerm(r.optionTerm(Z)),r.styleOptionDescription(r.optionDescription(Z))));c=c.concat(this.formatItemList("Global Options:",A,r))}return this.groupItems(a.commands,r.visibleCommands(a),A=>A.helpGroup()||"Commands:").forEach((A,Z)=>{const G=A.map(S=>l(r.styleSubcommandTerm(r.subcommandTerm(S)),r.styleSubcommandDescription(r.subcommandDescription(S))));c=c.concat(this.formatItemList(Z,G,r))}),c.join(`
|
|
2
|
+
`)}displayWidth(a){return o(a).length}styleTitle(a){return a}styleUsage(a){return a.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r==="[command]"?this.styleSubcommandText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleCommandText(r)).join(" ")}styleCommandDescription(a){return this.styleDescriptionText(a)}styleOptionDescription(a){return this.styleDescriptionText(a)}styleSubcommandDescription(a){return this.styleDescriptionText(a)}styleArgumentDescription(a){return this.styleDescriptionText(a)}styleDescriptionText(a){return a}styleOptionTerm(a){return this.styleOptionText(a)}styleSubcommandTerm(a){return a.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleSubcommandText(r)).join(" ")}styleArgumentTerm(a){return this.styleArgumentText(a)}styleOptionText(a){return a}styleArgumentText(a){return a}styleSubcommandText(a){return a}styleCommandText(a){return a}padWidth(a,r){return Math.max(r.longestOptionTermLength(a,r),r.longestGlobalOptionTermLength(a,r),r.longestSubcommandTermLength(a,r),r.longestArgumentTermLength(a,r))}preformatted(a){return/\n[^\S\r\n]/.test(a)}formatItem(a,r,i,s){const c=" ".repeat(2);if(!i)return c+a;const u=a.padEnd(r+a.length-s.displayWidth(a)),h=2,A=(this.helpWidth??80)-r-h-2;let Z;return A<this.minWidthToWrap||s.preformatted(i)?Z=i:Z=s.boxWrap(i,A).replace(/\n/g,`
|
|
3
3
|
`+" ".repeat(r+h)),c+u+" ".repeat(h)+Z.replace(/\n/g,`
|
|
4
|
-
${c}`)}boxWrap(a,r){if(r<this.minWidthToWrap)return a;const i=a.split(/\r\n|\n/),s=/[\s]*[^\s]+/g,l=[];return i.forEach(c=>{const u=c.match(s);if(u===null){l.push("");return}let h=[u.shift()],
|
|
5
|
-
`)}};function o(a){return a.replace(/\x1b\[\d*(;\d*)*m/g,"")}e.Help=n,e.stripColor=o})),
|
|
4
|
+
${c}`)}boxWrap(a,r){if(r<this.minWidthToWrap)return a;const i=a.split(/\r\n|\n/),s=/[\s]*[^\s]+/g,l=[];return i.forEach(c=>{const u=c.match(s);if(u===null){l.push("");return}let h=[u.shift()],A=this.displayWidth(h[0]);u.forEach(Z=>{const G=this.displayWidth(Z);if(A+G<=r){h.push(Z),A+=G;return}l.push(h.join(""));const S=Z.trimStart();h=[S],A=this.displayWidth(S)}),l.push(h.join(""))}),l.join(`
|
|
5
|
+
`)}};function o(a){return a.replace(/\x1b\[\d*(;\d*)*m/g,"")}e.Help=n,e.stripColor=o})),ii=ot((e=>{var{InvalidArgumentError:t}=Rn(),n=class{constructor(i,s){this.flags=i,this.description=s||"",this.required=i.includes("<"),this.optional=i.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(i),this.mandatory=!1;const l=r(i);this.short=l.shortFlag,this.long=l.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(i,s){return this.defaultValue=i,this.defaultValueDescription=s,this}preset(i){return this.presetArg=i,this}conflicts(i){return this.conflictsWith=this.conflictsWith.concat(i),this}implies(i){let s=i;return typeof i=="string"&&(s={[i]:!0}),this.implied=Object.assign(this.implied||{},s),this}env(i){return this.envVar=i,this}argParser(i){return this.parseArg=i,this}makeOptionMandatory(i=!0){return this.mandatory=!!i,this}hideHelp(i=!0){return this.hidden=!!i,this}_collectValue(i,s){return s===this.defaultValue||!Array.isArray(s)?[i]:(s.push(i),s)}choices(i){return this.argChoices=i.slice(),this.parseArg=(s,l)=>{if(!this.argChoices.includes(s))throw new t(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(s,l):s},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?a(this.name().replace(/^no-/,"")):a(this.name())}helpGroup(i){return this.helpGroupHeading=i,this}is(i){return this.short===i||this.long===i}isBoolean(){return!this.required&&!this.optional&&!this.negate}},o=class{constructor(i){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,i.forEach(s=>{s.negate?this.negativeOptions.set(s.attributeName(),s):this.positiveOptions.set(s.attributeName(),s)}),this.negativeOptions.forEach((s,l)=>{this.positiveOptions.has(l)&&this.dualOptions.add(l)})}valueFromOption(i,s){const l=s.attributeName();if(!this.dualOptions.has(l))return!0;const c=this.negativeOptions.get(l).presetArg,u=c!==void 0?c:!1;return s.negate===(u===i)}};function a(i){return i.split("-").reduce((s,l)=>s+l[0].toUpperCase()+l.slice(1))}function r(i){let s,l;const c=/^-[^-]$/,u=/^--[^-]/,h=i.split(/[ |,]+/).concat("guard");if(c.test(h[0])&&(s=h.shift()),u.test(h[0])&&(l=h.shift()),!s&&c.test(h[0])&&(s=h.shift()),!s&&u.test(h[0])&&(s=l,l=h.shift()),h[0].startsWith("-")){const A=h[0],Z=`option creation failed due to '${A}' in option flags '${i}'`;throw/^-[^-][^-]/.test(A)?new Error(`${Z}
|
|
6
6
|
- a short flag is a single dash and a single character
|
|
7
7
|
- either use a single dash and a single character (for a short flag)
|
|
8
|
-
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`):c.test(
|
|
9
|
-
- too many short flags`):u.test(
|
|
8
|
+
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`):c.test(A)?new Error(`${Z}
|
|
9
|
+
- too many short flags`):u.test(A)?new Error(`${Z}
|
|
10
10
|
- too many long flags`):new Error(`${Z}
|
|
11
|
-
- unrecognised flag format`)}if(s===void 0&&l===void 0)throw new Error(`option creation failed due to no flags found in '${i}'.`);return{shortFlag:s,longFlag:l}}e.Option=n,e.DualOptions=o})),
|
|
11
|
+
- unrecognised flag format`)}if(s===void 0&&l===void 0)throw new Error(`option creation failed due to no flags found in '${i}'.`);return{shortFlag:s,longFlag:l}}e.Option=n,e.DualOptions=o})),Ml=ot((e=>{var t=3;function n(a,r){if(Math.abs(a.length-r.length)>t)return Math.max(a.length,r.length);const i=[];for(let s=0;s<=a.length;s++)i[s]=[s];for(let s=0;s<=r.length;s++)i[0][s]=s;for(let s=1;s<=r.length;s++)for(let l=1;l<=a.length;l++){let c=1;a[l-1]===r[s-1]?c=0:c=1,i[l][s]=Math.min(i[l-1][s]+1,i[l][s-1]+1,i[l-1][s-1]+c),l>1&&s>1&&a[l-1]===r[s-2]&&a[l-2]===r[s-1]&&(i[l][s]=Math.min(i[l][s],i[l-2][s-2]+1))}return i[a.length][r.length]}function o(a,r){if(!r||r.length===0)return"";r=Array.from(new Set(r));const i=a.startsWith("--");i&&(a=a.slice(2),r=r.map(u=>u.slice(2)));let s=[],l=t;const c=.4;return r.forEach(u=>{if(u.length<=1)return;const h=n(a,u),A=Math.max(a.length,u.length);(A-h)/A>c&&(h<l?(l=h,s=[u]):h===l&&s.push(u))}),s.sort((u,h)=>u.localeCompare(h)),i&&(s=s.map(u=>`--${u}`)),s.length>1?`
|
|
12
12
|
(Did you mean one of ${s.join(", ")}?)`:s.length===1?`
|
|
13
|
-
(Did you mean ${s[0]}?)`:""}e.suggestSimilar=o})),
|
|
14
|
-
- specify the name in Command constructor or using .name()`);return m=m||{},m.isDefault&&(this._defaultCommandName=d._name),(m.noHelp||m.hidden)&&(d._hidden=!0),this._registerCommand(d),d.parent=this,d._checkForBrokenPassThrough(),this}createArgument(d,m){return new i(d,m)}argument(d,m,p,g){const
|
|
15
|
-
Expecting one of '${p.join("', '")}'`);return this._lifeCycleHooks[d]?this._lifeCycleHooks[d].push(m):this._lifeCycleHooks[d]=[m],this}exitOverride(d){return d?this._exitCallback=d:this._exitCallback=m=>{if(m.code!=="commander.executeSubCommandAsync")throw m},this}_exit(d,m,p){this._exitCallback&&this._exitCallback(new l(d,m,p)),r.exit(d)}action(d){const m=p=>{const g=this.registeredArguments.length,
|
|
16
|
-
- already used by option '${m.flags}'`)}this._initOptionGroup(d),this.options.push(d)}_registerCommand(d){const m=g=>[g.name()].concat(g.aliases()),p=m(d).find(g=>this._findCommand(g));if(p){const g=m(this._findCommand(p)).join("|"),
|
|
13
|
+
(Did you mean ${s[0]}?)`:""}e.suggestSimilar=o})),Ol=ot((e=>{var t=require("node:events").EventEmitter,n=require("node:child_process"),o=require("node:path"),a=require("node:fs"),r=require("node:process"),{Argument:i,humanReadableArgName:s}=Zo(),{CommanderError:l}=Rn(),{Help:c,stripColor:u}=ri(),{Option:h,DualOptions:A}=ii(),{suggestSimilar:Z}=Ml(),G=class si extends t{constructor(d){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=d||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:m=>r.stdout.write(m),writeErr:m=>r.stderr.write(m),outputError:(m,p)=>p(m),getOutHelpWidth:()=>r.stdout.isTTY?r.stdout.columns:void 0,getErrHelpWidth:()=>r.stderr.isTTY?r.stderr.columns:void 0,getOutHasColors:()=>X()??(r.stdout.isTTY&&r.stdout.hasColors?.()),getErrHasColors:()=>X()??(r.stderr.isTTY&&r.stderr.hasColors?.()),stripColor:m=>u(m)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(d){return this._outputConfiguration=d._outputConfiguration,this._helpOption=d._helpOption,this._helpCommand=d._helpCommand,this._helpConfiguration=d._helpConfiguration,this._exitCallback=d._exitCallback,this._storeOptionsAsProperties=d._storeOptionsAsProperties,this._combineFlagAndOptionalValue=d._combineFlagAndOptionalValue,this._allowExcessArguments=d._allowExcessArguments,this._enablePositionalOptions=d._enablePositionalOptions,this._showHelpAfterError=d._showHelpAfterError,this._showSuggestionAfterError=d._showSuggestionAfterError,this}_getCommandAndAncestors(){const d=[];for(let m=this;m;m=m.parent)d.push(m);return d}command(d,m,p){let g=m,f=p;typeof g=="object"&&g!==null&&(f=g,g=null),f=f||{};const[,V,B]=d.match(/([^ ]+) *(.*)/),K=this.createCommand(V);return g&&(K.description(g),K._executableHandler=!0),f.isDefault&&(this._defaultCommandName=K._name),K._hidden=!!(f.noHelp||f.hidden),K._executableFile=f.executableFile||null,B&&K.arguments(B),this._registerCommand(K),K.parent=this,K.copyInheritedSettings(this),g?this:K}createCommand(d){return new si(d)}createHelp(){return Object.assign(new c,this.configureHelp())}configureHelp(d){return d===void 0?this._helpConfiguration:(this._helpConfiguration=d,this)}configureOutput(d){return d===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...d},this)}showHelpAfterError(d=!0){return typeof d!="string"&&(d=!!d),this._showHelpAfterError=d,this}showSuggestionAfterError(d=!0){return this._showSuggestionAfterError=!!d,this}addCommand(d,m){if(!d._name)throw new Error(`Command passed to .addCommand() must have a name
|
|
14
|
+
- specify the name in Command constructor or using .name()`);return m=m||{},m.isDefault&&(this._defaultCommandName=d._name),(m.noHelp||m.hidden)&&(d._hidden=!0),this._registerCommand(d),d.parent=this,d._checkForBrokenPassThrough(),this}createArgument(d,m){return new i(d,m)}argument(d,m,p,g){const f=this.createArgument(d,m);return typeof p=="function"?f.default(g).argParser(p):f.default(p),this.addArgument(f),this}arguments(d){return d.trim().split(/ +/).forEach(m=>{this.argument(m)}),this}addArgument(d){const m=this.registeredArguments.slice(-1)[0];if(m?.variadic)throw new Error(`only the last argument can be variadic '${m.name()}'`);if(d.required&&d.defaultValue!==void 0&&d.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${d.name()}'`);return this.registeredArguments.push(d),this}helpCommand(d,m){if(typeof d=="boolean")return this._addImplicitHelpCommand=d,d&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;const[,p,g]=(d??"help [command]").match(/([^ ]+) *(.*)/),f=m??"display help for command",V=this.createCommand(p);return V.helpOption(!1),g&&V.arguments(g),f&&V.description(f),this._addImplicitHelpCommand=!0,this._helpCommand=V,(d||m)&&this._initCommandGroup(V),this}addHelpCommand(d,m){return typeof d!="object"?(this.helpCommand(d,m),this):(this._addImplicitHelpCommand=!0,this._helpCommand=d,this._initCommandGroup(d),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(d,m){const p=["preSubcommand","preAction","postAction"];if(!p.includes(d))throw new Error(`Unexpected value for event passed to hook : '${d}'.
|
|
15
|
+
Expecting one of '${p.join("', '")}'`);return this._lifeCycleHooks[d]?this._lifeCycleHooks[d].push(m):this._lifeCycleHooks[d]=[m],this}exitOverride(d){return d?this._exitCallback=d:this._exitCallback=m=>{if(m.code!=="commander.executeSubCommandAsync")throw m},this}_exit(d,m,p){this._exitCallback&&this._exitCallback(new l(d,m,p)),r.exit(d)}action(d){const m=p=>{const g=this.registeredArguments.length,f=p.slice(0,g);return this._storeOptionsAsProperties?f[g]=this:f[g]=this.opts(),f.push(this),d.apply(this,f)};return this._actionHandler=m,this}createOption(d,m){return new h(d,m)}_callParseArg(d,m,p,g){try{return d.parseArg(m,p)}catch(f){if(f.code==="commander.invalidArgument"){const V=`${g} ${f.message}`;this.error(V,{exitCode:f.exitCode,code:f.code})}throw f}}_registerOption(d){const m=d.short&&this._findOption(d.short)||d.long&&this._findOption(d.long);if(m){const p=d.long&&this._findOption(d.long)?d.long:d.short;throw new Error(`Cannot add option '${d.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${p}'
|
|
16
|
+
- already used by option '${m.flags}'`)}this._initOptionGroup(d),this.options.push(d)}_registerCommand(d){const m=g=>[g.name()].concat(g.aliases()),p=m(d).find(g=>this._findCommand(g));if(p){const g=m(this._findCommand(p)).join("|"),f=m(d).join("|");throw new Error(`cannot add command '${f}' as already have command '${g}'`)}this._initCommandGroup(d),this.commands.push(d)}addOption(d){this._registerOption(d);const m=d.name(),p=d.attributeName();if(d.negate){const f=d.long.replace(/^--no-/,"--");this._findOption(f)||this.setOptionValueWithSource(p,d.defaultValue===void 0?!0:d.defaultValue,"default")}else d.defaultValue!==void 0&&this.setOptionValueWithSource(p,d.defaultValue,"default");const g=(f,V,B)=>{f==null&&d.presetArg!==void 0&&(f=d.presetArg);const K=this.getOptionValue(p);f!==null&&d.parseArg?f=this._callParseArg(d,f,K,V):f!==null&&d.variadic&&(f=d._collectValue(f,K)),f==null&&(d.negate?f=!1:d.isBoolean()||d.optional?f=!0:f=""),this.setOptionValueWithSource(p,f,B)};return this.on("option:"+m,f=>{g(f,`error: option '${d.flags}' argument '${f}' is invalid.`,"cli")}),d.envVar&&this.on("optionEnv:"+m,f=>{g(f,`error: option '${d.flags}' value '${f}' from env '${d.envVar}' is invalid.`,"env")}),this}_optionEx(d,m,p,g,f){if(typeof m=="object"&&m instanceof h)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");const V=this.createOption(m,p);if(V.makeOptionMandatory(!!d.mandatory),typeof g=="function")V.default(f).argParser(g);else if(g instanceof RegExp){const B=g;g=(K,O)=>{const F=B.exec(K);return F?F[0]:O},V.default(f).argParser(g)}else V.default(g);return this.addOption(V)}option(d,m,p,g){return this._optionEx({},d,m,p,g)}requiredOption(d,m,p,g){return this._optionEx({mandatory:!0},d,m,p,g)}combineFlagAndOptionalValue(d=!0){return this._combineFlagAndOptionalValue=!!d,this}allowUnknownOption(d=!0){return this._allowUnknownOption=!!d,this}allowExcessArguments(d=!0){return this._allowExcessArguments=!!d,this}enablePositionalOptions(d=!0){return this._enablePositionalOptions=!!d,this}passThroughOptions(d=!0){return this._passThroughOptions=!!d,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(d=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!d,this}getOptionValue(d){return this._storeOptionsAsProperties?this[d]:this._optionValues[d]}setOptionValue(d,m){return this.setOptionValueWithSource(d,m,void 0)}setOptionValueWithSource(d,m,p){return this._storeOptionsAsProperties?this[d]=m:this._optionValues[d]=m,this._optionValueSources[d]=p,this}getOptionValueSource(d){return this._optionValueSources[d]}getOptionValueSourceWithGlobals(d){let m;return this._getCommandAndAncestors().forEach(p=>{p.getOptionValueSource(d)!==void 0&&(m=p.getOptionValueSource(d))}),m}_prepareUserArgs(d,m){if(d!==void 0&&!Array.isArray(d))throw new Error("first parameter to parse must be array or undefined");if(m=m||{},d===void 0&&m.from===void 0){r.versions?.electron&&(m.from="electron");const g=r.execArgv??[];(g.includes("-e")||g.includes("--eval")||g.includes("-p")||g.includes("--print"))&&(m.from="eval")}d===void 0&&(d=r.argv),this.rawArgs=d.slice();let p;switch(m.from){case void 0:case"node":this._scriptPath=d[1],p=d.slice(2);break;case"electron":r.defaultApp?(this._scriptPath=d[1],p=d.slice(2)):p=d.slice(1);break;case"user":p=d.slice(0);break;case"eval":p=d.slice(1);break;default:throw new Error(`unexpected parse option { from: '${m.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",p}parse(d,m){this._prepareForParse();const p=this._prepareUserArgs(d,m);return this._parseCommand([],p),this}async parseAsync(d,m){this._prepareForParse();const p=this._prepareUserArgs(d,m);return await this._parseCommand([],p),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
|
|
17
17
|
- either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(d,m,p){if(a.existsSync(d))return;const g=`'${d}' does not exist
|
|
18
18
|
- if '${p}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
19
19
|
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
20
|
-
- ${m?`searched for local subcommand relative to directory '${m}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory"}`;throw new Error(g)}_executeSubCommand(d,m){m=m.slice();let p=!1;const g=[".js",".ts",".tsx",".mjs",".cjs"];function
|
|
20
|
+
- ${m?`searched for local subcommand relative to directory '${m}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory"}`;throw new Error(g)}_executeSubCommand(d,m){m=m.slice();let p=!1;const g=[".js",".ts",".tsx",".mjs",".cjs"];function f(F,L){const ee=o.resolve(F,L);if(a.existsSync(ee))return ee;if(g.includes(o.extname(L)))return;const Na=g.find(Jl=>a.existsSync(`${ee}${Jl}`));if(Na)return`${ee}${Na}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let V=d._executableFile||`${this._name}-${d._name}`,B=this._executableDir||"";if(this._scriptPath){let F;try{F=a.realpathSync(this._scriptPath)}catch{F=this._scriptPath}B=o.resolve(o.dirname(F),B)}if(B){let F=f(B,V);if(!F&&!d._executableFile&&this._scriptPath){const L=o.basename(this._scriptPath,o.extname(this._scriptPath));L!==this._name&&(F=f(B,`${L}-${d._name}`))}V=F||V}p=g.includes(o.extname(V));let K;r.platform!=="win32"?p?(m.unshift(V),m=S(r.execArgv).concat(m),K=n.spawn(r.argv[0],m,{stdio:"inherit"})):K=n.spawn(V,m,{stdio:"inherit"}):(this._checkForMissingExecutable(V,B,d._name),m.unshift(V),m=S(r.execArgv).concat(m),K=n.spawn(r.execPath,m,{stdio:"inherit"})),K.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(F=>{r.on(F,()=>{K.killed===!1&&K.exitCode===null&&K.kill(F)})});const O=this._exitCallback;K.on("close",F=>{F=F??1,O?O(new l(F,"commander.executeSubCommandAsync","(close)")):r.exit(F)}),K.on("error",F=>{if(F.code==="ENOENT")this._checkForMissingExecutable(V,B,d._name);else if(F.code==="EACCES")throw new Error(`'${V}' not executable`);if(!O)r.exit(1);else{const L=new l(1,"commander.executeSubCommandAsync","(error)");L.nestedError=F,O(L)}}),this.runningCommand=K}_dispatchSubcommand(d,m,p){const g=this._findCommand(d);g||this.help({error:!0}),g._prepareForParse();let f;return f=this._chainOrCallSubCommandHook(f,g,"preSubcommand"),f=this._chainOrCall(f,()=>{if(g._executableHandler)this._executeSubCommand(g,m.concat(p));else return g._parseCommand(m,p)}),f}_dispatchHelpCommand(d){d||this.help();const m=this._findCommand(d);return m&&!m._executableHandler&&m.help(),this._dispatchSubcommand(d,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((d,m)=>{d.required&&this.args[m]==null&&this.missingArgument(d.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){const d=(p,g,f)=>{let V=g;if(g!==null&&p.parseArg){const B=`error: command-argument value '${g}' is invalid for argument '${p.name()}'.`;V=this._callParseArg(p,g,f,B)}return V};this._checkNumberOfArguments();const m=[];this.registeredArguments.forEach((p,g)=>{let f=p.defaultValue;p.variadic?g<this.args.length?(f=this.args.slice(g),p.parseArg&&(f=f.reduce((V,B)=>d(p,B,V),p.defaultValue))):f===void 0&&(f=[]):g<this.args.length&&(f=this.args[g],p.parseArg&&(f=d(p,f,p.defaultValue))),m[g]=f}),this.processedArgs=m}_chainOrCall(d,m){return d?.then&&typeof d.then=="function"?d.then(()=>m()):m()}_chainOrCallHooks(d,m){let p=d;const g=[];return this._getCommandAndAncestors().reverse().filter(f=>f._lifeCycleHooks[m]!==void 0).forEach(f=>{f._lifeCycleHooks[m].forEach(V=>{g.push({hookedCommand:f,callback:V})})}),m==="postAction"&&g.reverse(),g.forEach(f=>{p=this._chainOrCall(p,()=>f.callback(f.hookedCommand,this))}),p}_chainOrCallSubCommandHook(d,m,p){let g=d;return this._lifeCycleHooks[p]!==void 0&&this._lifeCycleHooks[p].forEach(f=>{g=this._chainOrCall(g,()=>f(this,m))}),g}_parseCommand(d,m){const p=this.parseOptions(m);if(this._parseOptionsEnv(),this._parseOptionsImplied(),d=d.concat(p.operands),m=p.unknown,this.args=d.concat(m),d&&this._findCommand(d[0]))return this._dispatchSubcommand(d[0],d.slice(1),m);if(this._getHelpCommand()&&d[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(d[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(m),this._dispatchSubcommand(this._defaultCommandName,d,m);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(p.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();const g=()=>{p.unknown.length>0&&this.unknownOption(p.unknown[0])},f=`command:${this.name()}`;if(this._actionHandler){g(),this._processArguments();let V;return V=this._chainOrCallHooks(V,"preAction"),V=this._chainOrCall(V,()=>this._actionHandler(this.processedArgs)),this.parent&&(V=this._chainOrCall(V,()=>{this.parent.emit(f,d,m)})),V=this._chainOrCallHooks(V,"postAction"),V}if(this.parent?.listenerCount(f))g(),this._processArguments(),this.parent.emit(f,d,m);else if(d.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",d,m);this.listenerCount("command:*")?this.emit("command:*",d,m):this.commands.length?this.unknownCommand():(g(),this._processArguments())}else this.commands.length?(g(),this.help({error:!0})):(g(),this._processArguments())}_findCommand(d){if(d)return this.commands.find(m=>m._name===d||m._aliases.includes(d))}_findOption(d){return this.options.find(m=>m.is(d))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(d=>{d.options.forEach(m=>{m.mandatory&&d.getOptionValue(m.attributeName())===void 0&&d.missingMandatoryOptionValue(m)})})}_checkForConflictingLocalOptions(){const d=this.options.filter(m=>{const p=m.attributeName();return this.getOptionValue(p)===void 0?!1:this.getOptionValueSource(p)!=="default"});d.filter(m=>m.conflictsWith.length>0).forEach(m=>{const p=d.find(g=>m.conflictsWith.includes(g.attributeName()));p&&this._conflictingOption(m,p)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(d=>{d._checkForConflictingLocalOptions()})}parseOptions(d){const m=[],p=[];let g=m;function f(F){return F.length>1&&F[0]==="-"}const V=F=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(F)?!this._getCommandAndAncestors().some(L=>L.options.map(ee=>ee.short).some(ee=>/^-\d$/.test(ee))):!1;let B=null,K=null,O=0;for(;O<d.length||K;){const F=K??d[O++];if(K=null,F==="--"){g===p&&g.push(F),g.push(...d.slice(O));break}if(B&&(!f(F)||V(F))){this.emit(`option:${B.name()}`,F);continue}if(B=null,f(F)){const L=this._findOption(F);if(L){if(L.required){const ee=d[O++];ee===void 0&&this.optionMissingArgument(L),this.emit(`option:${L.name()}`,ee)}else if(L.optional){let ee=null;O<d.length&&(!f(d[O])||V(d[O]))&&(ee=d[O++]),this.emit(`option:${L.name()}`,ee)}else this.emit(`option:${L.name()}`);B=L.variadic?L:null;continue}}if(F.length>2&&F[0]==="-"&&F[1]!=="-"){const L=this._findOption(`-${F[1]}`);if(L){L.required||L.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${L.name()}`,F.slice(2)):(this.emit(`option:${L.name()}`),K=`-${F.slice(2)}`);continue}}if(/^--[^=]+=/.test(F)){const L=F.indexOf("="),ee=this._findOption(F.slice(0,L));if(ee&&(ee.required||ee.optional)){this.emit(`option:${ee.name()}`,F.slice(L+1));continue}}if(g===m&&f(F)&&!(this.commands.length===0&&V(F))&&(g=p),(this._enablePositionalOptions||this._passThroughOptions)&&m.length===0&&p.length===0){if(this._findCommand(F)){m.push(F),p.push(...d.slice(O));break}else if(this._getHelpCommand()&&F===this._getHelpCommand().name()){m.push(F,...d.slice(O));break}else if(this._defaultCommandName){p.push(F,...d.slice(O));break}}if(this._passThroughOptions){g.push(F,...d.slice(O));break}g.push(F)}return{operands:m,unknown:p}}opts(){if(this._storeOptionsAsProperties){const d={},m=this.options.length;for(let p=0;p<m;p++){const g=this.options[p].attributeName();d[g]=g===this._versionOptionName?this._version:this[g]}return d}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((d,m)=>Object.assign(d,m.opts()),{})}error(d,m){this._outputConfiguration.outputError(`${d}
|
|
21
21
|
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
22
22
|
`):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
|
|
23
|
-
`),this.outputHelp({error:!0}));const p=m||{},g=p.exitCode||1,
|
|
24
|
-
`),this._exit(0,"commander.version",d)}),this}description(d,m){return d===void 0&&m===void 0?this._description:(this._description=d,m&&(this._argsDescription=m),this)}summary(d){return d===void 0?this._summary:(this._summary=d,this)}alias(d){if(d===void 0)return this._aliases[0];let m=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(m=this.commands[this.commands.length-1]),d===m._name)throw new Error("Command alias can't be the same as its name");const p=this.parent?._findCommand(d);if(p){const g=[p.name()].concat(p.aliases()).join("|");throw new Error(`cannot add alias '${d}' to command '${this.name()}' as already have command '${g}'`)}return m._aliases.push(d),this}aliases(d){return d===void 0?this._aliases:(d.forEach(m=>this.alias(m)),this)}usage(d){if(d===void 0){if(this._usage)return this._usage;const m=this.registeredArguments.map(p=>s(p));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?m:[]).join(" ")}return this._usage=d,this}name(d){return d===void 0?this._name:(this._name=d,this)}helpGroup(d){return d===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=d,this)}commandsGroup(d){return d===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=d,this)}optionsGroup(d){return d===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=d,this)}_initOptionGroup(d){this._defaultOptionGroup&&!d.helpGroupHeading&&d.helpGroup(this._defaultOptionGroup)}_initCommandGroup(d){this._defaultCommandGroup&&!d.helpGroup()&&d.helpGroup(this._defaultCommandGroup)}nameFromFilename(d){return this._name=o.basename(d,o.extname(d)),this}executableDir(d){return d===void 0?this._executableDir:(this._executableDir=d,this)}helpInformation(d){const m=this.createHelp(),p=this._getOutputContext(d);m.prepareContext({error:p.error,helpWidth:p.helpWidth,outputHasColors:p.hasColors});const g=m.formatHelp(this,m);return p.hasColors?g:this._outputConfiguration.stripColor(g)}_getOutputContext(d){d=d||{};const m=!!d.error;let p,g,
|
|
25
|
-
Expecting one of '${p.join("', '")}'`);const g=`${d}Help`;return this.on(g,
|
|
26
|
-
`)}),this}_outputHelpIfRequested(d){const m=this._getHelpOption();m&&d.find(p=>m.is(p))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function S(
|
|
27
|
-
`)}function q(e){const t=e.filter(([,o])=>o!==void 0&&o!==""),n=Math.max(...t.map(([o])=>o.length));return`${t.map(([o,a])=>`${o.padEnd(n)} ${
|
|
23
|
+
`),this.outputHelp({error:!0}));const p=m||{},g=p.exitCode||1,f=p.code||"commander.error";this._exit(g,f,d)}_parseOptionsEnv(){this.options.forEach(d=>{if(d.envVar&&d.envVar in r.env){const m=d.attributeName();(this.getOptionValue(m)===void 0||["default","config","env"].includes(this.getOptionValueSource(m)))&&(d.required||d.optional?this.emit(`optionEnv:${d.name()}`,r.env[d.envVar]):this.emit(`optionEnv:${d.name()}`))}})}_parseOptionsImplied(){const d=new A(this.options),m=p=>this.getOptionValue(p)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(p));this.options.filter(p=>p.implied!==void 0&&m(p.attributeName())&&d.valueFromOption(this.getOptionValue(p.attributeName()),p)).forEach(p=>{Object.keys(p.implied).filter(g=>!m(g)).forEach(g=>{this.setOptionValueWithSource(g,p.implied[g],"implied")})})}missingArgument(d){const m=`error: missing required argument '${d}'`;this.error(m,{code:"commander.missingArgument"})}optionMissingArgument(d){const m=`error: option '${d.flags}' argument missing`;this.error(m,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(d){const m=`error: required option '${d.flags}' not specified`;this.error(m,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(d,m){const p=V=>{const B=V.attributeName(),K=this.getOptionValue(B),O=this.options.find(L=>L.negate&&B===L.attributeName()),F=this.options.find(L=>!L.negate&&B===L.attributeName());return O&&(O.presetArg===void 0&&K===!1||O.presetArg!==void 0&&K===O.presetArg)?O:F||V},g=V=>{const B=p(V),K=B.attributeName();return this.getOptionValueSource(K)==="env"?`environment variable '${B.envVar}'`:`option '${B.flags}'`},f=`error: ${g(d)} cannot be used with ${g(m)}`;this.error(f,{code:"commander.conflictingOption"})}unknownOption(d){if(this._allowUnknownOption)return;let m="";if(d.startsWith("--")&&this._showSuggestionAfterError){let g=[],f=this;do{const V=f.createHelp().visibleOptions(f).filter(B=>B.long).map(B=>B.long);g=g.concat(V),f=f.parent}while(f&&!f._enablePositionalOptions);m=Z(d,g)}const p=`error: unknown option '${d}'${m}`;this.error(p,{code:"commander.unknownOption"})}_excessArguments(d){if(this._allowExcessArguments)return;const m=this.registeredArguments.length,p=m===1?"":"s",g=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${m} argument${p} but got ${d.length}.`;this.error(g,{code:"commander.excessArguments"})}unknownCommand(){const d=this.args[0];let m="";if(this._showSuggestionAfterError){const g=[];this.createHelp().visibleCommands(this).forEach(f=>{g.push(f.name()),f.alias()&&g.push(f.alias())}),m=Z(d,g)}const p=`error: unknown command '${d}'${m}`;this.error(p,{code:"commander.unknownCommand"})}version(d,m,p){if(d===void 0)return this._version;this._version=d,m=m||"-V, --version",p=p||"output the version number";const g=this.createOption(m,p);return this._versionOptionName=g.attributeName(),this._registerOption(g),this.on("option:"+g.name(),()=>{this._outputConfiguration.writeOut(`${d}
|
|
24
|
+
`),this._exit(0,"commander.version",d)}),this}description(d,m){return d===void 0&&m===void 0?this._description:(this._description=d,m&&(this._argsDescription=m),this)}summary(d){return d===void 0?this._summary:(this._summary=d,this)}alias(d){if(d===void 0)return this._aliases[0];let m=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(m=this.commands[this.commands.length-1]),d===m._name)throw new Error("Command alias can't be the same as its name");const p=this.parent?._findCommand(d);if(p){const g=[p.name()].concat(p.aliases()).join("|");throw new Error(`cannot add alias '${d}' to command '${this.name()}' as already have command '${g}'`)}return m._aliases.push(d),this}aliases(d){return d===void 0?this._aliases:(d.forEach(m=>this.alias(m)),this)}usage(d){if(d===void 0){if(this._usage)return this._usage;const m=this.registeredArguments.map(p=>s(p));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?m:[]).join(" ")}return this._usage=d,this}name(d){return d===void 0?this._name:(this._name=d,this)}helpGroup(d){return d===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=d,this)}commandsGroup(d){return d===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=d,this)}optionsGroup(d){return d===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=d,this)}_initOptionGroup(d){this._defaultOptionGroup&&!d.helpGroupHeading&&d.helpGroup(this._defaultOptionGroup)}_initCommandGroup(d){this._defaultCommandGroup&&!d.helpGroup()&&d.helpGroup(this._defaultCommandGroup)}nameFromFilename(d){return this._name=o.basename(d,o.extname(d)),this}executableDir(d){return d===void 0?this._executableDir:(this._executableDir=d,this)}helpInformation(d){const m=this.createHelp(),p=this._getOutputContext(d);m.prepareContext({error:p.error,helpWidth:p.helpWidth,outputHasColors:p.hasColors});const g=m.formatHelp(this,m);return p.hasColors?g:this._outputConfiguration.stripColor(g)}_getOutputContext(d){d=d||{};const m=!!d.error;let p,g,f;return m?(p=B=>this._outputConfiguration.writeErr(B),g=this._outputConfiguration.getErrHasColors(),f=this._outputConfiguration.getErrHelpWidth()):(p=B=>this._outputConfiguration.writeOut(B),g=this._outputConfiguration.getOutHasColors(),f=this._outputConfiguration.getOutHelpWidth()),{error:m,write:B=>(g||(B=this._outputConfiguration.stripColor(B)),p(B)),hasColors:g,helpWidth:f}}outputHelp(d){let m;typeof d=="function"&&(m=d,d=void 0);const p=this._getOutputContext(d),g={error:p.error,write:p.write,command:this};this._getCommandAndAncestors().reverse().forEach(V=>V.emit("beforeAllHelp",g)),this.emit("beforeHelp",g);let f=this.helpInformation({error:p.error});if(m&&(f=m(f),typeof f!="string"&&!Buffer.isBuffer(f)))throw new Error("outputHelp callback must return a string or a Buffer");p.write(f),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",g),this._getCommandAndAncestors().forEach(V=>V.emit("afterAllHelp",g))}helpOption(d,m){return typeof d=="boolean"?(d?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(d??"-h, --help",m??"display help for command"),(d||m)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(d){return this._helpOption=d,this._initOptionGroup(d),this}help(d){this.outputHelp(d);let m=Number(r.exitCode??0);m===0&&d&&typeof d!="function"&&d.error&&(m=1),this._exit(m,"commander.help","(outputHelp)")}addHelpText(d,m){const p=["beforeAll","before","after","afterAll"];if(!p.includes(d))throw new Error(`Unexpected value for position to addHelpText.
|
|
25
|
+
Expecting one of '${p.join("', '")}'`);const g=`${d}Help`;return this.on(g,f=>{let V;typeof m=="function"?V=m({error:f.error,command:f.command}):V=m,V&&f.write(`${V}
|
|
26
|
+
`)}),this}_outputHelpIfRequested(d){const m=this._getHelpOption();m&&d.find(p=>m.is(p))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function S(J){return J.map(d=>{if(!d.startsWith("--inspect"))return d;let m,p="127.0.0.1",g="9229",f;return(f=d.match(/^(--inspect(-brk)?)$/))!==null?m=f[1]:(f=d.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(m=f[1],/^\d+$/.test(f[3])?g=f[3]:p=f[3]):(f=d.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(m=f[1],p=f[3],g=f[4]),m&&g!=="0"?`${m}=${p}:${parseInt(g)+1}`:d})}function X(){if(r.env.NO_COLOR||r.env.FORCE_COLOR==="0"||r.env.FORCE_COLOR==="false")return!1;if(r.env.FORCE_COLOR||r.env.CLICOLOR_FORCE!==void 0)return!0}e.Command=G,e.useColor=X})),Dl=ot((e=>{var{Argument:t}=Zo(),{Command:n}=Ol(),{CommanderError:o,InvalidArgumentError:a}=Rn(),{Help:r}=ri(),{Option:i}=ii();e.program=new n,e.createCommand=s=>new n(s),e.createOption=(s,l)=>new i(s,l),e.createArgument=(s,l)=>new t(s,l),e.Command=n,e.Option=i,e.Argument=t,e.Help=r,e.CommanderError=o,e.InvalidArgumentError=a,e.InvalidOptionArgumentError=a})),_l=at(Dl(),1),{program:uZ,createCommand:mZ,createArgument:hZ,createOption:bZ,CommanderError:$l,InvalidArgumentError:gZ,InvalidOptionArgumentError:pZ,Command:Pl,Argument:AZ,Option:Ve,Help:fZ}=_l.default;function li(e){return e.replace(/\s+/g," ").trim()}function ie(e,t){const n=t.map(r=>e.map(i=>li(i.value(r)))),o=e.map((r,i)=>{const s=n.map(l=>l[i].length);return Math.max(r.header.length,...s)}),a=r=>r.map((i,s)=>i.padEnd(o[s])).join(" ").trimEnd();return[a(e.map(r=>r.header)),a(o.map(r=>"-".repeat(r))),...n.map(a)].join(`
|
|
27
|
+
`)}function q(e){const t=e.filter(([,o])=>o!==void 0&&o!==""),n=Math.max(...t.map(([o])=>o.length));return`${t.map(([o,a])=>`${o.padEnd(n)} ${li(a??"")}`).join(`
|
|
28
28
|
`)}
|
|
29
|
-
`}function
|
|
29
|
+
`}function ql(e){const t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/3600),o=Math.floor(t%3600/60);return n>0?`${n}h ${o}m`:o>0?`${o}m ${t%60}s`:`${t}s`}function ut(e,t){if(!e)return;if(!t)return e;const n=Date.parse(e)-Date.parse(t);return Number.isNaN(n)?e:`${e} (${n>=0?"in":"ago"} ${ql(Math.abs(n))})`}function Dt(e,t){if(!e)return;const n=ut(e.earliestAt,t),o=ut(e.latestAt,t);return n&&o?`between ${n} and ${o}`:n?`from ${n}`:o?`by ${o}`:void 0}function ci(e){return e.holder?`${e.holder.ownerId}${e.holder.label?` (${e.holder.label})`:""}`:void 0}function va(e){return`--lock-id ${e.lockId} --owner ${e.ownerId}`}function pt(e,t="status"){const n=e.serverTime,o=`Lock ${e.lockId}: ${e.status} as ${e.ownerId} (myTurn: ${e.myTurn?"yes":"no"})`;if(e.status==="Holding"){const a=[o,q([["Epoch",String(e.epoch)],["Valid until",ut(e.leaseExpiresAt,n)?`${ut(e.leaseExpiresAt,n)} unless a heartbeat renews it`:void 0],["Hard cap",ut(e.maxHoldExpiresAt,n)?`${ut(e.maxHoldExpiresAt,n)}; the lock is taken back then even with heartbeats`:void 0],["Check in",Dt(e.checkInWindow,n)],["Queue length",e.queueLength>0?String(e.queueLength):void 0]]).trimEnd(),`Next: start the heartbeat watcher before any work: hagi agent lock heartbeat ${va(e)} --epoch ${e.epoch}`];return t==="acquire"&&a.push("If you acquired this lock before, that first acquire is still valid: same epoch, the hard cap did not restart and the lease was not refreshed. Only the heartbeat renews the lease."),`${a.join(`
|
|
30
30
|
`)}
|
|
31
|
-
`}if(e.status==="Queued")return[o,q([["Position",`${e.position} of ${e.queueLength}`],["Held by",
|
|
31
|
+
`}if(e.status==="Queued")return[o,q([["Position",`${e.position} of ${e.queueLength}`],["Held by",ci(e)],["Check in",Dt(e.checkInWindow,n)],["Your turn",Dt(e.turnWindow,n)?`${Dt(e.turnWindow,n)} (a bound, usually much sooner)`:void 0],["Poll interval",e.suggestedPollIntervalMs>0?`${e.suggestedPollIntervalMs/1e3}s`:void 0]]).trimEnd(),`Next: wait with a continuous watcher, do not sleep and re-check: hagi agent lock acquire ${va(e)} --wait`].join(`
|
|
32
32
|
`)+`
|
|
33
33
|
`;if(e.status==="Requisitioned"){const a=e.requisition;return`${o}
|
|
34
34
|
Requisitioned by ${a?.byOwnerId??"another owner"}${a?.at?` at ${a.at}`:""}, reason: ${a?.reason??"not given"}.
|
|
@@ -37,60 +37,60 @@ Stop using the resource now. Queue again only if your task still needs it, and n
|
|
|
37
37
|
Your hold or queue entry has ended (lease or claim window ran out, hard cap passed, or the entry was dropped). Stop using the resource. Acquire again to queue at the back.
|
|
38
38
|
`:`${o}
|
|
39
39
|
The backend has no hold or queue entry for this owner. Acquire to queue.
|
|
40
|
-
`}function
|
|
41
|
-
`}function
|
|
40
|
+
`}function ec(e){const t=ci(e);return`Lock ${e.lockId}: still queued, position ${e.position} of ${e.queueLength}${t?`, held by ${t}`:""}.
|
|
41
|
+
`}function tc(e,t){switch(e.outcome){case"timeout":return`Timed out after ${e.elapsedSeconds}s waiting for lock ${e.status.lockId}; ${t?"the queue entry was released.":"the queue entry could not be released and will expire on its own."}
|
|
42
42
|
`;case"cancelled":return`Interrupted while waiting for lock ${e.status.lockId}; ${t?"the queue entry was released.":"the queue entry could not be released and will expire on its own."}
|
|
43
43
|
`;case"lost":return`The backend dropped the queue entry for lock ${e.status.lockId} (${e.status.status}). Acquire again to queue at the back.
|
|
44
|
-
`;default:return""}}function
|
|
44
|
+
`;default:return""}}function nc(e){const t=e.holderOwnerId?`held by ${e.holderOwnerId}`:"free",n=`owner ${e.ownerId} on lock ${e.lockId}`;return e.released?`Released ${e.previousStatus==="Holding"?"the lock":"the queue entry"} of ${n}. The lock is now ${t}.
|
|
45
45
|
`:`Nothing to release for ${n} (it was ${e.previousStatus}). The lock is ${t}.
|
|
46
|
-
`}function
|
|
46
|
+
`}function oc(e){return e.length===0?`No busy locks.
|
|
47
47
|
`:`Locks (${e.length})
|
|
48
48
|
${ie([{header:"LOCK",value:t=>t.lockId},{header:"HOLDER",value:t=>t.holderOwnerId??"-"},{header:"LABEL",value:t=>t.holderLabel??""},{header:"EPOCH",value:t=>String(t.epoch)},{header:"LEASE EXPIRES",value:t=>t.leaseExpiresAt??""},{header:"QUEUE",value:t=>String(t.queueLength)}],e)}
|
|
49
49
|
`}function W(e){return`${JSON.stringify(e,null,2)}
|
|
50
|
-
`}var E;(function(e){e[e.Canceled=1]="Canceled",e[e.Unknown=2]="Unknown",e[e.InvalidArgument=3]="InvalidArgument",e[e.DeadlineExceeded=4]="DeadlineExceeded",e[e.NotFound=5]="NotFound",e[e.AlreadyExists=6]="AlreadyExists",e[e.PermissionDenied=7]="PermissionDenied",e[e.ResourceExhausted=8]="ResourceExhausted",e[e.FailedPrecondition=9]="FailedPrecondition",e[e.Aborted=10]="Aborted",e[e.OutOfRange=11]="OutOfRange",e[e.Unimplemented=12]="Unimplemented",e[e.Internal=13]="Internal",e[e.Unavailable=14]="Unavailable",e[e.DataLoss=15]="DataLoss",e[e.Unauthenticated=16]="Unauthenticated"})(E||(E={}));function fo(e,t){return e!==null&&typeof e=="object"&&"$typeName"in e&&typeof e.$typeName=="string"?t===void 0?!0:t.typeName===e.$typeName:!1}var b;(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"})(b||(b={}));function $l(){const e=this.buf;let t=this.pos,n=0,o=0;for(let r=0;r<28;r+=7){const i=e[t++];if(n|=(i&127)<<r,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}const a=e[t++];if(n|=(a&15)<<28,o=(a&112)>>4,(a&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}for(let r=3;r<=31;r+=7){const i=e[t++];if(o|=(i&127)<<r,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}throw new Error("invalid varint")}var rn=4294967296;function Na(e){const t=e[0]==="-";t&&(e=e.slice(1));const n=1e6;let o=0,a=0;function r(i,s){const l=Number(e.slice(i,s));a*=n,o=o*n+l,o>=rn&&(a=a+(o/rn|0),o=o%rn)}return r(-24,-18),r(-18,-12),r(-12,-6),r(-6),t?li(o,a):Zo(o,a)}function Pl(e,t){let n=Zo(e,t);const o=n.hi&2147483648;o&&(n=li(n.lo,n.hi));const a=si(n.lo,n.hi);return o?"-"+a:a}function si(e,t){if({lo:e,hi:t}=ql(e,t),t<=2097151)return String(rn*t+e);const n=e&16777215,o=(e>>>24|t<<8)&16777215,a=t>>16&65535;let r=n+o*6777216+a*6710656,i=o+a*8147497,s=a*2;const l=1e7;return r>=l&&(i+=Math.floor(r/l),r%=l),i>=l&&(s+=Math.floor(i/l),i%=l),s.toString()+va(i)+va(r)}function ql(e,t){return{lo:e>>>0,hi:t>>>0}}function Zo(e,t){return{lo:e|0,hi:t|0}}function li(e,t){return t=~t,e?e=~e+1:t+=1,Zo(e,t)}var va=e=>{const t=String(e);return"0000000".slice(t.length)+t};function ec(e,t){if(e>>>0<128){t.push(e);return}if(e>=0){for(;e>127;)t.push(e&127|128),e=e>>>7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e=e>>7;t.push(1)}}function tc(){let e=this.buf[this.pos++];if((e&128)===0)return this.assertBounds(),e;let t=e&127;if(e=this.buf[this.pos++],t|=(e&127)<<7,(e&128)===0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<14,(e&128)===0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<21,(e&128)===0)return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let n=5;(e&128)!==0&&n<10;n++)e=this.buf[this.pos++];if((e&128)!==0)throw new Error("invalid varint");return this.assertBounds(),t>>>0}var T=nc();function nc(){const 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"&&(globalThis.Deno||globalThis.Bun||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){const t=BigInt("-9223372036854775808"),n=BigInt("9223372036854775807"),o=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(r){const i=typeof r=="bigint"?r:BigInt(r);if(i>n||i<t)throw new Error(`invalid int64: ${r}`);return i},uParse(r){const i=typeof r=="bigint"?r:BigInt(r);if(i>a||i<o)throw new Error(`invalid uint64: ${r}`);return i},enc(r){return e.setBigInt64(0,this.parse(r),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(r){return e.setBigInt64(0,this.uParse(r),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(r,i){return e.setInt32(0,r,!0),e.setInt32(4,i,!0),e.getBigInt64(0,!0)},uDec(r,i){return e.setInt32(0,r,!0),e.setInt32(4,i,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),Wa(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),ya(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),Wa(t),Na(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),ya(t),Na(t)},dec(t,n){return Pl(t,n)},uDec(t,n){return si(t,n)}}}function Wa(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function ya(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function Ce(e,t){switch(e){case b.STRING:return"";case b.BOOL:return!1;case b.DOUBLE:case b.FLOAT:return 0;case b.INT64:case b.UINT64:case b.SFIXED64:case b.FIXED64:case b.SINT64:return t?"0":T.zero;case b.BYTES:return new Uint8Array(0);default:return 0}}function oc(e,t){switch(e){case b.BOOL:return t===!1;case b.STRING:return t==="";case b.BYTES:return t instanceof Uint8Array&&!t.byteLength;case b.DOUBLE:case b.FLOAT:return Object.is(t,0);default:return t==0}}var ci=2,me=Symbol.for("reflect unsafe local");function ac(e,t){const n=e[t.localName].case;return n===void 0?n:t.fields.find(o=>o.localName===n)}function rc(e,t){const n=t.localName;if(t.oneof)return e[t.oneof.localName].case===n;if(t.presence!=ci)return e[n]!==void 0&&Object.prototype.hasOwnProperty.call(e,n);switch(t.fieldKind){case"list":return e[n].length>0;case"map":return Object.keys(e[n]).length>0;case"scalar":return!oc(t.scalar,e[n]);case"enum":return e[n]!==t.enum.values[0].number}throw new Error("message field with implicit presence")}function xt(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==void 0}function ic(e,t){if(t.oneof){const n=e[t.oneof.localName];return n.case===t.localName?n.value:void 0}return e[t.localName]}function sc(e,t,n){t.oneof?e[t.oneof.localName]={case:t.localName,value:n}:e[t.localName]=n}function fe(e,t,n){t==="__proto__"?Object.defineProperty(e,"__proto__",{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function lc(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function cc(e,t){const n=t.localName;if(t.oneof){const o=t.oneof.localName;e[o].case===n&&(e[o]={case:void 0})}else if(t.presence!=ci)delete e[n];else switch(t.fieldKind){case"map":e[n]={};break;case"list":e[n]=[];break;case"enum":e[n]=t.enum.values[0].number;break;case"scalar":e[n]=Ce(t.scalar,t.longAsString);break}}function je(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ro(e,t){var n,o,a,r;if(je(e)&&me in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){const i=t,s=e.field();return i.listKind==s.listKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((a=i.enum)===null||a===void 0?void 0:a.typeName)===((r=s.enum)===null||r===void 0?void 0:r.typeName)}return!0}return!1}function Eo(e,t){var n,o,a,r;if(je(e)&&me in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){const i=t,s=e.field();return i.mapKey===s.mapKey&&i.mapKind==s.mapKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((a=i.enum)===null||a===void 0?void 0:a.typeName)===((r=s.enum)===null||r===void 0?void 0:r.typeName)}return!0}return!1}function Vo(e,t){return je(e)&&me in e&&"desc"in e&&je(e.desc)&&e.desc.kind==="message"&&(t===void 0||e.desc.typeName==t.typeName)}function dc(e){return ui(e.$typeName)}function at(e){const t=e.fields[0];return ui(e.typeName)&&t!==void 0&&t.fieldKind=="scalar"&&t.name=="value"&&t.number==1}function di(e){switch(e.typeName){case"google.protobuf.Any":case"google.protobuf.Timestamp":case"google.protobuf.Duration":case"google.protobuf.FieldMask":case"google.protobuf.Struct":case"google.protobuf.Value":case"google.protobuf.ListValue":return!0;default:return at(e)}}var uc=new Set(["google.protobuf.DoubleValue","google.protobuf.FloatValue","google.protobuf.Int64Value","google.protobuf.UInt64Value","google.protobuf.Int32Value","google.protobuf.UInt32Value","google.protobuf.BoolValue","google.protobuf.StringValue","google.protobuf.BytesValue"]);function ui(e){return uc.has(e)}var mc=999,hc=998,mi=2;function ce(e,t){return fo(t,e)?t:hi(e)(t)}var Ia=new WeakMap;function hi(e){let t=Ia.get(e);return t===void 0&&(t=bc(e),Ia.set(e,t)),t}var $n=0,bi=1,gi=2,pi=3;function bc(e){const t=e.typeName,{properties:n,prototype:o}=gc(e);return a=>{let r;o!==void 0?(r=Object.create(o),r.$typeName=t):r={$typeName:t};for(let i=0;i<n.length;i++){const s=n[i],l=s.name,c=a?.[l];switch(s.kind){case $n:c!=null?r[l]=s.convert!==void 0?s.convert(c):c:s.constant!==void 0&&(r[l]=s.constant);break;case bi:r[l]=s.convert!==void 0&&Array.isArray(c)?c.map(s.convert):c??[];break;case gi:if(s.convert===void 0||!je(c))r[l]=c??{};else{const u={},h=Object.keys(c);for(let f=0;f<h.length;f++)fe(u,h[f],s.convert(c[h[f]]));r[l]=u}break;case pi:{const u=c;if(u?.case!=null){const h=s.convert.get(u.case);if(h!==void 0){r[l]={case:u.case,value:h(u.value)};break}}r[l]={case:void 0};break}}}return r}}function gc(e){var t,n;const o=[],a={},r=Ac(e);for(const i of e.members){const s=i.localName;if(i.kind=="oneof"){o.push({name:s,kind:pi,constant:void 0,convert:pc(i)});continue}switch(i.fieldKind){case"message":o.push({name:s,kind:$n,constant:void 0,convert:sn(i)});break;case"list":o.push({name:s,kind:bi,constant:void 0,convert:i.listKind=="message"?(t=sn(i))!==null&&t!==void 0?t:(l=>l):i.scalar==b.BYTES?Ut:void 0});break;case"map":o.push({name:s,kind:gi,constant:void 0,convert:i.mapKind=="message"?(n=sn(i))!==null&&n!==void 0?n:(l=>l):i.scalar==b.BYTES?Ut:void 0});break;default:{const l=fc(i);o.push({name:s,kind:$n,constant:i.presence==mi?l:void 0,convert:i.fieldKind=="scalar"&&i.scalar==b.BYTES?Ut:void 0}),r&&(a[s]=l);break}}}return{properties:o,prototype:r?a:void 0}}function pc(e){const t=new Map;for(const n of e.fields){let o;n.fieldKind=="message"?o=sn(n):n.fieldKind=="scalar"&&n.scalar==b.BYTES&&(o=Ut),t.set(n.localName,o??(a=>a))}return t}function sn(e){if(e.fieldKind=="message"&&!e.oneof&&at(e.message))return e.message.fields[0].scalar==b.BYTES?Ut:void 0;if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return;const t=e.message;let n;return o=>!je(o)||fo(o,t)?o:(n!=null||(n=hi(t)),n(o))}function Ut(e){return Array.isArray(e)?new Uint8Array(e):e}function Ac(e){switch(e.file.edition){case mc:return!1;case hc:return!0;default:return e.fields.some(t=>t.presence!=mi&&t.fieldKind!="message"&&!t.oneof)}}function fc(e){const t=e.getDefaultValue();return t!==void 0?e.fieldKind=="scalar"&&e.longAsString?t.toString():t:e.fieldKind=="scalar"?Ce(e.scalar,e.longAsString):e.enum.values[0].number}var Zc=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],Q=class extends Error{constructor(e,t,n="FieldValueInvalidError"){super(t),this.name=n,this.field=()=>e}};function Rc(e){return e instanceof Error&&Zc.includes(e.name)&&"field"in e&&typeof e.field=="function"}var Pn;function Ec(e){var t;Pn=Object.assign(Object.assign({},e),{encodeUtf8Into:(t=e.encodeUtf8Into)!==null&&t!==void 0?t:Ai(e.encodeUtf8.bind(e))})}function Go(){if(!Pn){const e=globalThis;if(!e.TextEncoder||!e.TextDecoder)throw new Error("encoding API missing: install TextEncoder and TextDecoder on globalThis");const t=new e.TextEncoder,n=new e.TextDecoder;let o;const a={encodeUtf8(i){return t.encode(i)},decodeUtf8(i,s){return s?(o||(o=new e.TextDecoder("utf-8",{fatal:!0})),o.decode(i)):n.decode(i)},checkUtf8(i){try{return!0}catch{return!1}}};t.encodeInto&&(a.encodeUtf8Into=t.encodeInto.bind(t));const r=String.prototype.isWellFormed;r&&(a.checkUtf8=i=>r.call(i)),Ec(a)}return Pn}function Ai(e){return(t,n)=>{const o=e(t);return n.set(o),{written:o.byteLength}}}var _;(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"})(_||(_={}));var fi=class{constructor(e){this.stackPos=[],this.encodeUtf8Into=e?Ai(e):Go().encodeUtf8Into,this.buffer=Zi,this.viewCache=Gc,this.pos=0}ensureCapacity(e){const t=this.pos+e;if(t>this.buffer.length){let n=this.buffer.length||Vc;for(;n<t;)n*=2;const o=new Uint8Array(n);this.pos>0&&o.set(this.buffer),this.buffer=o}}view(){const e=this.buffer,t=this.viewCache;if(t.byteLength===e.byteLength)return t;const n=new DataView(e.buffer);return this.viewCache=n,n}finish(){const e=this.buffer.slice(0,this.pos);return this.pos=0,this.stackPos=[],e}fork(){return this.stackPos.push(this.pos),this.ensureCapacity(Xt),this.buffer[this.pos++]=0,this}join(){const e=this.stackPos.pop();if(e===void 0)throw new Error("invalid state, fork stack empty");const t=this.pos-e-Xt,n=wn(t);return n>Xt&&(this.ensureCapacity(n-Xt),this.buffer.copyWithin(e+n,e+Xt,this.pos)),this.pos=e,this.uint32(t),this.pos+=t,this}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.ensureCapacity(e.length),this.buffer.set(e,this.pos),this.pos+=e.length,this}uint32(e){if(Ya(e),this.ensureCapacity(5),e<128)return this.buffer[this.pos++]=e,this;for(;e>127;)this.buffer[this.pos++]=e&127|128,e>>>=7;return this.buffer[this.pos++]=e,this}int32(e){if(kn(e),e>=0)return this.uint32(e);this.ensureCapacity(10);for(let t=0;t<9;t++)this.buffer[this.pos++]=e&127|128,e>>=7;return this.buffer[this.pos++]=1,this}bool(e){return this.ensureCapacity(1),this.buffer[this.pos++]=e?1:0,this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){typeof e!="string"&&(e=String(e));const t=e.length;if(t<=Ri){this.ensureCapacity(t+1);const s=this.buffer;let l=this.pos;s[l++]=t;let c=0;for(;c<t;c++){const u=e.charCodeAt(c);if(u>127)break;s[l++]=u}if(c==t)return this.pos=l,this}this.ensureCapacity(t*3+5);const n=wn(t),o=this.buffer,a=this.pos,{written:r}=this.encodeUtf8Into(e,o.subarray(a+n)),i=wn(r);return i!=n&&o.copyWithin(a+i,a+n,a+n+r),this.uint32(r),this.pos+=r,this}float(e){return Sc(e),this.ensureCapacity(4),this.view().setFloat32(this.pos,e,!0),this.pos+=4,this}double(e){return this.ensureCapacity(8),this.view().setFloat64(this.pos,e,!0),this.pos+=8,this}fixed32(e){return Ya(e),this.ensureCapacity(4),this.view().setUint32(this.pos,e,!0),this.pos+=4,this}sfixed32(e){return kn(e),this.ensureCapacity(4),this.view().setInt32(this.pos,e,!0),this.pos+=4,this}sint32(e){return kn(e),this.uint32((e<<1^e>>31)>>>0)}sfixed64(e){const t=T.enc(e);this.ensureCapacity(8);const n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}fixed64(e){const t=T.uEnc(e);this.ensureCapacity(8);const n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}int64(e){const t=T.enc(e);return this.writeVarint64(t.lo,t.hi)}sint64(e){const t=T.enc(e),n=t.hi>>31,o=t.lo<<1^n,a=(t.hi<<1|t.lo>>>31)^n;return this.writeVarint64(o,a)}uint64(e){const t=T.uEnc(e);return this.writeVarint64(t.lo,t.hi)}writeVarint64(e,t){this.ensureCapacity(10);const n=this.buffer;let o=this.pos;for(let i=0;i<28;i=i+7){const s=e>>>i,l=!(!(s>>>7)&&t==0);if(n[o++]=(l?s|128:s)&255,!l)return this.pos=o,this}const a=e>>>28&15|(t&7)<<4,r=t>>3!=0;if(n[o++]=(r?a|128:a)&255,!r)return this.pos=o,this;for(let i=3;i<31;i=i+7){const s=t>>>i,l=!!(s>>>7);if(n[o++]=(l?s|128:s)&255,!l)return this.pos=o,this}return n[o++]=t>>>31&1,this.pos=o,this}},Vc=128,Xt=1,Zi=new Uint8Array(0),Gc=new DataView(Zi.buffer),Ri=32;function wn(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}var Kt=class{constructor(e,t=Go().decodeUtf8){this.decodeUtf8=t,this.varint64Lo=0,this.varint64Hi=0,this.varint64=$l,this.uint32=tc,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){const e=this.pos,t=this.uint32(),n=this.pos-e;if(n>5||n==5&&this.buf[this.pos-1]>15)throw new Error("illegal tag: varint overflows uint32");const o=t>>>3,a=t&7;if(o<=0||a>5)throw new Error("illegal tag: field no "+o+" wire type "+a);return[o,a]}skip(e,t,n=100){let o=this.pos;switch(e){case _.Varint:for(;this.buf[this.pos++]&128;);break;case _.Bit64:this.pos+=4;case _.Bit32:this.pos+=4;break;case _.LengthDelimited:let a=this.uint32();this.pos+=a;break;case _.StartGroup:if(n<=0)throw new Error("maximum recursion depth reached");for(;;){const[r,i]=this.tag();if(i===_.EndGroup){if(t!==void 0&&r!==t)throw new Error("invalid end group tag");break}this.skip(i,r,n-1)}break;default:throw new Error("cant skip wire type "+e)}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 e=this.uint32();return e>>>1^-(e&1)}int64(){return this.varint64(),T.dec(this.varint64Lo,this.varint64Hi)}uint64(){return this.varint64(),T.uDec(this.varint64Lo,this.varint64Hi)}sint64(){this.varint64();let e=this.varint64Lo,t=this.varint64Hi,n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,T.dec(e,t)}bool(){const e=this.buf[this.pos];return e<128?(this.pos++,e!==0):(this.varint64(),this.varint64Lo!==0||this.varint64Hi!==0)}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return T.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return T.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 e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(e){const t=this.bytes(),n=t.length;if(n<=Ri){const o=new Array(n);for(let a=0;a<n;a++){const r=t[a];if(r>127)return this.decodeUtf8(t,e);o[a]=r}return String.fromCharCode.apply(String,o)}return this.decodeUtf8(t,e)}};function kn(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>2147483647||e<-2147483648)throw new Error("invalid int32: "+e)}function Ya(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>4294967295||e<0)throw new Error("invalid uint32: "+e)}function Sc(e){if(typeof e=="string"){const t=e;if(e=Number(e),Number.isNaN(e)&&t!=="NaN")throw new Error("invalid float32: "+t)}else if(typeof e!="number")throw new Error("invalid float32: "+typeof e);if(!Number.isFinite(Math.fround(e))&&Number.isFinite(e))throw new Error("invalid float32: "+e)}function Ei(e,t){const n=e.fieldKind=="list"?Ro(t,e):e.fieldKind=="map"?Eo(t,e):So(e,t);if(n===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${Gi(e)}, got ${te(t)}`;break;case"map":o=`expected ${Si(e)}, got ${te(t)}`;break;default:o=pe(e,t,n)}return new Q(e,o)}function Xa(e,t,n){const o=So(e,n);if(o!==!0)return new Q(e,`list item #${t+1}: ${pe(e,n,o)}`)}function Nc(e,t,n){const o=He(e.mapKey)(t);if(o!==!0)return new Q(e,`invalid map key: ${pe({scalar:e.mapKey},t,o)}`);const a=So(e,n);if(a!==!0)return new Q(e,`map entry ${te(t)}: ${pe(e,n,a)}`)}function So(e,t){return e.scalar!==void 0?He(e.scalar)(t):e.enum!==void 0?e.enum.open?He(b.INT32)(t):e.enum.values.some(n=>n.number===t):Vo(t,e.message)}function He(e){switch(e){case b.DOUBLE:return t=>typeof t=="number";case b.FLOAT:return t=>typeof t!="number"?!1:!Number.isFinite(Math.fround(t))&&Number.isFinite(t)?`${t.toFixed()} out of range`:!0;case b.INT32:case b.SFIXED32:case b.SINT32:return t=>typeof t!="number"||!Number.isInteger(t)?!1:t>2147483647||t<-2147483648?`${t.toFixed()} out of range`:!0;case b.FIXED32:case b.UINT32:return t=>typeof t!="number"||!Number.isInteger(t)?!1:t>4294967295||t<0?`${t.toFixed()} out of range`:!0;case b.BOOL:return t=>typeof t=="boolean";case b.STRING:return t=>typeof t!="string"?!1:Go().checkUtf8(t)||"invalid UTF8";case b.BYTES:return t=>t instanceof Uint8Array;case b.INT64:case b.SFIXED64:case b.SINT64:return t=>{if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return T.parse(t),!0}catch{return`${t} out of range`}return!1};case b.FIXED64:case b.UINT64:return t=>{if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return T.uParse(t),!0}catch{return`${t} out of range`}return!1}}}function pe(e,t,n){return n=typeof n=="string"?`: ${n}`:`, got ${te(t)}`,e.scalar!==void 0?`expected ${vc(e.scalar)}`+n:e.enum!==void 0?`expected ${e.enum.toString()}`+n:`expected ${Vi(e.message)}`+n}function te(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:Ro(e)?Gi(e.field()):Eo(e)?Si(e.field()):Vo(e)?Vi(e.desc):fo(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 Vi(e){return`ReflectMessage (${e.typeName})`}function Gi(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${b[e.scalar]})`}}function Si(e){switch(e.mapKind){case"message":return`ReflectMap (${b[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${b[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${b[e.mapKey]}, ${b[e.scalar]})`}}function vc(e){switch(e){case b.STRING:return"string";case b.BOOL:return"boolean";case b.INT64:case b.SINT64:case b.SFIXED64:return"bigint (int64)";case b.UINT64:case b.FIXED64:return"bigint (uint64)";case b.BYTES:return"Uint8Array";case b.DOUBLE:return"number (float64)";case b.FLOAT:return"number (float32)";case b.FIXED32:case b.UINT32:return"number (uint32)";case b.INT32:case b.SFIXED32:case b.SINT32:return"number (int32)"}}var Wc=0;function Se(e){if(yc(e))return{toMessage:n=>No(n),toLocal:n=>vo(n)};if(e.fieldKind=="message"&&!e.oneof&&at(e.message)){const n=e.message,o=n.fields[0].localName;return{toMessage:a=>{const r=ce(n);return a!==void 0&&(r[o]=a),r},toLocal:a=>a[o]}}const t=e.message;return{toMessage:n=>n===void 0?ce(t):n,toLocal:n=>n}}function yc(e){return e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"}function No(e){const t={$typeName:"google.protobuf.Struct",fields:{}};if(je(e))for(const n of Object.keys(e))fe(t.fields,n,vi(e[n]));return t}function vo(e){const t={};for(const n of Object.keys(e.fields))fe(t,n,Ni(e.fields[n]));return t}function Ni(e){switch(e.kind.case){case"structValue":return vo(e.kind.value);case"listValue":return e.kind.value.values.map(Ni);case"nullValue":case void 0:return null;default:return e.kind.value}}function vi(e){const t={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof e){case"number":t.kind={case:"numberValue",value:e};break;case"string":t.kind={case:"stringValue",value:e};break;case"boolean":t.kind={case:"boolValue",value:e};break;case"object":if(e===null)t.kind={case:"nullValue",value:Wc};else if(Array.isArray(e)){const n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(const o of e)n.values.push(vi(o));t.kind={case:"listValue",value:n}}else t.kind={case:"structValue",value:No(e)};break}return t}function Ic(e,t,n=!0){return new Wi(e,t,n)}var Ba=new WeakMap,Wi=class{get sortedFields(){const e=Ba.get(this.desc);if(e)return e;const t=this.desc.fields.concat().sort((n,o)=>n.number-o.number);return Ba.set(this.desc,t),t}constructor(e,t,n=!0){this.lists=new Map,this.maps=new Map,this.check=n,this.desc=e,this.message=this[me]=t??ce(e),this.fields=e.fields,this.oneofs=e.oneofs,this.members=e.members}findNumber(e){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(t=>[t.number,t]))),this._fieldsByNumber.get(e)}oneofCase(e){return Bt(this.message,e),ac(this.message,e)}isSet(e){return Bt(this.message,e),rc(this.message,e)}clear(e){Bt(this.message,e),cc(this.message,e)}get(e){Bt(this.message,e);const t=ic(this.message,e);switch(e.fieldKind){case"list":let n=this.lists.get(e);return(!n||n[me]!==t)&&this.lists.set(e,n=new Yc(e,t,this.check)),n;case"map":let o=this.maps.get(e);return(!o||o[me]!==t)&&this.maps.set(e,o=new Xc(e,t,this.check)),o;case"message":return yo(e,t,this.check);case"scalar":return t===void 0?Ce(e.scalar,!1):Io(e,t);case"enum":return t??e.enum.values[0].number}}set(e,t){if(Bt(this.message,e),this.check){const o=Ei(e,t);if(o)throw o}let n;e.fieldKind=="message"?n=Wo(e,t):Eo(t)||Ro(t)?n=t[me]:n=Yo(e,t),sc(this.message,e,n)}getUnknown(){return this.message.$unknown}setUnknown(e){this.message.$unknown=e}};function Bt(e,t){if(t.parent.typeName!==e.$typeName)throw new Q(t,`cannot use ${t.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var Yc=class{field(){return this._field}get size(){return this._arr.length}constructor(e,t,n){this._field=e,this._arr=this[me]=t,this.check=n}get(e){const t=this._arr[e];return t===void 0?void 0:Un(this._field,t,this.check)}set(e,t){if(e<0||e>=this._arr.length)throw new Q(this._field,`list item #${e+1}: out of range`);if(this.check){const n=Xa(this._field,e,t);if(n)throw n}this._arr[e]=Ca(this._field,t)}add(e){if(this.check){const t=Xa(this._field,this._arr.length,e);if(t)throw t}this._arr.push(Ca(this._field,e))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(const e of this._arr)yield Un(this._field,e,this.check)}*entries(){for(let e=0;e<this._arr.length;e++)yield[e,Un(this._field,this._arr[e],this.check)]}},Xc=class{constructor(e,t,n=!0){this.obj=this[me]=t??{},this.check=n,this._field=e}field(){return this._field}set(e,t){if(this.check){const n=Nc(this._field,e,t);if(n)throw n}return fe(this.obj,_t(e),Bc(this._field,t)),this}delete(e){const t=_t(e),n=Object.prototype.hasOwnProperty.call(this.obj,t);return n&&delete this.obj[t],n}clear(){for(const e of Object.keys(this.obj))delete this.obj[e]}get(e){let t=lc(this.obj,_t(e));return t!==void 0&&(t=Jn(this._field,t,this.check)),t}has(e){return Object.prototype.hasOwnProperty.call(this.obj,_t(e))}*keys(){for(const e of Object.keys(this.obj))yield Fa(e,this._field.mapKey)}*entries(){for(const e of Object.entries(this.obj))yield[Fa(e[0],this._field.mapKey),Jn(this._field,e[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(const e of Object.values(this.obj))yield Jn(this._field,e,this.check)}forEach(e,t){for(const n of this.entries())e.call(t,n[1],n[0],this)}};function Wo(e,t){return Vo(t)?dc(t.message)&&!e.oneof&&e.fieldKind=="message"?t.message.value:t.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?vo(t.message):t.message:t}function yo(e,t,n){return t!==void 0&&(at(e.message)&&!e.oneof&&e.fieldKind=="message"?t={$typeName:e.message.typeName,value:Io(e.message.fields[0],t)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&je(t)&&(t=No(t))),new Wi(e.message,t,n)}function Ca(e,t){return e.listKind=="message"?Wo(e,t):Yo(e,t)}function Un(e,t,n){return e.listKind=="message"?yo(e,t,n):Io(e,t)}function Bc(e,t){return e.mapKind=="message"?Wo(e,t):Yo(e,t)}function Jn(e,t,n){return e.mapKind=="message"?yo(e,t,n):t}function _t(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function Fa(e,t){switch(t){case b.STRING:return e;case b.INT32:case b.FIXED32:case b.UINT32:case b.SFIXED32:case b.SINT32:{const n=Number.parseInt(e);if(Number.isFinite(n))return n;break}case b.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case b.UINT64:case b.FIXED64:try{return T.uParse(e)}catch{}break;default:try{return T.parse(e)}catch{}break}return e}function Io(e,t){switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=T.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=T.uParse(t));break}return t}function Yo(e,t){switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=T.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=T.uParse(t));break}return t}var wa=Uint8Array.prototype.setFromBase64;function Xo(e){const t=e.length;let n=t-(t+3>>2);(t&3)==0&&e[t-1]=="="&&(n-=e[t-2]=="="?2:1);const o=new Uint8Array(n);let a=-1;if(wa)try{const r=wa.call(o,e);r.read==t&&(a=r.written)}catch{}return a<0&&(a=Cc(o,e)),a==n?o:o.subarray(0,a)}function Cc(e,t){const n=kc();let o=0,a=0,r,i=0;for(let s=0;s<t.length;s++){if(r=n[t.charCodeAt(s)],r===void 0)switch(t[s]){case"=":a=0;case`
|
|
51
|
-
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(a){case 0:i=r,a=1;break;case 1:e[o++]=i<<2|(r&48)>>4,i=r,a=2;break;case 2:e[o++]=(i&15)<<4|(r&60)>>2,i=r,a=3;break;case 3:e[o++]=(i&3)<<6|r,a=0;break}}if(a==1)throw Error("invalid base64 string");return o}var ka=Uint8Array.prototype.toBase64,Fc={std:{alphabet:"base64",omitPadding:!1},std_raw:{alphabet:"base64",omitPadding:!0},url:{alphabet:"base64url",omitPadding:!0}};function wc(e,t="std"){if(ka)return ka.call(e,Fc[t]);const n=yi(t),o=t=="std";let a="",r=0,i,s=0;for(let l=0;l<e.length;l++)switch(i=e[l],r){case 0:a+=n[i>>2],s=(i&3)<<4,r=1;break;case 1:a+=n[s|i>>4],s=(i&15)<<2,r=2;break;case 2:a+=n[s|i>>6],a+=n[i&63],r=0;break}return r&&(a+=n[s],o&&(a+="=",r==1&&(a+="="))),a}var $t,Ua,it;function yi(e){return $t||($t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),Ua=$t.slice(0,-2).concat("-","_")),e=="url"?Ua:$t}function kc(){if(!it){it=[];const e=yi("std");for(let t=0;t<e.length;t++)it[e[t].charCodeAt(0)]=t;it[45]=e.indexOf("+"),it[95]=e.indexOf("/")}return it}function At(e){let t=!1;const n=[];for(let o=0;o<e.length;o++){let a=e.charAt(o);switch(a){case"_":t=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":n.push(a),t=!1;break;default:t&&(t=!1,a=a.toUpperCase()),n.push(a);break}}return n.join("")}function Ii(e){return e.replace(/[A-Z]/g,t=>"_"+t.toLowerCase())}var Uc=new Set(["constructor","toString","toJSON","valueOf"]);function zt(e){return Uc.has(e)?e+"$":e}function Bo(e){for(const t of e.field)xt(t,"jsonName")||(t.jsonName=At(t.name));e.nestedType.forEach(Bo)}function Jc(e,t){const n=e.values.find(o=>o.name===t);if(!n)throw new Error(`cannot parse ${e} default value: ${t}`);return n.number}function xc(e,t){switch(e){case b.STRING:return t;case b.BYTES:{const n=Kc(t);if(n===!1)throw new Error(`cannot parse ${b[e]} default value: ${t}`);return n}case b.INT64:case b.SFIXED64:case b.SINT64:return T.parse(t);case b.UINT64:case b.FIXED64:return T.uParse(t);case b.DOUBLE:case b.FLOAT:switch(t){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return NaN;default:return parseFloat(t)}case b.BOOL:return t==="true";case b.INT32:case b.UINT32:case b.SINT32:case b.FIXED32:case b.SFIXED32:return parseInt(t,10)}}function Kc(e){const t=[],n={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){const a=this.tail.substring(0,o);return this.tail=this.tail.substring(o),a}return!1}};for(;n.next();)switch(n.c){case"\\":if(n.next())switch(n.c){case"\\":t.push(n.c.charCodeAt(0));break;case"b":t.push(8);break;case"f":t.push(12);break;case"n":t.push(10);break;case"r":t.push(13);break;case"t":t.push(9);break;case"v":t.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{const o=n.c,a=n.take(2);if(a===!1)return!1;const r=parseInt(o+a,8);if(Number.isNaN(r))return!1;t.push(r);break}case"x":{const o=n.c,a=n.take(2);if(a===!1)return!1;const r=parseInt(o+a,16);if(Number.isNaN(r))return!1;t.push(r);break}case"u":{const o=n.c,a=n.take(4);if(a===!1)return!1;const r=parseInt(o+a,16);if(Number.isNaN(r))return!1;const i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,r,!0),t.push(i[0],i[1],i[2],i[3]);break}case"U":{const o=n.c,a=n.take(8);if(a===!1)return!1;const r=T.uEnc(o+a),i=new Uint8Array(8),s=new DataView(i.buffer);s.setInt32(0,r.lo,!0),s.setInt32(4,r.hi,!0),t.push(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);break}}break;default:t.push(n.c.charCodeAt(0))}return new Uint8Array(t)}function*qn(e){switch(e.kind){case"file":for(const t of e.messages)yield t,yield*qn(t);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(const t of e.nestedMessages)yield t,yield*qn(t);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function Yi(...e){const t=zc();if(!e.length)return t;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(const o of e[0].file)za(o,t);return t}if("$typeName"in e[0]){let i=function(s){const l=[];for(const c of s.dependency){if(t.getFile(c)!=null||r.has(c))continue;const u=a(c);if(!u)throw new Error(`Unable to resolve ${c}, imported by ${s.name}`);"kind"in u?t.addFile(u,!1,!0):(r.add(u.name),l.push(u))}return l.concat(...l.map(i))};var n=i;const o=e[0],a=e[1],r=new Set;for(const s of[o,...i(o)].reverse())za(s,t)}else for(const o of e)for(const a of o.files)t.addFile(a);return t}function zc(){const e=new Map,t=new Map,n=new Map;return{kind:"registry",types:e,extendees:t,[Symbol.iterator](){return e.values()},get files(){return n.values()},addFile(o,a,r){if(n.set(o.proto.name,o),!a)for(const i of qn(o))this.add(i);if(r)for(const i of o.dependencies)this.addFile(i,a,r)},add(o){if(o.kind=="extension"){let a=t.get(o.extendee.typeName);a||t.set(o.extendee.typeName,a=new Map),a.set(o.number,o)}e.set(o.typeName,o)},get(o){return e.get(o)},getFile(o){return n.get(o)},getMessage(o){const a=e.get(o);return a?.kind=="message"?a:void 0},getEnum(o){const a=e.get(o);return a?.kind=="enum"?a:void 0},getExtension(o){const a=e.get(o);return a?.kind=="extension"?a:void 0},getExtensionFor(o,a){var r;return(r=t.get(o.typeName))===null||r===void 0?void 0:r.get(a)},getService(o){const a=e.get(o);return a?.kind=="service"?a:void 0}}}var Lc=998,jc=999,Hc=9999,Tc=9,Lt=10,Jt=11,Qc=12,Ja=14,Co=3,Mc=2,xa=1,Oc=0,xn=1,Ka=2,Dc=3,_c=1,$c=2,Pc=1,qc=2,ed=1002,Xi={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2,enforceProtoLimits:1},1002:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:3,defaultSymbolVisibility:4,enforceProtoLimits:2}};function za(e,t){var n,o;const a={kind:"file",proto:e,deprecated:(o=(n=e.options)===null||n===void 0?void 0:n.deprecated)!==null&&o!==void 0?o:!1,edition:ad(e),name:e.name.replace(/\.proto$/,""),dependencies:rd(e,t),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},r=new Map,i={get(s){return r.get(s)},add(s){var l;be(((l=s.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),r.set(s.typeName,s)}};for(const s of e.enumType)Bi(s,a,void 0,t);for(const s of e.messageType)Ci(s,a,void 0,t,i);for(const s of e.service)td(s,a,t);eo(a,t);for(const s of r.values())to(s,t,i);for(const s of a.messages)to(s,t,i),eo(s,t);t.addFile(a,!0)}function eo(e,t){switch(e.kind){case"file":for(const n of e.proto.extension){const o=no(n,e,t);e.extensions.push(o),t.add(o)}break;case"message":for(const n of e.proto.extension){const o=no(n,e,t);e.nestedExtensions.push(o),t.add(o)}for(const n of e.nestedMessages)eo(n,t);break}}function to(e,t,n){const o=e.proto.oneofDecl.map(r=>od(r,e)),a=new Set;for(const r of e.proto.field){const i=cd(r,o),s=no(r,e,t,i,n);e.fields.push(s),e.field[s.localName]=s,i===void 0?e.members.push(s):(i.fields.push(s),a.has(i)||(a.add(i),e.members.push(i)))}for(const r of o.filter(i=>a.has(i)))e.oneofs.push(r);for(const r of e.nestedMessages)to(r,t,n)}function Bi(e,t,n,o){var a,r,i,s,l,c;const u=id(e.name,e.value),h={kind:"enum",proto:e,deprecated:(r=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&r!==void 0?r:!1,file:t,parent:n,open:!0,name:e.name,typeName:Rn(e,n,t),value:{},values:[],sharedPrefix:u,toString(){return`enum ${this.typeName}`}};h.open=hd(h),o.add(h);for(const f of e.value){const Z=f.name;h.values.push(h.value[f.number]={kind:"enum_value",proto:f,deprecated:(s=(i=f.options)===null||i===void 0?void 0:i.deprecated)!==null&&s!==void 0?s:!1,parent:h,name:Z,localName:zt(u==null?Z:Z.substring(u.length)),number:f.number,jsonName:(l=sd(f))!==null&&l!==void 0?l:Z,toString(){return`enum value ${h.typeName}.${Z}`}})}((c=n?.nestedEnums)!==null&&c!==void 0?c:t.enums).push(h)}function Ci(e,t,n,o,a){var r,i,s,l;const c={kind:"message",proto:e,deprecated:(i=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&i!==void 0?i:!1,file:t,parent:n,name:e.name,typeName:Rn(e,n,t),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((s=e.options)===null||s===void 0?void 0:s.mapEntry)===!0?a.add(c):(((l=n?.nestedMessages)!==null&&l!==void 0?l:t.messages).push(c),o.add(c));for(const u of e.enumType)Bi(u,t,c,o);for(const u of e.nestedType)Ci(u,t,c,o,a)}function td(e,t,n){var o,a;const r={kind:"service",proto:e,deprecated:(a=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&a!==void 0?a:!1,file:t,name:e.name,typeName:Rn(e,void 0,t),methods:[],method:{},toString(){return`service ${this.typeName}`}};t.services.push(r),n.add(r);for(const i of e.method){const s=nd(i,r,n);r.methods.push(s),r.method[s.localName]=s}}function nd(e,t,n){var o,a,r,i;let s;e.clientStreaming&&e.serverStreaming?s="bidi_streaming":e.clientStreaming?s="client_streaming":e.serverStreaming?s="server_streaming":s="unary";const l=n.getMessage(Be(e.inputType)),c=n.getMessage(Be(e.outputType));be(l,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),be(c,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);const u=e.name;return{kind:"rpc",proto:e,deprecated:(a=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&a!==void 0?a:!1,parent:t,name:u,localName:zt(u.length?zt(u[0].toLowerCase()+u.substring(1)):u),methodKind:s,input:l,output:c,idempotency:(i=(r=e.options)===null||r===void 0?void 0:r.idempotencyLevel)!==null&&i!==void 0?i:Oc,toString(){return`rpc ${t.typeName}.${u}`}}}function od(e,t){return{kind:"oneof",proto:e,deprecated:!1,parent:t,fields:[],name:e.name,localName:zt(At(e.name)),toString(){return`oneof ${t.typeName}.${this.name}`}}}function no(e,t,n,o,a){var r,i,s;const l=a===void 0,c={kind:"field",proto:e,deprecated:(i=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:dd(e,o,l,t),utf8Validation:bd(e,t),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};let u;if(l){const G=t.kind=="file"?t:t.file,S=t.kind=="file"?void 0:t,X=Rn(e,S,G);c.kind="extension",c.file=G,c.parent=S,c.oneof=void 0,c.typeName=X,c.jsonName=`[${X}]`,u=()=>`extension ${X}`;const y=n.getMessage(Be(e.extendee));be(y,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),c.extendee=y}else{const G=t;be(G.kind=="message"),c.parent=G,c.oneof=o,c.localName=o?At(e.name):zt(At(e.name)),c.jsonName=e.jsonName,u=()=>`field ${G.typeName}.${e.name}`}Object.defineProperty(c,"toString",{value:u,writable:!0,enumerable:!0,configurable:!0});const h=e.label,f=e.type,Z=(s=e.options)===null||s===void 0?void 0:s.jstype;if(h===Co){const G=f==Jt?a?.get(Be(e.typeName)):void 0;if(G){c.fieldKind="map";const{key:S,value:X}=md(G);return c.mapKey=S.scalar,c.mapKind=X.fieldKind,c.message=X.message,c.delimitedEncoding=!1,c.enum=X.enum,c.scalar=X.scalar,c}switch(c.fieldKind="list",f){case Jt:case Lt:c.listKind="message",c.message=n.getMessage(Be(e.typeName)),be(c.message),c.delimitedEncoding=La(e,t);break;case Ja:c.listKind="enum",c.enum=n.getEnum(Be(e.typeName)),be(c.enum);break;default:c.listKind="scalar",c.scalar=f,c.longAsString=Z==xa;break}return c.packed=ud(e,t),c}switch(f){case Jt:case Lt:c.fieldKind="message",c.message=n.getMessage(Be(e.typeName)),be(c.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.delimitedEncoding=La(e,t),c.getDefaultValue=()=>{};break;case Ja:{const G=n.getEnum(Be(e.typeName));be(G!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.fieldKind="enum",c.enum=n.getEnum(Be(e.typeName)),c.getDefaultValue=()=>xt(e,"defaultValue")?Jc(G,e.defaultValue):void 0;break}default:c.fieldKind="scalar",c.scalar=f,c.longAsString=Z==xa,c.getDefaultValue=()=>xt(e,"defaultValue")?xc(f,e.defaultValue):void 0;break}return c}function ad(e){switch(e.syntax){case"":case"proto2":return Lc;case"proto3":return jc;case"editions":if(e.edition===Hc)return ed;if(e.edition in Xi)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function rd(e,t){return e.dependency.map(n=>{const o=t.getFile(n);if(!o)throw new Error(`Cannot find ${n}, imported by ${e.name}`);return o})}function id(e,t){const n=ld(e)+"_";for(const o of t){if(!o.name.toLowerCase().startsWith(n))return;const a=o.name.substring(n.length);if(a.length==0||/^\d/.test(a))return}return n}function sd(e){var t,n;let r;for(const i of(n=(t=e.options)===null||t===void 0?void 0:t.$unknown)!==null&&n!==void 0?n:[]){if(i.no!==998||i.wireType!==_.LengthDelimited)continue;const s=new Kt(new Kt(i.data).bytes());for(;s.pos<s.len;){const[l,c]=s.tag();l===1&&c===_.LengthDelimited?r=s.string():s.skip(c,l)}}return r}function ld(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,t=>"_"+t)).toLowerCase()}function Rn(e,t,n){let o;return t?o=`${t.typeName}.${e.name}`:n.proto.package.length>0?o=`${n.proto.package}.${e.name}`:o=`${e.name}`,o}function Be(e){return e.startsWith(".")?e.substring(1):e}function cd(e,t){if(!xt(e,"oneofIndex")||e.proto3Optional)return;const n=t[e.oneofIndex];return be(n,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),n}function dd(e,t,n,o){if(e.label==Mc)return Dc;if(e.label==Co)return Ka;if(t||e.proto3Optional||n)return xn;const a=Pe("fieldPresence",{proto:e,parent:o});return a==Ka&&(e.type==Jt||e.type==Lt)?xn:a}function ud(e,t){if(e.label!=Co)return!1;switch(e.type){case Tc:case Qc:case Lt:case Jt:return!1}const n=e.options;return n&&xt(n,"packed")?n.packed:_c==Pe("repeatedFieldEncoding",{proto:e,parent:t})}function md(e){const t=e.fields.find(o=>o.number===1),n=e.fields.find(o=>o.number===2);return be(t&&t.fieldKind=="scalar"&&t.scalar!=b.BYTES&&t.scalar!=b.FLOAT&&t.scalar!=b.DOUBLE&&n&&n.fieldKind!="list"&&n.fieldKind!="map"),{key:t,value:n}}function hd(e){var t;return Pc==Pe("enumType",{proto:e.proto,parent:(t=e.parent)!==null&&t!==void 0?t:e.file})}function La(e,t){return e.type==Lt?!0:$c==Pe("messageEncoding",{proto:e,parent:t})}function bd(e,t){return qc==Pe("utf8Validation",{proto:e,parent:t})}function Pe(e,t){var n,o;const a=(n=t.proto.options)===null||n===void 0?void 0:n.features;if(a){const r=a[e];if(r!=0)return r}if("kind"in t){if(t.kind=="message")return Pe(e,(o=t.parent)!==null&&o!==void 0?o:t.file);const r=Xi[t.edition];if(!r)throw new Error(`feature default for edition ${t.edition} not found`);return r[e]}return Pe(e,t.parent)}function be(e,t){if(!e)throw new Error(t)}function gd(e){const t=pd(e);return t.messageType.forEach(Bo),Yi(t,()=>{}).getFile(t.name)}function pd(e){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},e),{messageType:e.messageType.map(Fi),enumType:e.enumType.map(wi)}))}function Fi(e){var t,n,o,a,r,i,s,l;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:e.name,field:(n=(t=e.field)===null||t===void 0?void 0:t.map(Ad))!==null&&n!==void 0?n:[],extension:[],nestedType:(a=(o=e.nestedType)===null||o===void 0?void 0:o.map(Fi))!==null&&a!==void 0?a:[],enumType:(i=(r=e.enumType)===null||r===void 0?void 0:r.map(wi))!==null&&i!==void 0?i:[],extensionRange:(l=(s=e.extensionRange)===null||s===void 0?void 0:s.map(c=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},c)))!==null&&l!==void 0?l:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function Ad(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?fd(e.options):void 0}))}function fd(e){var t,n,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:(t=e.targets)!==null&&t!==void 0?t:[],editionDefaults:(o=(n=e.editionDefaults)===null||n===void 0?void 0:n.map(a=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},a)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function wi(e){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:e.name,reservedName:[],reservedRange:[],value:e.value.map(t=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},t))})}function v(e,t,...n){return n.reduce((o,a)=>o.nestedMessages[a],e.messages[t])}var Zd=gd({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}],extensionRange:[{start:536e6,end:536000001}]},{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:"option_dependency",number:15,type:9,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},{name:"visibility",number:11,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],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:990,end:999},{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},{name:"visibility",number:6,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],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",options:{}},{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",options:{}},{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:990,end:999},{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:990,end:999},{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",options:{deprecated:!0}},{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"},{name:"removal_error",number:5,type:9,label:1}]}],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:990,end:999},{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:990,end:999},{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:990,end:999},{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:990,end:999},{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:990,end:999},{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:990,end:999},{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}]}},{name:"enforce_naming_style",number:7,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnforceNamingStyle",options:{retention:2,targets:[1,2,3,4,5,6,7,8,9],editionDefaults:[{value:"STYLE_LEGACY",edition:900},{value:"STYLE2024",edition:1001},{value:"STYLE2026",edition:1002}]}},{name:"default_symbol_visibility",number:8,type:14,label:1,typeName:".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility",options:{retention:2,targets:[1],editionDefaults:[{value:"EXPORT_ALL",edition:900},{value:"EXPORT_TOP_LEVEL",edition:1001},{value:"STRICT",edition:1002}]}},{name:"enforce_proto_limits",number:9,type:14,label:1,typeName:".google.protobuf.FeatureSet.ProtoLimitsFeature.EnforceProtoLimits",options:{retention:2,targets:[6,3,4,5],editionDefaults:[{value:"LEGACY_NO_EXPLICIT_LIMITS",edition:900},{value:"PROTO_LIMITS2026",edition:1002}]}}],nestedType:[{name:"VisibilityFeature",enumType:[{name:"DefaultSymbolVisibility",value:[{name:"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",number:0},{name:"EXPORT_ALL",number:1},{name:"EXPORT_TOP_LEVEL",number:2},{name:"LOCAL_ALL",number:3},{name:"STRICT",number:4}]}]},{name:"ProtoLimitsFeature",enumType:[{name:"EnforceProtoLimits",value:[{name:"PROTO_LIMITS_UNKNOWN",number:0},{name:"LEGACY_NO_EXPLICIT_LIMITS",number:1},{name:"PROTO_LIMITS2026",number:2}]}]}],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}]},{name:"EnforceNamingStyle",value:[{name:"ENFORCE_NAMING_STYLE_UNKNOWN",number:0},{name:"STYLE2024",number:1},{name:"STYLE_LEGACY",number:2},{name:"STYLE2026",number:3}]}],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}]}],extensionRange:[{start:536e6,end:536000001}]},{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_2026",number:1002},{name:"EDITION_UNSTABLE",number:9999},{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}]},{name:"SymbolVisibility",value:[{name:"VISIBILITY_UNSET",number:0},{name:"VISIBILITY_LOCAL",number:1},{name:"VISIBILITY_EXPORT",number:2}]}]}),Rd=v(Zd,1),ja;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(ja||(ja={}));var Ha;(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"})(Ha||(Ha={}));var Ta;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(Ta||(Ta={}));var Qa;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})(Qa||(Qa={}));var Ma;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Ma||(Ma={}));var Oa;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(Oa||(Oa={}));var Da;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(Da||(Da={}));var _a;(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"})(_a||(_a={}));var $a;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})($a||($a={}));var Pa;(function(e){e[e.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",e[e.EXPORT_ALL=1]="EXPORT_ALL",e[e.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",e[e.LOCAL_ALL=3]="LOCAL_ALL",e[e.STRICT=4]="STRICT"})(Pa||(Pa={}));var qa;(function(e){e[e.PROTO_LIMITS_UNKNOWN=0]="PROTO_LIMITS_UNKNOWN",e[e.LEGACY_NO_EXPLICIT_LIMITS=1]="LEGACY_NO_EXPLICIT_LIMITS",e[e.PROTO_LIMITS2026=2]="PROTO_LIMITS2026"})(qa||(qa={}));var er;(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"})(er||(er={}));var tr;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(tr||(tr={}));var nr;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(nr||(nr={}));var or;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(or||(or={}));var ar;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(ar||(ar={}));var rr;(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"})(rr||(rr={}));var ir;(function(e){e[e.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",e[e.STYLE2024=1]="STYLE2024",e[e.STYLE_LEGACY=2]="STYLE_LEGACY",e[e.STYLE2026=3]="STYLE2026"})(ir||(ir={}));var sr;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(sr||(sr={}));var lr;(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_2026=1002]="EDITION_2026",e[e.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",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"})(lr||(lr={}));var cr;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(cr||(cr={}));function ki(e){return Object.assign(Object.assign({readUnknownFields:!0,recursionLimit:100},e),{depth:0})}function Qt(e,t,n){const o=ce(e);return Fo(e).read(o,new Kt(t),ki(n),t.byteLength),o}var Ui=new WeakMap;function Fo(e){let t=Ui.get(e);return t===void 0&&(t=Ed(e)),t}function Ed(e){const t=String(e),n=new Map,o={read:Vd(t,n),readGroup:Gd(t,n)};Ui.set(e,o);for(const a of e.fields)n.set(a.number,Ji(a));return o}function Vd(e,t){return(n,o,a,r)=>{var i;if(++a.depth>a.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${a.recursionLimit} reached`);const s=o.pos+r,l=(i=n.$unknown)!==null&&i!==void 0?i:[];for(;o.pos<s;){const[c,u]=o.tag(),h=t.get(c);if(h===void 0){const f=o.skip(u,c,a.recursionLimit-a.depth);a.readUnknownFields&&l.push({no:c,wireType:u,data:f});continue}h(n,o,a,u)}l.length>0&&(n.$unknown=l),a.depth--}}function Gd(e,t){return(n,o,a,r)=>{var i;if(++a.depth>a.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${a.recursionLimit} reached`);let s,l;const c=(i=n.$unknown)!==null&&i!==void 0?i:[];for(;o.pos<o.len&&([s,l]=o.tag(),l!=_.EndGroup);){const u=t.get(s);if(u===void 0){const h=o.skip(l,s,a.recursionLimit-a.depth);a.readUnknownFields&&c.push({no:s,wireType:l,data:h});continue}u(n,o,a,l)}if(l!=_.EndGroup||s!==r)throw new Error("invalid end group tag");c.length>0&&(n.$unknown=c),a.depth--}}function Sd(e,t,n,o,a){Ji(n)(e[me],t,a,o)}function Ji(e){switch(e.fieldKind){case"scalar":return Nd(e);case"enum":return vd(e);case"message":return Wd(e);case"list":return yd(e);case"map":return Id(e)}}function Nd(e){const t=mn(e.scalar,e.utf8Validation,e.longAsString),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(a,r)=>{a[o]={case:n,value:t(r)}}}return(o,a)=>{o[n]=t(a)}}function vd(e){var t;const n=e.localName,o=(t=e.oneof)===null||t===void 0?void 0:t.localName;if(e.enum.open)return o!==void 0?(i,s)=>{i[o]={case:n,value:s.int32()}}:(i,s)=>{i[n]=s.int32()};const a=e.enum.values,r=e.number;return(i,s,l,c)=>{var u;const h=s.int32();if(a.some(f=>f.number===h))o!==void 0?i[o]={case:n,value:h}:i[n]=h;else if(l.readUnknownFields){const f=[];ec(h,f);const Z=(u=i.$unknown)!==null&&u!==void 0?u:[];Z.push({no:r,wireType:c,data:new Uint8Array(f)}),i.$unknown=Z}}}function Wd(e){const t=e.localName,{toMessage:n,toLocal:o}=Se(e),a=xi(e);if(e.oneof){const r=e.oneof.localName;return(i,s,l)=>{const c=i[r],u=n(c.case===t?c.value:void 0);a(u,s,l),i[r]={case:t,value:o(u)}}}return(r,i,s)=>{const l=n(r[t]);a(l,i,s),r[t]=o(l)}}function xi(e){const t=Fo(e.message);if(e.delimitedEncoding){const n=e.number;return(o,a,r)=>t.readGroup(o,a,r,n)}return(n,o,a)=>t.read(n,o,a,o.uint32())}function yd(e){const t=e.localName;if(e.listKind=="message"){const{toMessage:i,toLocal:s}=Se(e),l=xi(e);return(c,u,h)=>{const f=i(void 0);l(f,u,h),c[t].push(s(f))}}const n=e.listKind=="enum"?b.INT32:e.scalar,o=e.listKind=="scalar"?e.longAsString:!1,a=mn(n,e.utf8Validation,o),r=n!=b.STRING&&n!=b.BYTES;return(i,s,l,c)=>{const u=i[t];if(c==_.LengthDelimited&&r){const h=s.uint32()+s.pos;for(;s.pos<h;)u.push(a(s))}else u.push(a(s))}}function Id(e){const t=e.localName,n=mn(e.mapKey,e.utf8Validation,!1),o=Ce(e.mapKey,!1);let a,r;switch(e.mapKind){case"scalar":{const i=e.scalar,s=mn(i,e.utf8Validation,!1);if(a=l=>s(l),i==b.BYTES)r=()=>new Uint8Array(0);else{const l=Ce(i,!1);r=()=>l}break}case"enum":{const i=e.enum.values[0].number;a=s=>s.int32(),r=()=>i;break}case"message":{const{toMessage:i,toLocal:s}=Se(e),l=Fo(e.message).read;a=(c,u,h)=>{const f=i(h);return l(f,c,u,c.uint32()),s(f)},r=()=>s(i(void 0));break}}return(i,s,l)=>{const c=i[t];let u,h;const f=s.uint32(),Z=s.pos+f;for(;s.pos<Z;){const[G]=s.tag();switch(G){case 1:u=n(s);break;case 2:h=a(s,l,h);break}}u===void 0&&(u=o),h===void 0&&(h=r()),fe(c,u,h)}}function mn(e,t,n){switch(e){case b.STRING:return o=>o.string(t);case b.BOOL:return o=>o.bool();case b.DOUBLE:return o=>o.double();case b.FLOAT:return o=>o.float();case b.INT32:return o=>o.int32();case b.INT64:return n?o=>String(o.int64()):o=>o.int64();case b.UINT64:return n?o=>String(o.uint64()):o=>o.uint64();case b.FIXED64:return n?o=>String(o.fixed64()):o=>o.fixed64();case b.BYTES:return o=>o.bytes();case b.FIXED32:return o=>o.fixed32();case b.SFIXED32:return o=>o.sfixed32();case b.SFIXED64:return n?o=>String(o.sfixed64()):o=>o.sfixed64();case b.SINT64:return n?o=>String(o.sint64()):o=>o.sint64();case b.UINT32:return o=>o.uint32();case b.SINT32:return o=>o.sint32()}}function oe(e,t){var n;const o=Qt(Rd,Xo(e));return o.messageType.forEach(Bo),o.dependency=(n=t?.map(a=>a.proto.name))!==null&&n!==void 0?n:[],Yi(o,a=>t?.find(r=>r.proto.name===a)).getFile(o.name)}var Ne=oe("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function Yd(e){return new Date(Xd(e))}function Xd(e){return Number(e.seconds)*1e3+Math.round(e.nanos/1e6)}var Ki=oe("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Bd=v(Ki,0),Cd=2,Fd=3,dr={writeUnknownFields:!0};function wd(e){return e?Object.assign(Object.assign({},dr),e):dr}function zi(e,t,n){const o=new fi;return wo(e)(o,wd(n),t),o.finish()}var Li=new WeakMap;function wo(e){let t=Li.get(e);return t===void 0&&(t=kd(e)),t}function kd(e){const t=e.typeName,n=e.fields.concat().sort((i,s)=>i.number-s.number),o=n[0],a=[],r=(i,s,l)=>{if(l.$typeName!==t&&o!==void 0)throw new Q(o,`cannot use ${o} with message ${l.$typeName}`,"ForeignFieldError");for(let u=0;u<a.length;u++)a[u](i,s,l);const c=l.$unknown;if(c!==void 0&&s.writeUnknownFields)for(let u=0;u<c.length;u++){const{no:h,wireType:f,data:Z}=c[u];i.tag(h,f).raw(Z)}};Li.set(e,r);for(const i of n)a.push(ji(i));return r}function ji(e){switch(e.fieldKind){case"message":case"scalar":case"enum":return Ud(e);case"list":return xd(e);case"map":return Kd(e)}}function Ud(e){const t=Jd(e),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(a,r,i)=>{const s=i[o];s.case===n&&t(a,r,s.value)}}if(e.presence!=Cd){const o=e.presence==Fd?`cannot encode ${e} to binary: required field not set`:void 0;return(a,r,i)=>{const s=i[n];if(s!==void 0&&Object.prototype.hasOwnProperty.call(i,n))t(a,r,s);else if(o!==void 0)throw new Error(o)}}if(e.fieldKind=="enum"){const o=e.enum.values[0].number;return(a,r,i)=>{const s=i[n];s!==o&&t(a,r,s)}}switch(e.scalar){case b.BOOL:return(o,a,r)=>{const i=r[n];i!==!1&&t(o,a,i)};case b.STRING:return(o,a,r)=>{const i=r[n];i!==""&&t(o,a,i)};case b.BYTES:return(o,a,r)=>{const i=r[n];(!(i instanceof Uint8Array)||i.byteLength>0)&&t(o,a,i)};case b.DOUBLE:case b.FLOAT:return(o,a,r)=>{const i=r[n];Object.is(i,0)||t(o,a,i)};default:return(o,a,r)=>{const i=r[n];i!=0&&t(o,a,i)}}}function Jd(e){switch(e.fieldKind){case"message":{const{toMessage:t}=Se(e),n=Hi(e);return(o,a,r)=>{n(o,a,t(r))}}case"scalar":case"enum":{const t=e.fieldKind=="enum"?b.INT32:e.scalar,n=e.number,o=Vn(t),a=En(t,e.parent.typeName,e.name);return(r,i,s)=>{r.tag(n,o),a(r,s)}}}}function xd(e){const t=e.localName,n=e.number;switch(e.listKind){case"message":{const{toMessage:o}=Se(e),a=Hi(e);return(r,i,s)=>{const l=s[t];for(let c=0;c<l.length;c++)a(r,i,o(l[c]))}}case"scalar":case"enum":{const o=e.listKind=="enum"?b.INT32:e.scalar,a=En(o,e.parent.typeName,e.name);if(e.packed)return(i,s,l)=>{const c=l[t];if(c.length!=0){i.tag(n,_.LengthDelimited).fork();for(let u=0;u<c.length;u++)a(i,c[u]);i.join()}};const r=Vn(o);return(i,s,l)=>{const c=l[t];for(let u=0;u<c.length;u++)i.tag(n,r),a(i,c[u])}}}}function Kd(e){const t=e.localName,n=e.number,o=zd(e);if(e.mapKind=="message"){const{toMessage:s}=Se(e),l=wo(e.message);return(c,u,h)=>{const f=h[t],Z=Object.keys(f);for(let G=0;G<Z.length;G++){const S=Z[G];c.tag(n,_.LengthDelimited).fork(),o(c,S),c.tag(2,_.LengthDelimited).fork(),l(c,u,s(f[S])),c.join(),c.join()}}}const a=e.mapKind=="enum"?b.INT32:e.scalar,r=Vn(a),i=En(a,e.parent.typeName,e.name);return(s,l,c)=>{const u=c[t],h=Object.keys(u);for(let f=0;f<h.length;f++){const Z=h[f];s.tag(n,_.LengthDelimited).fork(),o(s,Z),s.tag(2,r),i(s,u[Z]),s.join()}}}function zd(e){const t=Vn(e.mapKey),n=En(e.mapKey,e.parent.typeName,e.name),o=Ld(e.mapKey);return(a,r)=>{a.tag(1,t),n(a,o(r))}}function Ld(e){switch(e){case b.STRING:return t=>t;case b.BOOL:return t=>t==="true"?!0:t==="false"?!1:t;case b.UINT64:case b.FIXED64:return t=>{try{return T.uParse(t)}catch{return t}};case b.INT64:case b.SFIXED64:case b.SINT64:return t=>{try{return T.parse(t)}catch{return t}};default:return t=>{const n=Number.parseInt(t);return Number.isFinite(n)?n:t}}}function En(e,t,n){const o=jd(e);return(a,r)=>{try{o(a,r)}catch(i){throw i instanceof Error?new Error(`cannot encode field ${t}.${n} to binary: ${i.message}`):i}}}function jd(e){switch(e){case b.STRING:return(t,n)=>t.string(n);case b.BOOL:return(t,n)=>t.bool(n);case b.DOUBLE:return(t,n)=>t.double(n);case b.FLOAT:return(t,n)=>t.float(n);case b.INT32:return(t,n)=>t.int32(n);case b.INT64:return(t,n)=>t.int64(n);case b.UINT64:return(t,n)=>t.uint64(n);case b.FIXED64:return(t,n)=>t.fixed64(n);case b.BYTES:return(t,n)=>t.bytes(n);case b.FIXED32:return(t,n)=>t.fixed32(n);case b.SFIXED32:return(t,n)=>t.sfixed32(n);case b.SFIXED64:return(t,n)=>t.sfixed64(n);case b.SINT64:return(t,n)=>t.sint64(n);case b.UINT32:return(t,n)=>t.uint32(n);case b.SINT32:return(t,n)=>t.sint32(n)}}function Hd(e,t,n,o){ji(o)(e,t,n[me])}function Hi(e){const t=e.number,n=wo(e.message);return e.delimitedEncoding?(o,a,r)=>{o.tag(t,_.StartGroup),n(o,a,r),o.tag(t,_.EndGroup)}:(o,a,r)=>{o.tag(t,_.LengthDelimited).fork(),n(o,a,r),o.join()}}function Vn(e){switch(e){case b.BYTES:case b.STRING:return _.LengthDelimited;case b.DOUBLE:case b.FIXED64:case b.SFIXED64:return _.Bit64;case b.FIXED32:case b.SFIXED32:case b.FLOAT:return _.Bit32;default:return _.Varint}}function Td(e,t,n){let o=!1;return n||(n=ce(Bd),o=!0),n.value=zi(e,t),n.typeUrl=Od(t.$typeName),o?n:void 0}function Qd(e,t){return e.typeUrl===""?!1:(typeof t=="string"?t:t.typeName)===Ti(e.typeUrl)}function Md(e,t){if(e.typeUrl==="")return;const n=t.kind=="message"?t:t.getMessage(Ti(e.typeUrl));if(!(!n||!Qd(e,n)))return Qt(n,e.value)}function Od(e){return`type.googleapis.com/${e}`}function Ti(e){const t=e.lastIndexOf("/"),n=t>=0?e.substring(t+1):e;if(!n.length)throw new Error(`invalid type url: ${e}`);return n}var Ue=oe("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Dd=v(Ue,0),Qi=v(Ue,1),_d=v(Ue,2),oo;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(oo||(oo={}));var Mi=oe("Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZhbHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASABKAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoDSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUSDQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function $d(e,t,n){Oi(t,e);const o=qd(e.$unknown,t),[a,r,i]=Gn(t),s=ki(n);for(const l of o)Sd(a,new Kt(l.data),r,l.wireType,s);return i()}function Pd(e,t,n){var o;Oi(t,e);const a=((o=e.$unknown)!==null&&o!==void 0?o:[]).filter(c=>c.no!==t.number),[r,i]=Gn(t,n),s=new fi;Hd(s,{writeUnknownFields:!0},r,i);const l=new Kt(s.finish());for(;l.pos<l.len;){const[c,u]=l.tag(),h=l.skip(u,c);a.push({no:c,wireType:u,data:h})}e.$unknown=a}function qd(e,t){if(e===void 0)return[];if(t.fieldKind==="enum"||t.fieldKind==="scalar"){for(let n=e.length-1;n>=0;--n)if(e[n].no==t.number)return[e[n]];return[]}return e.filter(n=>n.no===t.number)}function Gn(e,t){const n=e.typeName,o=Object.assign(Object.assign({},e),{kind:"field",parent:e.extendee,localName:n}),a=Object.assign(Object.assign({},e.extendee),{fields:[o],members:[o],oneofs:[]}),r=ce(a,t!==void 0?{[n]:t}:void 0);return[Ic(a,r),o,()=>{const i=r[n];if(i===void 0){const s=e.message;return at(s)?Ce(s.fields[0].scalar,s.fields[0].longAsString):ce(s)}return i}]}function Oi(e,t){if(e.extendee.typeName!=t.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var Di=Date.parse("0001-01-01T00:00:00Z"),_i=Date.parse("9999-12-31T23:59:59Z");var eu=3,tu=2,ur={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function nu(e){return e?Object.assign(Object.assign({},ur),e):ur}function $i(e,t,n){return hn(e)(nu(n),t)}function ou(e,t,n){var o;const a=$i(e,t,n);return JSON.stringify(a,null,(o=n?.prettySpaces)!==null&&o!==void 0?o:0)}var ao=new WeakMap;function hn(e){let t=ao.get(e);return t===void 0&&(t=au(e)),t}function au(e){const t=e.typeName,n=iu(e);if(n!==void 0){const s=e.fields[0],l=(c,u)=>{if(u.$typeName!==t&&s!==void 0)throw new Q(s,`cannot use ${s} with message ${u.$typeName}`,"ForeignFieldError");return n(c,u)};return ao.set(e,l),l}const o=e.fields.concat().sort((s,l)=>s.number-l.number),a=o[0],r=[],i=(s,l)=>{if(l.$typeName!==t&&a!==void 0)throw new Q(a,`cannot use ${a} with message ${l.$typeName}`,"ForeignFieldError");const c={};for(let u=0;u<r.length;u++)r[u](s,l,c);return s.registry&&mu(c,s,s.registry,l,e),c};ao.set(e,i);for(const s of o){const l=su(s);r.push(s.jsonName==="__proto__"||s.name==="__proto__"?ru(l):l)}return i}function ru(e){return(t,n,o)=>{const a=Object.create(null);e(t,n,a);for(const r of Object.keys(a))fe(o,r,a[r])}}function iu(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n)=>hu(n,t);case"google.protobuf.Timestamp":return(t,n)=>pu(n);case"google.protobuf.Duration":return(t,n)=>bu(n);case"google.protobuf.FieldMask":return(t,n)=>gu(n);case"google.protobuf.Struct":return(t,n)=>ts(n);case"google.protobuf.Value":return(t,n)=>Jo(n);case"google.protobuf.ListValue":return(t,n)=>ns(n);default:if(at(e)){const t=e.fields[0],n=t.localName,o=Ce(t.scalar,!1),a=Sn(t);return(r,i)=>{const s=i[n];return a(r,s===void 0?o:s)}}return}}function su(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return lu(e);case"list":case"map":{const t=e.fieldKind=="list"?qi(e):es(e),n=e.name,o=e.jsonName,a=e.localName;return(r,i,s)=>{const l=t(r,i[a]);l!==void 0&&(s[r.useProtoFieldName?n:o]=l)}}}}function lu(e){const t=Pi(e),n=e.name,o=e.jsonName,a=e.localName;if(e.oneof){const r=e.oneof.localName;return(i,s,l)=>{const c=s[r];c.case===a&&(l[i.useProtoFieldName?n:o]=t(i,c.value))}}if(e.presence!=tu){const r=e.presence==eu?`cannot encode ${e} to JSON: required field not set`:void 0;return(i,s,l)=>{const c=s[a];if(c!==void 0&&Object.prototype.hasOwnProperty.call(s,a))l[i.useProtoFieldName?n:o]=t(i,c);else if(r!==void 0)throw new Error(r)}}if(e.fieldKind=="enum"){const r=e.enum.values[0].number;return(i,s,l)=>{const c=s[a];(c!==r||i.alwaysEmitImplicit)&&(l[i.useProtoFieldName?n:o]=t(i,c))}}switch(e.scalar){case b.BOOL:return(r,i,s)=>{const l=i[a];(l!==!1||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};case b.STRING:return(r,i,s)=>{const l=i[a];(l!==""||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};case b.BYTES:return(r,i,s)=>{const l=i[a];(!(l instanceof Uint8Array)||l.byteLength>0||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};case b.DOUBLE:case b.FLOAT:return(r,i,s)=>{const l=i[a];(!Object.is(l,0)||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};default:return(r,i,s)=>{const l=i[a];(l!=0||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))}}}function cu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return Pi(e);case"list":return qi(e);case"map":return es(e)}}function Pi(e){switch(e.fieldKind){case"scalar":return Sn(e);case"enum":return Uo(e);case"message":return ko(e)}}function ko(e){const{toMessage:t}=Se(e),n=hn(e.message);return(o,a)=>n(o,t(a))}function qi(e){const t=du(e);return(n,o)=>{const a=o;if(a.length==0&&!n.alwaysEmitImplicit)return;const r=[];for(let i=0;i<a.length;i++)r.push(t(n,a[i]));return r}}function du(e){switch(e.listKind){case"scalar":return Sn(e);case"enum":return Uo(e);case"message":return ko(e)}}function es(e){const t=uu(e);return(n,o)=>{const a=o,r=Object.keys(a);if(r.length==0&&!n.alwaysEmitImplicit)return;const i={};for(let s=0;s<r.length;s++){const l=r[s];fe(i,l,t(n,a[l]))}return i}}function uu(e){switch(e.mapKind){case"scalar":return Sn(e);case"enum":return Uo(e);case"message":return ko(e)}}function Uo(e){const t=e.enum;return t.typeName=="google.protobuf.NullValue"?(n,o)=>{if(typeof o!="number")throw mr(t,o);return null}:(n,o)=>{var a,r;if(typeof o!="number")throw mr(t,o);return n.enumAsInteger?o:(r=(a=t.value[o])===null||a===void 0?void 0:a.jsonName)!==null&&r!==void 0?r:o}}function mr(e,t){return new Error(`cannot encode ${e} to JSON: expected number, got ${te(t)}`)}function Sn(e){switch(e.scalar){case b.INT32:case b.SFIXED32:case b.SINT32:case b.FIXED32:case b.UINT32:return(t,n)=>{if(typeof n!="number")throw st(e,n);return n};case b.FLOAT:case b.DOUBLE:return(t,n)=>{if(typeof n!="number")throw st(e,n);return Number.isNaN(n)?"NaN":n===Number.POSITIVE_INFINITY?"Infinity":n===Number.NEGATIVE_INFINITY?"-Infinity":n};case b.STRING:return(t,n)=>{if(typeof n!="string")throw st(e,n);return n};case b.BOOL:return(t,n)=>{if(typeof n!="boolean")throw st(e,n);return n};case b.UINT64:case b.FIXED64:case b.INT64:case b.SFIXED64:case b.SINT64:return(t,n)=>{if(typeof n=="bigint"||typeof n=="string"||typeof n=="number"&&Number.isInteger(n))return n.toString();throw st(e,n)};case b.BYTES:return(t,n)=>{if(n instanceof Uint8Array)return wc(n);throw st(e,n)}}}function st(e,t){var n;return new Error(`cannot encode ${e} to JSON: ${(n=Ei(e,t))===null||n===void 0?void 0:n.message}`)}function mu(e,t,n,o,a){const r=o.$unknown;if(r===void 0)return;const i=new Set;for(let s=0;s<r.length;s++){const{no:l}=r[s];if(!i.has(l)){i.add(l);const c=n.getExtensionFor(a,l);if(!c)continue;const[u,h]=Gn(c,$d(o,c)),f=u[me],Z=cu(h)(t,f[h.localName]);Z!==void 0&&(e[c.jsonName]=Z)}}}function hu(e,t){if(e.typeUrl==="")return{};const{registry:n}=t;let o,a;if(n&&(o=Md(e,n),o&&(a=n.getMessage(o.$typeName))),!a||!o)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);const r=di(a)?{value:hn(a)(t,o)}:hn(a)(t,o);return r["@type"]=e.typeUrl,r}function bu(e){const t=Number(e.seconds),n=e.nanos;if(t>315576e6||t<-315576e6)throw new Error(`cannot encode message ${e.$typeName} to JSON: value out of range`);if(t>0&&n<0||t<0&&n>0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos sign must match seconds sign`);let o=e.seconds.toString();if(n!==0){let a=Math.abs(n).toString();a="0".repeat(9-a.length)+a,a.substring(3)==="000000"?a=a.substring(0,3):a.substring(6)==="000"&&(a=a.substring(0,6)),o+="."+a,n<0&&t==0&&(o="-"+o)}return o+"s"}function gu(e){return e.paths.map(t=>{if(Ii(At(t))!==t)throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "${t}" is irreversible`);return At(t)}).join(",")}function ts(e){const t={},n=Object.keys(e.fields);for(let o=0;o<n.length;o++){const a=n[o];fe(t,a,Jo(e.fields[a]))}return t}function Jo(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 ts(e.kind.value);case"listValue":return ns(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function ns(e){return e.values.map(Jo)}function pu(e){const t=Number(e.seconds)*1e3;if(t<Di||t>_i)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`);if(e.nanos>999999999)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be greater than 99999999`);let n="Z";if(e.nanos>0){const o=(e.nanos+1e9).toString().substring(1);o.substring(3)==="000000"?n="."+o.substring(0,3)+"Z":o.substring(6)==="000"?n="."+o.substring(0,6)+"Z":n="."+o+"Z"}return new Date(t).toISOString().replace(".000Z",n)}var Au=2;function fu(e){return Object.assign(Object.assign({ignoreUnknownFields:!1,recursionLimit:100},e),{depth:0})}function Zu(e,t,n){return os(e,Yu(t,e.typeName),n)}function os(e,t,n){const o=ce(e);return Ru(e,o,t,n),o}function Ru(e,t,n,o){try{ft(e)(t,n,fu(o))}catch(a){throw Rc(a)?new Error(`cannot decode ${a.field()} from JSON: ${a.message}`,{cause:a}):a}}var ro=new WeakMap;function ft(e){let t=ro.get(e);return t===void 0&&(t=Eu(e)),t}function Eu(e){const t=String(e),n=Vu(e);if(n!==void 0){const i=(s,l,c)=>{if(++c.depth>c.recursionLimit)throw new Error(`cannot decode ${t} from JSON: maximum recursion depth of ${c.recursionLimit} reached`);n(s,l,c),c.depth--};return ro.set(e,i),i}const o=e.typeName,a=new Map,r=(i,s,l)=>{var c;if(++l.depth>l.recursionLimit)throw new Error(`cannot decode ${t} from JSON: maximum recursion depth of ${l.recursionLimit} reached`);if(s==null||Array.isArray(s)||typeof s!="object")throw new Error(`cannot decode ${t} from JSON: ${te(s)}`);const u=new Map,h=new Set,f=Object.keys(s);for(let Z=0;Z<f.length;Z++){const G=f[Z],S=s[G],X=a.get(G);if(X!==void 0){const y=X.field;if(h.has(y))throw new Q(y,"set multiple times");if(h.add(y),X.oneofScalarNullSkip&&S===null)continue;if(X.oneof){const d=u.get(X.oneof);if(d!==void 0)throw new Q(X.oneof,`oneof set multiple times by ${d.name} and ${y.name}`);u.set(X.oneof,y)}X.read(i,S,l)}else{const y=G.startsWith("[")&&G.endsWith("]")?(c=l.registry)===null||c===void 0?void 0:c.getExtension(G.substring(1,G.length-1)):void 0;if(y?.extendee.typeName==o){const[d,m,p]=Gn(y);hr(m)(d[me],S,l),Pd(i,y,p())}if(y===void 0&&!l.ignoreUnknownFields)throw new Error(`cannot decode ${t} from JSON: key "${G}" is unknown`)}}l.depth--};ro.set(e,r);for(const i of e.fields){const s={read:hr(i),field:i,oneof:i.oneof,oneofScalarNullSkip:i.oneof!==void 0&&i.fieldKind=="scalar"};a.set(i.name,s).set(i.jsonName,s)}return r}function Vu(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n,o)=>Bu(t,n,o);case"google.protobuf.Timestamp":return(t,n)=>Cu(t,n);case"google.protobuf.Duration":return(t,n)=>Fu(t,n);case"google.protobuf.FieldMask":return(t,n)=>wu(t,n);case"google.protobuf.Struct":return(t,n,o)=>ss(t,n,o);case"google.protobuf.Value":return(t,n,o)=>jo(t,n,o);case"google.protobuf.ListValue":return(t,n,o)=>ls(t,n,o);default:if(at(e)){const t=e.fields[0],n=t.localName,o=t.scalar,a=t.longAsString,r=rs(t);return(i,s)=>{s===null?i[n]=Ce(o,a):i[n]=r(s)}}return}}function hr(e){switch(e.fieldKind){case"scalar":return Gu(e);case"enum":return Su(e);case"message":return Nu(e);case"list":return vu(e);case"map":return yu(e)}}function Gu(e){const t=rs(e),n=e.localName;if(e.oneof){const a=e.oneof.localName;return(r,i)=>{r[a]={case:n,value:t(i)}}}const o=as(e);return(a,r)=>{r===null?o(a):a[n]=t(r)}}function as(e){const t=e.localName;if(e.presence!=Au)return a=>{delete a[t]};if(e.fieldKind=="enum"){const a=e.enum.values[0].number;return r=>{r[t]=a}}const n=e.scalar,o=e.longAsString;return a=>{a[t]=Ce(n,o)}}function Su(e){const t=xo(e.enum),n=Ko(e.enum),o=e.localName,a=e.enum.typeName!="google.protobuf.NullValue";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{if(l===null&&a){s[i].case===o&&(s[i]={case:void 0});return}const u=t(l,c.ignoreUnknownFields);if(u===Zt)return;const h=n(u);if(h!==!0)throw new Q(e,pe(e,u,h));s[i]={case:o,value:u}}}const r=as(e);return(i,s,l)=>{if(s===null&&a){r(i);return}const c=t(s,l.ignoreUnknownFields);if(c===Zt)return;const u=n(c);if(u!==!0)throw new Q(e,pe(e,c,u));i[o]=c}}function Nu(e){const t=e.localName,{toMessage:n,toLocal:o}=Se(e),a=ft(e.message),r=e.message.typeName!="google.protobuf.Value";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{const u=s[i];if(l===null&&r){u.case===t&&(s[i]={case:void 0});return}const h=n(u.case===t?u.value:void 0);a(h,l,c),s[i]={case:t,value:o(h)}}}return(i,s,l)=>{if(s===null&&r){delete i[t];return}const c=n(i[t]);a(c,s,l),i[t]=o(c)}}function vu(e){const t=e.localName,n=Wu(e);return(o,a,r)=>{if(a===null)return;if(!Array.isArray(a))throw new Q(e,"expected Array, got "+te(a));const i=o[t];for(let s=0;s<a.length;s++){const l=n(a[s],r,i.length);l!==Zt&&i.push(l)}}}function Wu(e){switch(e.listKind){case"scalar":{const t=zo(e),n=He(e.scalar),o=Lo(e);return(a,r,i)=>{if(a===null)throw new Q(e,"list item must not be null");const s=t(a),l=n(s);if(l!==!0)throw new Q(e,`list item #${i+1}: ${pe(e,s,l)}`);return o(s)}}case"enum":{const t=xo(e.enum),n=Ko(e.enum),o=e.enum.typeName!="google.protobuf.NullValue";return(a,r,i)=>{if(a===null&&o)throw new Q(e,"list item must not be null");const s=t(a,r.ignoreUnknownFields);if(s===Zt)return s;const l=n(s);if(l!==!0)throw new Q(e,`list item #${i+1}: ${pe(e,s,l)}`);return s}}case"message":{const{toMessage:t,toLocal:n}=Se(e),o=ft(e.message),a=e.message.typeName!="google.protobuf.Value";return(r,i)=>{if(r===null&&a)throw new Q(e,"list item must not be null");const s=t(void 0);return o(s,r,i),n(s)}}}}function yu(e){const t=e.localName,n=e.mapKey,o=Iu(n),a=He(n);let r,i,s=c=>c,l=!0;switch(e.mapKind){case"scalar":r=zo(e),i=He(e.scalar),s=Lo(e);break;case"enum":{const c=xo(e.enum);r=(u,h)=>c(u,h.ignoreUnknownFields),i=Ko(e.enum),l=e.enum.typeName!="google.protobuf.NullValue";break}case"message":{const{toMessage:c,toLocal:u}=Se(e),h=ft(e.message);l=e.message.typeName!="google.protobuf.Value",r=(f,Z)=>{const G=c(void 0);return h(G,f,Z),u(G)};break}}return(c,u,h)=>{if(u===null)return;if(typeof u!="object"||Array.isArray(u))throw new Q(e,"expected object, got "+te(u));const f=c[t],Z=new Set,G=Object.keys(u);for(let S=0;S<G.length;S++){const X=G[S],y=u[X],d=o(X);if(Z.has(d))throw new Q(e,`duplicate map key "${X}"`);if(Z.add(d),y===null&&l)throw new Q(e,"map value must not be null");const m=r(y,h);if(m===Zt)continue;const p=a(d);if(p!==!0)throw new Q(e,`invalid map key: ${pe({scalar:n},d,p)}`);if(i!==void 0){const g=i(m);if(g!==!0)throw new Q(e,`map entry ${te(d)}: ${pe(e,m,g)}`)}fe(f,d,s(m))}}}var Zt=Symbol();function xo(e){const t=e.values[0].number,n=new Map;for(const o of e.values)n.set(o.jsonName,o.number);for(const o of e.values)n.set(o.name,o.number);return(o,a)=>{if(o===null)return t;switch(typeof o){case"number":if(Number.isInteger(o))return o;break;case"string":{const r=n.get(o);if(r!==void 0)return r;if(a)return Zt;break}}throw new Error(`cannot decode ${e} from JSON: ${te(o)}`)}}function Ko(e){if(e.open)return He(b.INT32);const t=e.values;return n=>t.some(o=>o.number===n)}function rs(e){const t=zo(e),n=He(e.scalar),o=Lo(e);return a=>{const r=t(a),i=n(r);if(i!==!0)throw new Q(e,pe(e,r,i));return o(r)}}function zo(e){switch(e.scalar){case b.DOUBLE:case b.FLOAT:return t=>{if(t==="NaN")return NaN;if(t==="Infinity")return Number.POSITIVE_INFINITY;if(t==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof t=="number"){if(Number.isNaN(t))throw new Q(e,"unexpected NaN number");if(!Number.isFinite(t))throw new Q(e,"unexpected infinite number");return t}if(typeof t=="string"){if(t===""||t.trim().length!==t.length)return t;const n=Number(t);return Number.isFinite(n)?n:t}return t};case b.INT32:case b.FIXED32:case b.SFIXED32:case b.SINT32:case b.UINT32:return is;case b.BYTES:return t=>{if(typeof t=="string"){if(t==="")return new Uint8Array(0);try{return Xo(t)}catch(n){throw new Q(e,n instanceof Error?n.message:String(n))}}return t};default:return t=>t}}function Lo(e){const t=e.fieldKind!=="map"&&e.longAsString;switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?T.parse(n):n;case b.FIXED64:case b.UINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?T.uParse(n):n;default:return n=>n}}function Iu(e){switch(e){case b.BOOL:return t=>{switch(t){case"true":return!0;case"false":return!1}return t};case b.INT32:case b.FIXED32:case b.UINT32:case b.SFIXED32:case b.SINT32:return is;case b.INT64:case b.SINT64:case b.SFIXED64:case b.UINT64:case b.FIXED64:return t=>/^-?0+$/.test(t)?"0":t.replace(/^(-?)0+(?=\d)/,"$1");default:return t=>t}}function is(e){if(typeof e=="string"){if(e===""||e.trim().length!==e.length)return e;const t=Number(e);return Number.isNaN(t)?e:t}return e}function Yu(e,t){let n;try{n=JSON.parse(e)}catch(o){const a=o instanceof Error?o.message:String(o);throw new Error(`cannot decode message ${t} from JSON: ${a}`,{cause:o})}return Xu(e,t),n}function Xu(e,t){const n=[];let o=!1,a=0;for(;a<e.length;)switch(e[a]){case"{":n.push(new Set),o=!0,a++;break;case"[":n.push(null),o=!1,a++;break;case"}":case"]":n.pop(),o=!1,a++;break;case",":o=n[n.length-1]!=null,a++;break;case":":o=!1,a++;break;case'"':{const r=a++;let i=!1;for(;a<e.length;){if(e[a]=="\\"){i=!0,a+=2;continue}if(e[a]=='"')break;a++}const s=a++,l=n[n.length-1];if(o&&l){const c=i?JSON.parse(e.substring(r,s+1)):e.substring(r+1,s);if(l.has(c))throw new Error(`cannot decode message ${t} from JSON: duplicate object key "${c}"`);l.add(c)}o=!1;break}default:a++;break}}function Bu(e,t,n){var o;if(t===null||Array.isArray(t)||typeof t!="object")throw new Error(`cannot decode message ${e.$typeName} from JSON: expected object but got ${te(t)}`);if(Object.keys(t).length==0)return;const a=t["@type"];if(typeof a!="string"||a=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);const r=a.includes("/")?a.substring(a.lastIndexOf("/")+1):a;if(!r.length)throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is invalid`);const i=(o=n.registry)===null||o===void 0?void 0:o.getMessage(r);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${a} is not in the type registry`);const s=ce(i);if(di(i)&&Object.prototype.hasOwnProperty.call(t,"value"))ft(i)(s,t.value,n);else{const l={};for(const c of Object.keys(t))c!=="@type"&&fe(l,c,t[c]);ft(i)(s,l,n)}Td(i,s,e)}function Cu(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const n=t.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!n)throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);const o=Date.parse(n[1]+"-"+n[2]+"-"+n[3]+"T"+n[4]+":"+n[5]+":"+n[6]+(n[8]?n[8]:"Z"));if(Number.isNaN(o))throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);if(o<Di||o>_i)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=T.parse(o/1e3),e.nanos=0,n[7]&&(e.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function Fu(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const n=t.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(n===null)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const o=Number(n[1]);if(o>315576e6||o<-315576e6)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);if(e.seconds=T.parse(o),typeof n[2]!="string")return;const a=n[2]+"0".repeat(9-n[2].length);e.nanos=parseInt(a),(o<0||Object.is(o,-0))&&(e.nanos=-e.nanos)}function wu(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);t!==""&&(e.paths=t.split(",").map(n=>{if(n.includes("_"))throw new Error(`cannot decode message ${e.$typeName} from JSON: path names must be lowerCamelCase`);return Ii(n)}))}function ss(e,t,n){if(typeof t!="object"||t==null||Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`);const o=Object.keys(t);for(let a=0;a<o.length;a++){const r=o[a],i=ce(Qi);jo(i,t[r],n),fe(e.fields,r,i)}}function jo(e,t,n){if(++n.depth>n.recursionLimit)throw new Error(`cannot decode ${e.$typeName} from JSON: maximum recursion depth of ${n.recursionLimit} reached`);switch(typeof t){case"number":e.kind={case:"numberValue",value:t};break;case"string":e.kind={case:"stringValue",value:t};break;case"boolean":e.kind={case:"boolValue",value:t};break;case"object":if(t===null)e.kind={case:"nullValue",value:oo.NULL_VALUE};else if(Array.isArray(t)){const o=ce(_d);ls(o,t,n),e.kind={case:"listValue",value:o}}else{const o=ce(Dd);ss(o,t,n),e.kind={case:"structValue",value:o}}break;default:throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`)}return n.depth--,e}function ls(e,t,n){if(!Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`);for(let o=0;o<t.length;o++){const a=ce(Qi);jo(a,t[o],n),e.values.push(a)}}function br(e){const t=E[e];return typeof t!="string"?e.toString():t[0].toLowerCase()+t.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var F=class dt extends Error{constructor(t,n=E.Unknown,o,a,r){super(ku(t,n)),this.name="ConnectError",this.isWireError=!1,Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=t,this.code=n,this.metadata=new Headers(o??{}),this.details=a??[],this.cause=r}static from(t,n=E.Unknown){return t instanceof dt?t:t instanceof Error?t.name=="AbortError"||t.name=="TimeoutError"?new dt(t.message,E.Canceled):new dt(t.message,n,void 0,void 0,t):new dt(String(t),n,void 0,void 0,t)}static[Symbol.hasInstance](t){return t instanceof Error?Object.getPrototypeOf(t)===dt.prototype?!0:t.name==="ConnectError"&&"code"in t&&typeof t.code=="number"&&"metadata"in t&&"details"in t&&Array.isArray(t.details)&&"rawMessage"in t&&typeof t.rawMessage=="string"&&"cause"in t:!1}findDetails(t){const n=t.kind==="message"?{getMessage:a=>a===t.typeName?t:void 0}:t,o=[];for(const a of this.details){if("desc"in a){n.getMessage(a.desc.typeName)&&o.push(ce(a.desc,a.value));continue}const r=n.getMessage(a.type);if(r)try{o.push(Qt(r,a.value))}catch{}}return o}};function ku(e,t){return e.length?`[${br(t)}] ${e}`:`[${br(t)}]`}function Uu(e,t,n){try{const o=Xo(e);return t?Qt(t,o,n):o}catch(o){throw F.from(o,E.DataLoss)}}function Ju(e,t){const n={};for(const o of e.methods){const a=t(o);a!=null&&(n[o.localName]=a)}return n}var ln=4294967295,Kn=ln,xu=1024;function Ku(e,t,n){if(t!=null||(t=Kn),e!=null||(e=ln),n!=null||(n=xu),t<1||t>Kn)throw new F(`writeMaxBytes ${t} must be >= 1 and <= ${Kn}`,E.Internal);if(e<1||e>ln)throw new F(`readMaxBytes ${e} must be >= 1 and <= ${ln}`,E.Internal);return{readMaxBytes:e,writeMaxBytes:t,compressMinBytes:n}}function zu(e,t){if(t>e)throw new F(`message size ${t} is larger than configured writeMaxBytes ${e}`,E.ResourceExhausted)}function cs(e,t,n=!1){if(t>e){let o=`message size is larger than configured readMaxBytes ${e}`;throw n&&(o=`message size ${t} is larger than configured readMaxBytes ${e}`),new F(o,E.ResourceExhausted)}}function Lu(e){return new ju(e)}var ju=class{constructor(e){this.readMaxBytes=e,this.header=new Uint8Array(5),this.headerView=new DataView(this.header.buffer),this.buf=[]}get byteLength(){return this.buf.reduce((e,t)=>e+t.byteLength,0)}decode(e){this.buf.push(e);const t=[];for(;;){let n=this.pop();if(!n)break;t.push(n)}return t}pop(){if(!(!this.env&&(this.env=this.head(),!this.env))&&this.cons(this.env.data)){const e=this.env;return this.env=void 0,e}}head(){if(!this.cons(this.header))return;const e=this.headerView.getUint8(0),t=this.headerView.getUint32(1);return cs(this.readMaxBytes,t,!0),{flags:e,data:new Uint8Array(t)}}cons(e){const t=e.byteLength;if(this.byteLength<t)return!1;let n=0;for(;n<t;){const o=this.buf.shift();o.byteLength>t-n?(e.set(o.subarray(0,t-n),n),this.buf.unshift(o.subarray(t-n)),n+=t-n):(e.set(o,n),n+=o.byteLength)}return!0}};async function Hu(e,t,n){let{flags:o,data:a}=e;if((o&1)===1)throw new F("invalid envelope, already compressed",E.Internal);return t&&a.byteLength>=n&&(a=await t.compress(a),o=o|1),{data:a,flags:o}}async function Tu(e,t,n){let{flags:o,data:a}=e;if((o&1)===1){if(!t)throw new F("received compressed envelope, but do not know how to decompress",E.Internal);a=await t.decompress(a,n),o=o^1}return{data:a,flags:o}}function Qu(e,t){const n=new Uint8Array(t.length+5);n.set(t,5);const o=new DataView(n.buffer,n.byteOffset,n.byteLength);return o.setUint8(0,e),o.setUint32(1,t.length),n}var Fe=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(r){n[r]=e[r]&&function(i){return new Promise(function(s,l){i=e[r](i),a(s,l,i.done,i.value)})}}function a(r,i,s,l){Promise.resolve(l).then(function(c){r({value:c,done:s})},i)}},z=function(e){return this instanceof z?(this.v=e,this):new z(e)},Ge=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),a,r=[];return a=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),a[Symbol.asyncIterator]=function(){return this},a;function i(Z){return function(G){return Promise.resolve(G).then(Z,h)}}function s(Z,G){o[Z]&&(a[Z]=function(S){return new Promise(function(X,y){r.push([Z,S,X,y])>1||l(Z,S)})},G&&(a[Z]=G(a[Z])))}function l(Z,G){try{c(o[Z](G))}catch(S){f(r[0][3],S)}}function c(Z){Z.value instanceof z?Promise.resolve(Z.value.v).then(u,h):f(r[0][2],Z)}function u(Z){l("next",Z)}function h(Z){l("throw",Z)}function f(Z,G){Z(G),r.shift(),r.length&&l(r[0][0],r[0][1])}},Mu=function(e){var t,n;return t={},o("next"),o("throw",function(a){throw a}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(a,r){t[a]=e[a]?function(i){return(n=!n)?{value:z(e[a](i)),done:!1}:r?r(i):i}:r}};function Ou(e,...t){const[n,o,a]=Du(t);let r=e,i;return a?.propagateDownStreamError===!0&&(r=i=ds(r)),r=cn(r,...n,{propagateDownStreamError:!1}),o(r).catch(s=>i?i.abort(s).then(()=>Promise.reject(s)):Promise.reject(s))}function Du(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,e.pop(),t]}function cn(e,...t){return Ge(this,arguments,function*(){var o;const[a,r]=_u(t);let i;const s=e[Symbol.asyncIterator]();let l={[Symbol.asyncIterator](){return s}};r?.propagateDownStreamError===!0&&(l=i=ds(l));for(const u of a)l=u(l);const c=l[Symbol.asyncIterator]();try{for(;;){const u=yield z(c.next());if(u.done===!0)break;if(!i){yield yield z(u.value);continue}try{yield yield z(u.value)}catch(h){throw yield z(i.abort(h)),h}}}finally{r?.propagateDownStreamError===!0&&((o=s.return)===null||o===void 0||o.call(s).catch(()=>{}))}})}function _u(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,t]}function gr(e,t,n){return t===void 0||n===void 0?function(o){return Ge(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const h=s;yield yield z({flags:0,data:e.serialize(h)})}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield z(i.call(c)))}finally{if(r)throw r.error}}})}:function(o){return Ge(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const h=s;let f,Z=0;h.end?(Z=Z|t,f=n.serialize(h.value)):f=e.serialize(h.value),yield yield z({flags:Z,data:f})}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield z(i.call(c)))}finally{if(r)throw r.error}}})}}function pr(e,t,n){return n&&t!==void 0?function(o){return Ge(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const{flags:h,data:f}=s;(h&t)===t?yield yield z({value:n.parse(f),end:!0}):yield yield z({value:e.parse(f),end:!1})}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield z(i.call(c)))}finally{if(r)throw r.error}}})}:function(o){return Ge(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const{flags:h,data:f}=s;if(t!==void 0&&(h&t)===t){if(n===null)throw new F("unexpected end flag",E.InvalidArgument);continue}yield yield z(e.parse(f))}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield z(i.call(c)))}finally{if(r)throw r.error}}})}}function Ar(e,t){return function(n){return Ge(this,arguments,function*(){var o,a,r,i;try{for(var s=!0,l=Fe(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z(Hu(i,e,t)))}catch(u){a={error:u}}finally{try{!s&&!o&&(r=l.return)&&(yield z(r.call(l)))}finally{if(a)throw a.error}}})}}function fr(e,t){return function(n){return Ge(this,arguments,function*(){var o,a,r,i;try{for(var s=!0,l=Fe(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z(Tu(i,e,t)))}catch(u){a={error:u}}finally{try{!s&&!o&&(r=l.return)&&(yield z(r.call(l)))}finally{if(a)throw a.error}}})}}function Zr(){return function(e){return Ge(this,arguments,function*(){var t,n,o,a;try{for(var r=!0,i=Fe(e),s;s=yield z(i.next()),t=s.done,!t;r=!0){a=s.value,r=!1;const{flags:l,data:c}=a;yield yield z(Qu(l,c))}}catch(l){n={error:l}}finally{try{!r&&!t&&(o=i.return)&&(yield z(o.call(i)))}finally{if(n)throw n.error}}})}}function Rr(e){return function(t){return Ge(this,arguments,function*(){var n,o,a,r;const i=Lu(e);try{for(var s=!0,l=Fe(t),c;c=yield z(l.next()),n=c.done,!n;s=!0){r=c.value,s=!1;const u=r;for(const h of i.decode(u))yield yield z(h)}}catch(u){o={error:u}}finally{try{!s&&!n&&(a=l.return)&&(yield z(a.call(l)))}finally{if(o)throw o.error}}if(i.byteLength>0)throw new F("protocol error: incomplete envelope",E.InvalidArgument)})}}function ds(e){const t=e[Symbol.asyncIterator]();if(t.throw===void 0)throw new Error("AsyncIterable does not implement throw");const n=t;let o,a,r={next(){return a=n.next().finally(()=>{a=void 0}),a},throw(s){return n.throw(s)}};t.return!==void 0&&(r=Object.assign(Object.assign({},r),{return(s){return n.return(s)}}));let i=!1;return{abort(s){if(o)return o.state;const l=()=>n.throw(s).then(c=>c.done===!0?"completed":"caught",()=>"rethrown");return a?(o={reason:s,state:a.then(l,l)},o.state):(o={reason:s,state:l()},o.state)},[Symbol.asyncIterator](){if(i)throw new Error("AsyncIterable cannot be re-used");return i=!0,r}}}function us(e){return Ge(this,arguments,function*(){yield z(yield*Mu(Fe(e)))})}var ms=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(r){n[r]=e[r]&&function(i){return new Promise(function(s,l){i=e[r](i),a(s,l,i.done,i.value)})}}function a(r,i,s,l){Promise.resolve(l).then(function(c){r({value:c,done:s})},i)}},Rt=function(e){return this instanceof Rt?(this.v=e,this):new Rt(e)},$u=function(e){var t,n;return t={},o("next"),o("throw",function(a){throw a}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(a,r){t[a]=e[a]?function(i){return(n=!n)?{value:Rt(e[a](i)),done:!1}:r?r(i):i}:r}},Pu=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),a,r=[];return a=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),a[Symbol.asyncIterator]=function(){return this},a;function i(Z){return function(G){return Promise.resolve(G).then(Z,h)}}function s(Z,G){o[Z]&&(a[Z]=function(S){return new Promise(function(X,y){r.push([Z,S,X,y])>1||l(Z,S)})},G&&(a[Z]=G(a[Z])))}function l(Z,G){try{c(o[Z](G))}catch(S){f(r[0][3],S)}}function c(Z){Z.value instanceof Rt?Promise.resolve(Z.value.v).then(u,h):f(r[0][2],Z)}function u(Z){l("next",Z)}function h(Z){l("throw",Z)}function f(Z,G){Z(G),r.shift(),r.length&&l(r[0][0],r[0][1])}};function ve(e,t){return Ju(e,n=>{switch(n.methodKind){case"unary":return qu(t,n);case"server_streaming":return em(t,n);case"client_streaming":return tm(t,n);case"bidi_streaming":return nm(t,n);default:return null}})}function qu(e,t){return async(n,o)=>{var a,r;const i=await e.unary(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);return(a=o?.onHeader)===null||a===void 0||a.call(o,i.header),(r=o?.onTrailer)===null||r===void 0||r.call(o,i.trailer),i.message}}function em(e,t){return(n,o)=>hs(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,us([n]),o?.contextValues),o)}function tm(e,t){return async(n,o)=>{var a,r,i,s,l,c;const u=await e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);(l=o?.onHeader)===null||l===void 0||l.call(o,u.header);let h,f=0;try{for(var Z=!0,G=ms(u.message),S;S=await G.next(),a=S.done,!a;Z=!0)s=S.value,Z=!1,h=s,f++}catch(X){r={error:X}}finally{try{!Z&&!a&&(i=G.return)&&await i.call(G)}finally{if(r)throw r.error}}if(!h)throw new F("protocol error: missing response message",E.Unimplemented);if(f>1)throw new F("protocol error: received extra messages for client streaming method",E.Unimplemented);return(c=o?.onTrailer)===null||c===void 0||c.call(o,u.trailer),h}}function nm(e,t){return(n,o)=>hs(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues),o)}function hs(e,t){const n=(function(){return Pu(this,arguments,function*(){var o,a;const r=yield Rt(e);(o=t?.onHeader)===null||o===void 0||o.call(t,r.header),yield Rt(yield*$u(ms(r.message))),(a=t?.onTrailer)===null||a===void 0||a.call(t,r.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function om(...e){const t=new AbortController,n=e.filter(a=>a!==void 0).concat(t.signal);for(const a of n){if(a.aborted){o.apply(a);break}a.addEventListener("abort",o)}function o(){t.signal.aborted||t.abort(jt(this));for(const a of n)a.removeEventListener("abort",o)}return t}function am(e){const t=new AbortController,n=()=>{t.abort(new F("the operation timed out",E.DeadlineExceeded))};let o;return e!==void 0&&(e<=0?n():o=setTimeout(n,e)),{signal:t.signal,cleanup:()=>clearTimeout(o)}}function jt(e){if(!e.aborted)return;if(e.reason!==void 0)return e.reason;const t=new Error("This operation was aborted");return t.name="AbortError",t}function Er(){return{get(e){return e.id in this?this[e.id]:e.defaultValue},set(e,t){return this[e.id]=t,this},delete(e){return delete this[e.id],this}}}function rm(e){const t=new Headers,n=new TextDecoder().decode(e).split(`\r
|
|
52
|
-
`);for(const o of n){if(o==="")continue;const a=o.indexOf(":");if(a>0){const r=o.substring(0,a).trim(),i=o.substring(a+1).trim();t.append(r,i)}}return t}function
|
|
53
|
-
`)}),new TextEncoder().encode(t.join(""))}function
|
|
54
|
-
`),details:{errors:e.reasons}};if(e instanceof
|
|
55
|
-
`):n.message,errorCode:Et(n.body,"errorCode")??n.code,correlationId:Et(n.body,"correlationId"),details:n.body}}return e.code===E.Canceled?{exitCode:P.UNKNOWN,message:"The request was cancelled."}:
|
|
56
|
-
`;const n=[e.status?`status=${e.status}`:void 0,e.errorCode?`errorCode=${e.errorCode}`:void 0,e.correlationId?`correlationId=${e.correlationId}`:void 0].filter(Boolean),o=n.length>0?` (${n.join(", ")})`:"";return[`${e.message}${o}`,...
|
|
50
|
+
`}var E;(function(e){e[e.Canceled=1]="Canceled",e[e.Unknown=2]="Unknown",e[e.InvalidArgument=3]="InvalidArgument",e[e.DeadlineExceeded=4]="DeadlineExceeded",e[e.NotFound=5]="NotFound",e[e.AlreadyExists=6]="AlreadyExists",e[e.PermissionDenied=7]="PermissionDenied",e[e.ResourceExhausted=8]="ResourceExhausted",e[e.FailedPrecondition=9]="FailedPrecondition",e[e.Aborted=10]="Aborted",e[e.OutOfRange=11]="OutOfRange",e[e.Unimplemented=12]="Unimplemented",e[e.Internal=13]="Internal",e[e.Unavailable=14]="Unavailable",e[e.DataLoss=15]="DataLoss",e[e.Unauthenticated=16]="Unauthenticated"})(E||(E={}));function Ro(e,t){return e!==null&&typeof e=="object"&&"$typeName"in e&&typeof e.$typeName=="string"?t===void 0?!0:t.typeName===e.$typeName:!1}var b;(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"})(b||(b={}));function ac(){const e=this.buf;let t=this.pos,n=0,o=0;for(let r=0;r<28;r+=7){const i=e[t++];if(n|=(i&127)<<r,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}const a=e[t++];if(n|=(a&15)<<28,o=(a&112)>>4,(a&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}for(let r=3;r<=31;r+=7){const i=e[t++];if(o|=(i&127)<<r,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}throw new Error("invalid varint")}var sn=4294967296;function Wa(e){const t=e[0]==="-";t&&(e=e.slice(1));const n=1e6;let o=0,a=0;function r(i,s){const l=Number(e.slice(i,s));a*=n,o=o*n+l,o>=sn&&(a=a+(o/sn|0),o=o%sn)}return r(-24,-18),r(-18,-12),r(-12,-6),r(-6),t?ui(o,a):Eo(o,a)}function rc(e,t){let n=Eo(e,t);const o=n.hi&2147483648;o&&(n=ui(n.lo,n.hi));const a=di(n.lo,n.hi);return o?"-"+a:a}function di(e,t){if({lo:e,hi:t}=ic(e,t),t<=2097151)return String(sn*t+e);const n=e&16777215,o=(e>>>24|t<<8)&16777215,a=t>>16&65535;let r=n+o*6777216+a*6710656,i=o+a*8147497,s=a*2;const l=1e7;return r>=l&&(i+=Math.floor(r/l),r%=l),i>=l&&(s+=Math.floor(i/l),i%=l),s.toString()+ya(i)+ya(r)}function ic(e,t){return{lo:e>>>0,hi:t>>>0}}function Eo(e,t){return{lo:e|0,hi:t|0}}function ui(e,t){return t=~t,e?e=~e+1:t+=1,Eo(e,t)}var ya=e=>{const t=String(e);return"0000000".slice(t.length)+t};function sc(e,t){if(e>>>0<128){t.push(e);return}if(e>=0){for(;e>127;)t.push(e&127|128),e=e>>>7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e=e>>7;t.push(1)}}function lc(){let e=this.buf[this.pos++];if((e&128)===0)return this.assertBounds(),e;let t=e&127;if(e=this.buf[this.pos++],t|=(e&127)<<7,(e&128)===0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<14,(e&128)===0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<21,(e&128)===0)return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let n=5;(e&128)!==0&&n<10;n++)e=this.buf[this.pos++];if((e&128)!==0)throw new Error("invalid varint");return this.assertBounds(),t>>>0}var T=cc();function cc(){const 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"&&(globalThis.Deno||globalThis.Bun||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){const t=BigInt("-9223372036854775808"),n=BigInt("9223372036854775807"),o=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(r){const i=typeof r=="bigint"?r:BigInt(r);if(i>n||i<t)throw new Error(`invalid int64: ${r}`);return i},uParse(r){const i=typeof r=="bigint"?r:BigInt(r);if(i>a||i<o)throw new Error(`invalid uint64: ${r}`);return i},enc(r){return e.setBigInt64(0,this.parse(r),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(r){return e.setBigInt64(0,this.uParse(r),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(r,i){return e.setInt32(0,r,!0),e.setInt32(4,i,!0),e.getBigInt64(0,!0)},uDec(r,i){return e.setInt32(0,r,!0),e.setInt32(4,i,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),Ia(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),Ya(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),Ia(t),Wa(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),Ya(t),Wa(t)},dec(t,n){return rc(t,n)},uDec(t,n){return di(t,n)}}}function Ia(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function Ya(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function Ce(e,t){switch(e){case b.STRING:return"";case b.BOOL:return!1;case b.DOUBLE:case b.FLOAT:return 0;case b.INT64:case b.UINT64:case b.SFIXED64:case b.FIXED64:case b.SINT64:return t?"0":T.zero;case b.BYTES:return new Uint8Array(0);default:return 0}}function dc(e,t){switch(e){case b.BOOL:return t===!1;case b.STRING:return t==="";case b.BYTES:return t instanceof Uint8Array&&!t.byteLength;case b.DOUBLE:case b.FLOAT:return Object.is(t,0);default:return t==0}}var mi=2,me=Symbol.for("reflect unsafe local");function uc(e,t){const n=e[t.localName].case;return n===void 0?n:t.fields.find(o=>o.localName===n)}function mc(e,t){const n=t.localName;if(t.oneof)return e[t.oneof.localName].case===n;if(t.presence!=mi)return e[n]!==void 0&&Object.prototype.hasOwnProperty.call(e,n);switch(t.fieldKind){case"list":return e[n].length>0;case"map":return Object.keys(e[n]).length>0;case"scalar":return!dc(t.scalar,e[n]);case"enum":return e[n]!==t.enum.values[0].number}throw new Error("message field with implicit presence")}function Jt(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==void 0}function hc(e,t){if(t.oneof){const n=e[t.oneof.localName];return n.case===t.localName?n.value:void 0}return e[t.localName]}function bc(e,t,n){t.oneof?e[t.oneof.localName]={case:t.localName,value:n}:e[t.localName]=n}function fe(e,t,n){t==="__proto__"?Object.defineProperty(e,"__proto__",{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function gc(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function pc(e,t){const n=t.localName;if(t.oneof){const o=t.oneof.localName;e[o].case===n&&(e[o]={case:void 0})}else if(t.presence!=mi)delete e[n];else switch(t.fieldKind){case"map":e[n]={};break;case"list":e[n]=[];break;case"enum":e[n]=t.enum.values[0].number;break;case"scalar":e[n]=Ce(t.scalar,t.longAsString);break}}function He(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Vo(e,t){var n,o,a,r;if(He(e)&&me in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){const i=t,s=e.field();return i.listKind==s.listKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((a=i.enum)===null||a===void 0?void 0:a.typeName)===((r=s.enum)===null||r===void 0?void 0:r.typeName)}return!0}return!1}function Go(e,t){var n,o,a,r;if(He(e)&&me in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){const i=t,s=e.field();return i.mapKey===s.mapKey&&i.mapKind==s.mapKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((a=i.enum)===null||a===void 0?void 0:a.typeName)===((r=s.enum)===null||r===void 0?void 0:r.typeName)}return!0}return!1}function So(e,t){return He(e)&&me in e&&"desc"in e&&He(e.desc)&&e.desc.kind==="message"&&(t===void 0||e.desc.typeName==t.typeName)}function Ac(e){return bi(e.$typeName)}function rt(e){const t=e.fields[0];return bi(e.typeName)&&t!==void 0&&t.fieldKind=="scalar"&&t.name=="value"&&t.number==1}function hi(e){switch(e.typeName){case"google.protobuf.Any":case"google.protobuf.Timestamp":case"google.protobuf.Duration":case"google.protobuf.FieldMask":case"google.protobuf.Struct":case"google.protobuf.Value":case"google.protobuf.ListValue":return!0;default:return rt(e)}}var fc=new Set(["google.protobuf.DoubleValue","google.protobuf.FloatValue","google.protobuf.Int64Value","google.protobuf.UInt64Value","google.protobuf.Int32Value","google.protobuf.UInt32Value","google.protobuf.BoolValue","google.protobuf.StringValue","google.protobuf.BytesValue"]);function bi(e){return fc.has(e)}var Zc=999,Rc=998,gi=2;function ce(e,t){return Ro(t,e)?t:pi(e)(t)}var Xa=new WeakMap;function pi(e){let t=Xa.get(e);return t===void 0&&(t=Ec(e),Xa.set(e,t)),t}var eo=0,Ai=1,fi=2,Zi=3;function Ec(e){const t=e.typeName,{properties:n,prototype:o}=Vc(e);return a=>{let r;o!==void 0?(r=Object.create(o),r.$typeName=t):r={$typeName:t};for(let i=0;i<n.length;i++){const s=n[i],l=s.name,c=a?.[l];switch(s.kind){case eo:c!=null?r[l]=s.convert!==void 0?s.convert(c):c:s.constant!==void 0&&(r[l]=s.constant);break;case Ai:r[l]=s.convert!==void 0&&Array.isArray(c)?c.map(s.convert):c??[];break;case fi:if(s.convert===void 0||!He(c))r[l]=c??{};else{const u={},h=Object.keys(c);for(let A=0;A<h.length;A++)fe(u,h[A],s.convert(c[h[A]]));r[l]=u}break;case Zi:{const u=c;if(u?.case!=null){const h=s.convert.get(u.case);if(h!==void 0){r[l]={case:u.case,value:h(u.value)};break}}r[l]={case:void 0};break}}}return r}}function Vc(e){var t,n;const o=[],a={},r=Sc(e);for(const i of e.members){const s=i.localName;if(i.kind=="oneof"){o.push({name:s,kind:Zi,constant:void 0,convert:Gc(i)});continue}switch(i.fieldKind){case"message":o.push({name:s,kind:eo,constant:void 0,convert:ln(i)});break;case"list":o.push({name:s,kind:Ai,constant:void 0,convert:i.listKind=="message"?(t=ln(i))!==null&&t!==void 0?t:(l=>l):i.scalar==b.BYTES?kt:void 0});break;case"map":o.push({name:s,kind:fi,constant:void 0,convert:i.mapKind=="message"?(n=ln(i))!==null&&n!==void 0?n:(l=>l):i.scalar==b.BYTES?kt:void 0});break;default:{const l=Nc(i);o.push({name:s,kind:eo,constant:i.presence==gi?l:void 0,convert:i.fieldKind=="scalar"&&i.scalar==b.BYTES?kt:void 0}),r&&(a[s]=l);break}}}return{properties:o,prototype:r?a:void 0}}function Gc(e){const t=new Map;for(const n of e.fields){let o;n.fieldKind=="message"?o=ln(n):n.fieldKind=="scalar"&&n.scalar==b.BYTES&&(o=kt),t.set(n.localName,o??(a=>a))}return t}function ln(e){if(e.fieldKind=="message"&&!e.oneof&&rt(e.message))return e.message.fields[0].scalar==b.BYTES?kt:void 0;if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return;const t=e.message;let n;return o=>!He(o)||Ro(o,t)?o:(n!=null||(n=pi(t)),n(o))}function kt(e){return Array.isArray(e)?new Uint8Array(e):e}function Sc(e){switch(e.file.edition){case Zc:return!1;case Rc:return!0;default:return e.fields.some(t=>t.presence!=gi&&t.fieldKind!="message"&&!t.oneof)}}function Nc(e){const t=e.getDefaultValue();return t!==void 0?e.fieldKind=="scalar"&&e.longAsString?t.toString():t:e.fieldKind=="scalar"?Ce(e.scalar,e.longAsString):e.enum.values[0].number}var vc=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],Q=class extends Error{constructor(e,t,n="FieldValueInvalidError"){super(t),this.name=n,this.field=()=>e}};function Wc(e){return e instanceof Error&&vc.includes(e.name)&&"field"in e&&typeof e.field=="function"}var to;function yc(e){var t;to=Object.assign(Object.assign({},e),{encodeUtf8Into:(t=e.encodeUtf8Into)!==null&&t!==void 0?t:Ri(e.encodeUtf8.bind(e))})}function No(){if(!to){const e=globalThis;if(!e.TextEncoder||!e.TextDecoder)throw new Error("encoding API missing: install TextEncoder and TextDecoder on globalThis");const t=new e.TextEncoder,n=new e.TextDecoder;let o;const a={encodeUtf8(i){return t.encode(i)},decodeUtf8(i,s){return s?(o||(o=new e.TextDecoder("utf-8",{fatal:!0})),o.decode(i)):n.decode(i)},checkUtf8(i){try{return!0}catch{return!1}}};t.encodeInto&&(a.encodeUtf8Into=t.encodeInto.bind(t));const r=String.prototype.isWellFormed;r&&(a.checkUtf8=i=>r.call(i)),yc(a)}return to}function Ri(e){return(t,n)=>{const o=e(t);return n.set(o),{written:o.byteLength}}}var _;(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"})(_||(_={}));var Ei=class{constructor(e){this.stackPos=[],this.encodeUtf8Into=e?Ri(e):No().encodeUtf8Into,this.buffer=Vi,this.viewCache=Yc,this.pos=0}ensureCapacity(e){const t=this.pos+e;if(t>this.buffer.length){let n=this.buffer.length||Ic;for(;n<t;)n*=2;const o=new Uint8Array(n);this.pos>0&&o.set(this.buffer),this.buffer=o}}view(){const e=this.buffer,t=this.viewCache;if(t.byteLength===e.byteLength)return t;const n=new DataView(e.buffer);return this.viewCache=n,n}finish(){const e=this.buffer.slice(0,this.pos);return this.pos=0,this.stackPos=[],e}fork(){return this.stackPos.push(this.pos),this.ensureCapacity(Xt),this.buffer[this.pos++]=0,this}join(){const e=this.stackPos.pop();if(e===void 0)throw new Error("invalid state, fork stack empty");const t=this.pos-e-Xt,n=Jn(t);return n>Xt&&(this.ensureCapacity(n-Xt),this.buffer.copyWithin(e+n,e+Xt,this.pos)),this.pos=e,this.uint32(t),this.pos+=t,this}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.ensureCapacity(e.length),this.buffer.set(e,this.pos),this.pos+=e.length,this}uint32(e){if(Ba(e),this.ensureCapacity(5),e<128)return this.buffer[this.pos++]=e,this;for(;e>127;)this.buffer[this.pos++]=e&127|128,e>>>=7;return this.buffer[this.pos++]=e,this}int32(e){if(xn(e),e>=0)return this.uint32(e);this.ensureCapacity(10);for(let t=0;t<9;t++)this.buffer[this.pos++]=e&127|128,e>>=7;return this.buffer[this.pos++]=1,this}bool(e){return this.ensureCapacity(1),this.buffer[this.pos++]=e?1:0,this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){typeof e!="string"&&(e=String(e));const t=e.length;if(t<=Gi){this.ensureCapacity(t+1);const s=this.buffer;let l=this.pos;s[l++]=t;let c=0;for(;c<t;c++){const u=e.charCodeAt(c);if(u>127)break;s[l++]=u}if(c==t)return this.pos=l,this}this.ensureCapacity(t*3+5);const n=Jn(t),o=this.buffer,a=this.pos,{written:r}=this.encodeUtf8Into(e,o.subarray(a+n)),i=Jn(r);return i!=n&&o.copyWithin(a+i,a+n,a+n+r),this.uint32(r),this.pos+=r,this}float(e){return Xc(e),this.ensureCapacity(4),this.view().setFloat32(this.pos,e,!0),this.pos+=4,this}double(e){return this.ensureCapacity(8),this.view().setFloat64(this.pos,e,!0),this.pos+=8,this}fixed32(e){return Ba(e),this.ensureCapacity(4),this.view().setUint32(this.pos,e,!0),this.pos+=4,this}sfixed32(e){return xn(e),this.ensureCapacity(4),this.view().setInt32(this.pos,e,!0),this.pos+=4,this}sint32(e){return xn(e),this.uint32((e<<1^e>>31)>>>0)}sfixed64(e){const t=T.enc(e);this.ensureCapacity(8);const n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}fixed64(e){const t=T.uEnc(e);this.ensureCapacity(8);const n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}int64(e){const t=T.enc(e);return this.writeVarint64(t.lo,t.hi)}sint64(e){const t=T.enc(e),n=t.hi>>31,o=t.lo<<1^n,a=(t.hi<<1|t.lo>>>31)^n;return this.writeVarint64(o,a)}uint64(e){const t=T.uEnc(e);return this.writeVarint64(t.lo,t.hi)}writeVarint64(e,t){this.ensureCapacity(10);const n=this.buffer;let o=this.pos;for(let i=0;i<28;i=i+7){const s=e>>>i,l=!(!(s>>>7)&&t==0);if(n[o++]=(l?s|128:s)&255,!l)return this.pos=o,this}const a=e>>>28&15|(t&7)<<4,r=t>>3!=0;if(n[o++]=(r?a|128:a)&255,!r)return this.pos=o,this;for(let i=3;i<31;i=i+7){const s=t>>>i,l=!!(s>>>7);if(n[o++]=(l?s|128:s)&255,!l)return this.pos=o,this}return n[o++]=t>>>31&1,this.pos=o,this}},Ic=128,Xt=1,Vi=new Uint8Array(0),Yc=new DataView(Vi.buffer),Gi=32;function Jn(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}var xt=class{constructor(e,t=No().decodeUtf8){this.decodeUtf8=t,this.varint64Lo=0,this.varint64Hi=0,this.varint64=ac,this.uint32=lc,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){const e=this.pos,t=this.uint32(),n=this.pos-e;if(n>5||n==5&&this.buf[this.pos-1]>15)throw new Error("illegal tag: varint overflows uint32");const o=t>>>3,a=t&7;if(o<=0||a>5)throw new Error("illegal tag: field no "+o+" wire type "+a);return[o,a]}skip(e,t,n=100){let o=this.pos;switch(e){case _.Varint:for(;this.buf[this.pos++]&128;);break;case _.Bit64:this.pos+=4;case _.Bit32:this.pos+=4;break;case _.LengthDelimited:let a=this.uint32();this.pos+=a;break;case _.StartGroup:if(n<=0)throw new Error("maximum recursion depth reached");for(;;){const[r,i]=this.tag();if(i===_.EndGroup){if(t!==void 0&&r!==t)throw new Error("invalid end group tag");break}this.skip(i,r,n-1)}break;default:throw new Error("cant skip wire type "+e)}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 e=this.uint32();return e>>>1^-(e&1)}int64(){return this.varint64(),T.dec(this.varint64Lo,this.varint64Hi)}uint64(){return this.varint64(),T.uDec(this.varint64Lo,this.varint64Hi)}sint64(){this.varint64();let e=this.varint64Lo,t=this.varint64Hi,n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,T.dec(e,t)}bool(){const e=this.buf[this.pos];return e<128?(this.pos++,e!==0):(this.varint64(),this.varint64Lo!==0||this.varint64Hi!==0)}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return T.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return T.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 e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(e){const t=this.bytes(),n=t.length;if(n<=Gi){const o=new Array(n);for(let a=0;a<n;a++){const r=t[a];if(r>127)return this.decodeUtf8(t,e);o[a]=r}return String.fromCharCode.apply(String,o)}return this.decodeUtf8(t,e)}};function xn(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>2147483647||e<-2147483648)throw new Error("invalid int32: "+e)}function Ba(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>4294967295||e<0)throw new Error("invalid uint32: "+e)}function Xc(e){if(typeof e=="string"){const t=e;if(e=Number(e),Number.isNaN(e)&&t!=="NaN")throw new Error("invalid float32: "+t)}else if(typeof e!="number")throw new Error("invalid float32: "+typeof e);if(!Number.isFinite(Math.fround(e))&&Number.isFinite(e))throw new Error("invalid float32: "+e)}function Si(e,t){const n=e.fieldKind=="list"?Vo(t,e):e.fieldKind=="map"?Go(t,e):vo(e,t);if(n===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${vi(e)}, got ${te(t)}`;break;case"map":o=`expected ${Wi(e)}, got ${te(t)}`;break;default:o=pe(e,t,n)}return new Q(e,o)}function Ca(e,t,n){const o=vo(e,n);if(o!==!0)return new Q(e,`list item #${t+1}: ${pe(e,n,o)}`)}function Bc(e,t,n){const o=Te(e.mapKey)(t);if(o!==!0)return new Q(e,`invalid map key: ${pe({scalar:e.mapKey},t,o)}`);const a=vo(e,n);if(a!==!0)return new Q(e,`map entry ${te(t)}: ${pe(e,n,a)}`)}function vo(e,t){return e.scalar!==void 0?Te(e.scalar)(t):e.enum!==void 0?e.enum.open?Te(b.INT32)(t):e.enum.values.some(n=>n.number===t):So(t,e.message)}function Te(e){switch(e){case b.DOUBLE:return t=>typeof t=="number";case b.FLOAT:return t=>typeof t!="number"?!1:!Number.isFinite(Math.fround(t))&&Number.isFinite(t)?`${t.toFixed()} out of range`:!0;case b.INT32:case b.SFIXED32:case b.SINT32:return t=>typeof t!="number"||!Number.isInteger(t)?!1:t>2147483647||t<-2147483648?`${t.toFixed()} out of range`:!0;case b.FIXED32:case b.UINT32:return t=>typeof t!="number"||!Number.isInteger(t)?!1:t>4294967295||t<0?`${t.toFixed()} out of range`:!0;case b.BOOL:return t=>typeof t=="boolean";case b.STRING:return t=>typeof t!="string"?!1:No().checkUtf8(t)||"invalid UTF8";case b.BYTES:return t=>t instanceof Uint8Array;case b.INT64:case b.SFIXED64:case b.SINT64:return t=>{if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return T.parse(t),!0}catch{return`${t} out of range`}return!1};case b.FIXED64:case b.UINT64:return t=>{if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return T.uParse(t),!0}catch{return`${t} out of range`}return!1}}}function pe(e,t,n){return n=typeof n=="string"?`: ${n}`:`, got ${te(t)}`,e.scalar!==void 0?`expected ${Cc(e.scalar)}`+n:e.enum!==void 0?`expected ${e.enum.toString()}`+n:`expected ${Ni(e.message)}`+n}function te(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:Vo(e)?vi(e.field()):Go(e)?Wi(e.field()):So(e)?Ni(e.desc):Ro(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 Ni(e){return`ReflectMessage (${e.typeName})`}function vi(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${b[e.scalar]})`}}function Wi(e){switch(e.mapKind){case"message":return`ReflectMap (${b[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${b[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${b[e.mapKey]}, ${b[e.scalar]})`}}function Cc(e){switch(e){case b.STRING:return"string";case b.BOOL:return"boolean";case b.INT64:case b.SINT64:case b.SFIXED64:return"bigint (int64)";case b.UINT64:case b.FIXED64:return"bigint (uint64)";case b.BYTES:return"Uint8Array";case b.DOUBLE:return"number (float64)";case b.FLOAT:return"number (float32)";case b.FIXED32:case b.UINT32:return"number (uint32)";case b.INT32:case b.SFIXED32:case b.SINT32:return"number (int32)"}}var Fc=0;function Se(e){if(wc(e))return{toMessage:n=>Wo(n),toLocal:n=>yo(n)};if(e.fieldKind=="message"&&!e.oneof&&rt(e.message)){const n=e.message,o=n.fields[0].localName;return{toMessage:a=>{const r=ce(n);return a!==void 0&&(r[o]=a),r},toLocal:a=>a[o]}}const t=e.message;return{toMessage:n=>n===void 0?ce(t):n,toLocal:n=>n}}function wc(e){return e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"}function Wo(e){const t={$typeName:"google.protobuf.Struct",fields:{}};if(He(e))for(const n of Object.keys(e))fe(t.fields,n,Ii(e[n]));return t}function yo(e){const t={};for(const n of Object.keys(e.fields))fe(t,n,yi(e.fields[n]));return t}function yi(e){switch(e.kind.case){case"structValue":return yo(e.kind.value);case"listValue":return e.kind.value.values.map(yi);case"nullValue":case void 0:return null;default:return e.kind.value}}function Ii(e){const t={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof e){case"number":t.kind={case:"numberValue",value:e};break;case"string":t.kind={case:"stringValue",value:e};break;case"boolean":t.kind={case:"boolValue",value:e};break;case"object":if(e===null)t.kind={case:"nullValue",value:Fc};else if(Array.isArray(e)){const n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(const o of e)n.values.push(Ii(o));t.kind={case:"listValue",value:n}}else t.kind={case:"structValue",value:Wo(e)};break}return t}function kc(e,t,n=!0){return new Yi(e,t,n)}var Fa=new WeakMap,Yi=class{get sortedFields(){const e=Fa.get(this.desc);if(e)return e;const t=this.desc.fields.concat().sort((n,o)=>n.number-o.number);return Fa.set(this.desc,t),t}constructor(e,t,n=!0){this.lists=new Map,this.maps=new Map,this.check=n,this.desc=e,this.message=this[me]=t??ce(e),this.fields=e.fields,this.oneofs=e.oneofs,this.members=e.members}findNumber(e){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(t=>[t.number,t]))),this._fieldsByNumber.get(e)}oneofCase(e){return Bt(this.message,e),uc(this.message,e)}isSet(e){return Bt(this.message,e),mc(this.message,e)}clear(e){Bt(this.message,e),pc(this.message,e)}get(e){Bt(this.message,e);const t=hc(this.message,e);switch(e.fieldKind){case"list":let n=this.lists.get(e);return(!n||n[me]!==t)&&this.lists.set(e,n=new Uc(e,t,this.check)),n;case"map":let o=this.maps.get(e);return(!o||o[me]!==t)&&this.maps.set(e,o=new Jc(e,t,this.check)),o;case"message":return Yo(e,t,this.check);case"scalar":return t===void 0?Ce(e.scalar,!1):Xo(e,t);case"enum":return t??e.enum.values[0].number}}set(e,t){if(Bt(this.message,e),this.check){const o=Si(e,t);if(o)throw o}let n;e.fieldKind=="message"?n=Io(e,t):Go(t)||Vo(t)?n=t[me]:n=Bo(e,t),bc(this.message,e,n)}getUnknown(){return this.message.$unknown}setUnknown(e){this.message.$unknown=e}};function Bt(e,t){if(t.parent.typeName!==e.$typeName)throw new Q(t,`cannot use ${t.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var Uc=class{field(){return this._field}get size(){return this._arr.length}constructor(e,t,n){this._field=e,this._arr=this[me]=t,this.check=n}get(e){const t=this._arr[e];return t===void 0?void 0:Kn(this._field,t,this.check)}set(e,t){if(e<0||e>=this._arr.length)throw new Q(this._field,`list item #${e+1}: out of range`);if(this.check){const n=Ca(this._field,e,t);if(n)throw n}this._arr[e]=wa(this._field,t)}add(e){if(this.check){const t=Ca(this._field,this._arr.length,e);if(t)throw t}this._arr.push(wa(this._field,e))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(const e of this._arr)yield Kn(this._field,e,this.check)}*entries(){for(let e=0;e<this._arr.length;e++)yield[e,Kn(this._field,this._arr[e],this.check)]}},Jc=class{constructor(e,t,n=!0){this.obj=this[me]=t??{},this.check=n,this._field=e}field(){return this._field}set(e,t){if(this.check){const n=Bc(this._field,e,t);if(n)throw n}return fe(this.obj,_t(e),xc(this._field,t)),this}delete(e){const t=_t(e),n=Object.prototype.hasOwnProperty.call(this.obj,t);return n&&delete this.obj[t],n}clear(){for(const e of Object.keys(this.obj))delete this.obj[e]}get(e){let t=gc(this.obj,_t(e));return t!==void 0&&(t=zn(this._field,t,this.check)),t}has(e){return Object.prototype.hasOwnProperty.call(this.obj,_t(e))}*keys(){for(const e of Object.keys(this.obj))yield ka(e,this._field.mapKey)}*entries(){for(const e of Object.entries(this.obj))yield[ka(e[0],this._field.mapKey),zn(this._field,e[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(const e of Object.values(this.obj))yield zn(this._field,e,this.check)}forEach(e,t){for(const n of this.entries())e.call(t,n[1],n[0],this)}};function Io(e,t){return So(t)?Ac(t.message)&&!e.oneof&&e.fieldKind=="message"?t.message.value:t.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?yo(t.message):t.message:t}function Yo(e,t,n){return t!==void 0&&(rt(e.message)&&!e.oneof&&e.fieldKind=="message"?t={$typeName:e.message.typeName,value:Xo(e.message.fields[0],t)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&He(t)&&(t=Wo(t))),new Yi(e.message,t,n)}function wa(e,t){return e.listKind=="message"?Io(e,t):Bo(e,t)}function Kn(e,t,n){return e.listKind=="message"?Yo(e,t,n):Xo(e,t)}function xc(e,t){return e.mapKind=="message"?Io(e,t):Bo(e,t)}function zn(e,t,n){return e.mapKind=="message"?Yo(e,t,n):t}function _t(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function ka(e,t){switch(t){case b.STRING:return e;case b.INT32:case b.FIXED32:case b.UINT32:case b.SFIXED32:case b.SINT32:{const n=Number.parseInt(e);if(Number.isFinite(n))return n;break}case b.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case b.UINT64:case b.FIXED64:try{return T.uParse(e)}catch{}break;default:try{return T.parse(e)}catch{}break}return e}function Xo(e,t){switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=T.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=T.uParse(t));break}return t}function Bo(e,t){switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=T.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=T.uParse(t));break}return t}var Ua=Uint8Array.prototype.setFromBase64;function Co(e){const t=e.length;let n=t-(t+3>>2);(t&3)==0&&e[t-1]=="="&&(n-=e[t-2]=="="?2:1);const o=new Uint8Array(n);let a=-1;if(Ua)try{const r=Ua.call(o,e);r.read==t&&(a=r.written)}catch{}return a<0&&(a=Kc(o,e)),a==n?o:o.subarray(0,a)}function Kc(e,t){const n=jc();let o=0,a=0,r,i=0;for(let s=0;s<t.length;s++){if(r=n[t.charCodeAt(s)],r===void 0)switch(t[s]){case"=":a=0;case`
|
|
51
|
+
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(a){case 0:i=r,a=1;break;case 1:e[o++]=i<<2|(r&48)>>4,i=r,a=2;break;case 2:e[o++]=(i&15)<<4|(r&60)>>2,i=r,a=3;break;case 3:e[o++]=(i&3)<<6|r,a=0;break}}if(a==1)throw Error("invalid base64 string");return o}var Ja=Uint8Array.prototype.toBase64,zc={std:{alphabet:"base64",omitPadding:!1},std_raw:{alphabet:"base64",omitPadding:!0},url:{alphabet:"base64url",omitPadding:!0}};function Lc(e,t="std"){if(Ja)return Ja.call(e,zc[t]);const n=Xi(t),o=t=="std";let a="",r=0,i,s=0;for(let l=0;l<e.length;l++)switch(i=e[l],r){case 0:a+=n[i>>2],s=(i&3)<<4,r=1;break;case 1:a+=n[s|i>>4],s=(i&15)<<2,r=2;break;case 2:a+=n[s|i>>6],a+=n[i&63],r=0;break}return r&&(a+=n[s],o&&(a+="=",r==1&&(a+="="))),a}var $t,xa,it;function Xi(e){return $t||($t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),xa=$t.slice(0,-2).concat("-","_")),e=="url"?xa:$t}function jc(){if(!it){it=[];const e=Xi("std");for(let t=0;t<e.length;t++)it[e[t].charCodeAt(0)]=t;it[45]=e.indexOf("+"),it[95]=e.indexOf("/")}return it}function At(e){let t=!1;const n=[];for(let o=0;o<e.length;o++){let a=e.charAt(o);switch(a){case"_":t=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":n.push(a),t=!1;break;default:t&&(t=!1,a=a.toUpperCase()),n.push(a);break}}return n.join("")}function Bi(e){return e.replace(/[A-Z]/g,t=>"_"+t.toLowerCase())}var Hc=new Set(["constructor","toString","toJSON","valueOf"]);function Kt(e){return Hc.has(e)?e+"$":e}function Fo(e){for(const t of e.field)Jt(t,"jsonName")||(t.jsonName=At(t.name));e.nestedType.forEach(Fo)}function Tc(e,t){const n=e.values.find(o=>o.name===t);if(!n)throw new Error(`cannot parse ${e} default value: ${t}`);return n.number}function Qc(e,t){switch(e){case b.STRING:return t;case b.BYTES:{const n=Mc(t);if(n===!1)throw new Error(`cannot parse ${b[e]} default value: ${t}`);return n}case b.INT64:case b.SFIXED64:case b.SINT64:return T.parse(t);case b.UINT64:case b.FIXED64:return T.uParse(t);case b.DOUBLE:case b.FLOAT:switch(t){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return NaN;default:return parseFloat(t)}case b.BOOL:return t==="true";case b.INT32:case b.UINT32:case b.SINT32:case b.FIXED32:case b.SFIXED32:return parseInt(t,10)}}function Mc(e){const t=[],n={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){const a=this.tail.substring(0,o);return this.tail=this.tail.substring(o),a}return!1}};for(;n.next();)switch(n.c){case"\\":if(n.next())switch(n.c){case"\\":t.push(n.c.charCodeAt(0));break;case"b":t.push(8);break;case"f":t.push(12);break;case"n":t.push(10);break;case"r":t.push(13);break;case"t":t.push(9);break;case"v":t.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{const o=n.c,a=n.take(2);if(a===!1)return!1;const r=parseInt(o+a,8);if(Number.isNaN(r))return!1;t.push(r);break}case"x":{const o=n.c,a=n.take(2);if(a===!1)return!1;const r=parseInt(o+a,16);if(Number.isNaN(r))return!1;t.push(r);break}case"u":{const o=n.c,a=n.take(4);if(a===!1)return!1;const r=parseInt(o+a,16);if(Number.isNaN(r))return!1;const i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,r,!0),t.push(i[0],i[1],i[2],i[3]);break}case"U":{const o=n.c,a=n.take(8);if(a===!1)return!1;const r=T.uEnc(o+a),i=new Uint8Array(8),s=new DataView(i.buffer);s.setInt32(0,r.lo,!0),s.setInt32(4,r.hi,!0),t.push(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);break}}break;default:t.push(n.c.charCodeAt(0))}return new Uint8Array(t)}function*no(e){switch(e.kind){case"file":for(const t of e.messages)yield t,yield*no(t);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(const t of e.nestedMessages)yield t,yield*no(t);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function Ci(...e){const t=Oc();if(!e.length)return t;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(const o of e[0].file)ja(o,t);return t}if("$typeName"in e[0]){let i=function(s){const l=[];for(const c of s.dependency){if(t.getFile(c)!=null||r.has(c))continue;const u=a(c);if(!u)throw new Error(`Unable to resolve ${c}, imported by ${s.name}`);"kind"in u?t.addFile(u,!1,!0):(r.add(u.name),l.push(u))}return l.concat(...l.map(i))};var n=i;const o=e[0],a=e[1],r=new Set;for(const s of[o,...i(o)].reverse())ja(s,t)}else for(const o of e)for(const a of o.files)t.addFile(a);return t}function Oc(){const e=new Map,t=new Map,n=new Map;return{kind:"registry",types:e,extendees:t,[Symbol.iterator](){return e.values()},get files(){return n.values()},addFile(o,a,r){if(n.set(o.proto.name,o),!a)for(const i of no(o))this.add(i);if(r)for(const i of o.dependencies)this.addFile(i,a,r)},add(o){if(o.kind=="extension"){let a=t.get(o.extendee.typeName);a||t.set(o.extendee.typeName,a=new Map),a.set(o.number,o)}e.set(o.typeName,o)},get(o){return e.get(o)},getFile(o){return n.get(o)},getMessage(o){const a=e.get(o);return a?.kind=="message"?a:void 0},getEnum(o){const a=e.get(o);return a?.kind=="enum"?a:void 0},getExtension(o){const a=e.get(o);return a?.kind=="extension"?a:void 0},getExtensionFor(o,a){var r;return(r=t.get(o.typeName))===null||r===void 0?void 0:r.get(a)},getService(o){const a=e.get(o);return a?.kind=="service"?a:void 0}}}var Dc=998,_c=999,$c=9999,Pc=9,zt=10,Ut=11,qc=12,Ka=14,wo=3,ed=2,za=1,td=0,Ln=1,La=2,nd=3,od=1,ad=2,rd=1,id=2,sd=1002,Fi={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2,enforceProtoLimits:1},1002:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:3,defaultSymbolVisibility:4,enforceProtoLimits:2}};function ja(e,t){var n,o;const a={kind:"file",proto:e,deprecated:(o=(n=e.options)===null||n===void 0?void 0:n.deprecated)!==null&&o!==void 0?o:!1,edition:ud(e),name:e.name.replace(/\.proto$/,""),dependencies:md(e,t),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},r=new Map,i={get(s){return r.get(s)},add(s){var l;be(((l=s.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),r.set(s.typeName,s)}};for(const s of e.enumType)wi(s,a,void 0,t);for(const s of e.messageType)ki(s,a,void 0,t,i);for(const s of e.service)ld(s,a,t);oo(a,t);for(const s of r.values())ao(s,t,i);for(const s of a.messages)ao(s,t,i),oo(s,t);t.addFile(a,!0)}function oo(e,t){switch(e.kind){case"file":for(const n of e.proto.extension){const o=ro(n,e,t);e.extensions.push(o),t.add(o)}break;case"message":for(const n of e.proto.extension){const o=ro(n,e,t);e.nestedExtensions.push(o),t.add(o)}for(const n of e.nestedMessages)oo(n,t);break}}function ao(e,t,n){const o=e.proto.oneofDecl.map(r=>dd(r,e)),a=new Set;for(const r of e.proto.field){const i=pd(r,o),s=ro(r,e,t,i,n);e.fields.push(s),e.field[s.localName]=s,i===void 0?e.members.push(s):(i.fields.push(s),a.has(i)||(a.add(i),e.members.push(i)))}for(const r of o.filter(i=>a.has(i)))e.oneofs.push(r);for(const r of e.nestedMessages)ao(r,t,n)}function wi(e,t,n,o){var a,r,i,s,l,c;const u=hd(e.name,e.value),h={kind:"enum",proto:e,deprecated:(r=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&r!==void 0?r:!1,file:t,parent:n,open:!0,name:e.name,typeName:En(e,n,t),value:{},values:[],sharedPrefix:u,toString(){return`enum ${this.typeName}`}};h.open=Rd(h),o.add(h);for(const A of e.value){const Z=A.name;h.values.push(h.value[A.number]={kind:"enum_value",proto:A,deprecated:(s=(i=A.options)===null||i===void 0?void 0:i.deprecated)!==null&&s!==void 0?s:!1,parent:h,name:Z,localName:Kt(u==null?Z:Z.substring(u.length)),number:A.number,jsonName:(l=bd(A))!==null&&l!==void 0?l:Z,toString(){return`enum value ${h.typeName}.${Z}`}})}((c=n?.nestedEnums)!==null&&c!==void 0?c:t.enums).push(h)}function ki(e,t,n,o,a){var r,i,s,l;const c={kind:"message",proto:e,deprecated:(i=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&i!==void 0?i:!1,file:t,parent:n,name:e.name,typeName:En(e,n,t),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((s=e.options)===null||s===void 0?void 0:s.mapEntry)===!0?a.add(c):(((l=n?.nestedMessages)!==null&&l!==void 0?l:t.messages).push(c),o.add(c));for(const u of e.enumType)wi(u,t,c,o);for(const u of e.nestedType)ki(u,t,c,o,a)}function ld(e,t,n){var o,a;const r={kind:"service",proto:e,deprecated:(a=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&a!==void 0?a:!1,file:t,name:e.name,typeName:En(e,void 0,t),methods:[],method:{},toString(){return`service ${this.typeName}`}};t.services.push(r),n.add(r);for(const i of e.method){const s=cd(i,r,n);r.methods.push(s),r.method[s.localName]=s}}function cd(e,t,n){var o,a,r,i;let s;e.clientStreaming&&e.serverStreaming?s="bidi_streaming":e.clientStreaming?s="client_streaming":e.serverStreaming?s="server_streaming":s="unary";const l=n.getMessage(Be(e.inputType)),c=n.getMessage(Be(e.outputType));be(l,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),be(c,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);const u=e.name;return{kind:"rpc",proto:e,deprecated:(a=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&a!==void 0?a:!1,parent:t,name:u,localName:Kt(u.length?Kt(u[0].toLowerCase()+u.substring(1)):u),methodKind:s,input:l,output:c,idempotency:(i=(r=e.options)===null||r===void 0?void 0:r.idempotencyLevel)!==null&&i!==void 0?i:td,toString(){return`rpc ${t.typeName}.${u}`}}}function dd(e,t){return{kind:"oneof",proto:e,deprecated:!1,parent:t,fields:[],name:e.name,localName:Kt(At(e.name)),toString(){return`oneof ${t.typeName}.${this.name}`}}}function ro(e,t,n,o,a){var r,i,s;const l=a===void 0,c={kind:"field",proto:e,deprecated:(i=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:Ad(e,o,l,t),utf8Validation:Ed(e,t),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};let u;if(l){const G=t.kind=="file"?t:t.file,S=t.kind=="file"?void 0:t,X=En(e,S,G);c.kind="extension",c.file=G,c.parent=S,c.oneof=void 0,c.typeName=X,c.jsonName=`[${X}]`,u=()=>`extension ${X}`;const J=n.getMessage(Be(e.extendee));be(J,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),c.extendee=J}else{const G=t;be(G.kind=="message"),c.parent=G,c.oneof=o,c.localName=o?At(e.name):Kt(At(e.name)),c.jsonName=e.jsonName,u=()=>`field ${G.typeName}.${e.name}`}Object.defineProperty(c,"toString",{value:u,writable:!0,enumerable:!0,configurable:!0});const h=e.label,A=e.type,Z=(s=e.options)===null||s===void 0?void 0:s.jstype;if(h===wo){const G=A==Ut?a?.get(Be(e.typeName)):void 0;if(G){c.fieldKind="map";const{key:S,value:X}=Zd(G);return c.mapKey=S.scalar,c.mapKind=X.fieldKind,c.message=X.message,c.delimitedEncoding=!1,c.enum=X.enum,c.scalar=X.scalar,c}switch(c.fieldKind="list",A){case Ut:case zt:c.listKind="message",c.message=n.getMessage(Be(e.typeName)),be(c.message),c.delimitedEncoding=Ha(e,t);break;case Ka:c.listKind="enum",c.enum=n.getEnum(Be(e.typeName)),be(c.enum);break;default:c.listKind="scalar",c.scalar=A,c.longAsString=Z==za;break}return c.packed=fd(e,t),c}switch(A){case Ut:case zt:c.fieldKind="message",c.message=n.getMessage(Be(e.typeName)),be(c.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.delimitedEncoding=Ha(e,t),c.getDefaultValue=()=>{};break;case Ka:{const G=n.getEnum(Be(e.typeName));be(G!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.fieldKind="enum",c.enum=n.getEnum(Be(e.typeName)),c.getDefaultValue=()=>Jt(e,"defaultValue")?Tc(G,e.defaultValue):void 0;break}default:c.fieldKind="scalar",c.scalar=A,c.longAsString=Z==za,c.getDefaultValue=()=>Jt(e,"defaultValue")?Qc(A,e.defaultValue):void 0;break}return c}function ud(e){switch(e.syntax){case"":case"proto2":return Dc;case"proto3":return _c;case"editions":if(e.edition===$c)return sd;if(e.edition in Fi)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function md(e,t){return e.dependency.map(n=>{const o=t.getFile(n);if(!o)throw new Error(`Cannot find ${n}, imported by ${e.name}`);return o})}function hd(e,t){const n=gd(e)+"_";for(const o of t){if(!o.name.toLowerCase().startsWith(n))return;const a=o.name.substring(n.length);if(a.length==0||/^\d/.test(a))return}return n}function bd(e){var t,n;let r;for(const i of(n=(t=e.options)===null||t===void 0?void 0:t.$unknown)!==null&&n!==void 0?n:[]){if(i.no!==998||i.wireType!==_.LengthDelimited)continue;const s=new xt(new xt(i.data).bytes());for(;s.pos<s.len;){const[l,c]=s.tag();l===1&&c===_.LengthDelimited?r=s.string():s.skip(c,l)}}return r}function gd(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,t=>"_"+t)).toLowerCase()}function En(e,t,n){let o;return t?o=`${t.typeName}.${e.name}`:n.proto.package.length>0?o=`${n.proto.package}.${e.name}`:o=`${e.name}`,o}function Be(e){return e.startsWith(".")?e.substring(1):e}function pd(e,t){if(!Jt(e,"oneofIndex")||e.proto3Optional)return;const n=t[e.oneofIndex];return be(n,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),n}function Ad(e,t,n,o){if(e.label==ed)return nd;if(e.label==wo)return La;if(t||e.proto3Optional||n)return Ln;const a=qe("fieldPresence",{proto:e,parent:o});return a==La&&(e.type==Ut||e.type==zt)?Ln:a}function fd(e,t){if(e.label!=wo)return!1;switch(e.type){case Pc:case qc:case zt:case Ut:return!1}const n=e.options;return n&&Jt(n,"packed")?n.packed:od==qe("repeatedFieldEncoding",{proto:e,parent:t})}function Zd(e){const t=e.fields.find(o=>o.number===1),n=e.fields.find(o=>o.number===2);return be(t&&t.fieldKind=="scalar"&&t.scalar!=b.BYTES&&t.scalar!=b.FLOAT&&t.scalar!=b.DOUBLE&&n&&n.fieldKind!="list"&&n.fieldKind!="map"),{key:t,value:n}}function Rd(e){var t;return rd==qe("enumType",{proto:e.proto,parent:(t=e.parent)!==null&&t!==void 0?t:e.file})}function Ha(e,t){return e.type==zt?!0:ad==qe("messageEncoding",{proto:e,parent:t})}function Ed(e,t){return id==qe("utf8Validation",{proto:e,parent:t})}function qe(e,t){var n,o;const a=(n=t.proto.options)===null||n===void 0?void 0:n.features;if(a){const r=a[e];if(r!=0)return r}if("kind"in t){if(t.kind=="message")return qe(e,(o=t.parent)!==null&&o!==void 0?o:t.file);const r=Fi[t.edition];if(!r)throw new Error(`feature default for edition ${t.edition} not found`);return r[e]}return qe(e,t.parent)}function be(e,t){if(!e)throw new Error(t)}function Vd(e){const t=Gd(e);return t.messageType.forEach(Fo),Ci(t,()=>{}).getFile(t.name)}function Gd(e){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},e),{messageType:e.messageType.map(Ui),enumType:e.enumType.map(Ji)}))}function Ui(e){var t,n,o,a,r,i,s,l;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:e.name,field:(n=(t=e.field)===null||t===void 0?void 0:t.map(Sd))!==null&&n!==void 0?n:[],extension:[],nestedType:(a=(o=e.nestedType)===null||o===void 0?void 0:o.map(Ui))!==null&&a!==void 0?a:[],enumType:(i=(r=e.enumType)===null||r===void 0?void 0:r.map(Ji))!==null&&i!==void 0?i:[],extensionRange:(l=(s=e.extensionRange)===null||s===void 0?void 0:s.map(c=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},c)))!==null&&l!==void 0?l:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function Sd(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?Nd(e.options):void 0}))}function Nd(e){var t,n,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:(t=e.targets)!==null&&t!==void 0?t:[],editionDefaults:(o=(n=e.editionDefaults)===null||n===void 0?void 0:n.map(a=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},a)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function Ji(e){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:e.name,reservedName:[],reservedRange:[],value:e.value.map(t=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},t))})}function v(e,t,...n){return n.reduce((o,a)=>o.nestedMessages[a],e.messages[t])}var vd=Vd({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}],extensionRange:[{start:536e6,end:536000001}]},{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:"option_dependency",number:15,type:9,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},{name:"visibility",number:11,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],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:990,end:999},{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},{name:"visibility",number:6,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],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",options:{}},{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",options:{}},{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:990,end:999},{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:990,end:999},{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",options:{deprecated:!0}},{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"},{name:"removal_error",number:5,type:9,label:1}]}],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:990,end:999},{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:990,end:999},{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:990,end:999},{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:990,end:999},{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:990,end:999},{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:990,end:999},{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}]}},{name:"enforce_naming_style",number:7,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnforceNamingStyle",options:{retention:2,targets:[1,2,3,4,5,6,7,8,9],editionDefaults:[{value:"STYLE_LEGACY",edition:900},{value:"STYLE2024",edition:1001},{value:"STYLE2026",edition:1002}]}},{name:"default_symbol_visibility",number:8,type:14,label:1,typeName:".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility",options:{retention:2,targets:[1],editionDefaults:[{value:"EXPORT_ALL",edition:900},{value:"EXPORT_TOP_LEVEL",edition:1001},{value:"STRICT",edition:1002}]}},{name:"enforce_proto_limits",number:9,type:14,label:1,typeName:".google.protobuf.FeatureSet.ProtoLimitsFeature.EnforceProtoLimits",options:{retention:2,targets:[6,3,4,5],editionDefaults:[{value:"LEGACY_NO_EXPLICIT_LIMITS",edition:900},{value:"PROTO_LIMITS2026",edition:1002}]}}],nestedType:[{name:"VisibilityFeature",enumType:[{name:"DefaultSymbolVisibility",value:[{name:"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",number:0},{name:"EXPORT_ALL",number:1},{name:"EXPORT_TOP_LEVEL",number:2},{name:"LOCAL_ALL",number:3},{name:"STRICT",number:4}]}]},{name:"ProtoLimitsFeature",enumType:[{name:"EnforceProtoLimits",value:[{name:"PROTO_LIMITS_UNKNOWN",number:0},{name:"LEGACY_NO_EXPLICIT_LIMITS",number:1},{name:"PROTO_LIMITS2026",number:2}]}]}],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}]},{name:"EnforceNamingStyle",value:[{name:"ENFORCE_NAMING_STYLE_UNKNOWN",number:0},{name:"STYLE2024",number:1},{name:"STYLE_LEGACY",number:2},{name:"STYLE2026",number:3}]}],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}]}],extensionRange:[{start:536e6,end:536000001}]},{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_2026",number:1002},{name:"EDITION_UNSTABLE",number:9999},{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}]},{name:"SymbolVisibility",value:[{name:"VISIBILITY_UNSET",number:0},{name:"VISIBILITY_LOCAL",number:1},{name:"VISIBILITY_EXPORT",number:2}]}]}),Wd=v(vd,1),Ta;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(Ta||(Ta={}));var Qa;(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"})(Qa||(Qa={}));var Ma;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(Ma||(Ma={}));var Oa;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})(Oa||(Oa={}));var Da;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Da||(Da={}));var _a;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(_a||(_a={}));var $a;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})($a||($a={}));var Pa;(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"})(Pa||(Pa={}));var qa;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(qa||(qa={}));var er;(function(e){e[e.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",e[e.EXPORT_ALL=1]="EXPORT_ALL",e[e.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",e[e.LOCAL_ALL=3]="LOCAL_ALL",e[e.STRICT=4]="STRICT"})(er||(er={}));var tr;(function(e){e[e.PROTO_LIMITS_UNKNOWN=0]="PROTO_LIMITS_UNKNOWN",e[e.LEGACY_NO_EXPLICIT_LIMITS=1]="LEGACY_NO_EXPLICIT_LIMITS",e[e.PROTO_LIMITS2026=2]="PROTO_LIMITS2026"})(tr||(tr={}));var nr;(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"})(nr||(nr={}));var or;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(or||(or={}));var ar;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(ar||(ar={}));var rr;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(rr||(rr={}));var ir;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(ir||(ir={}));var sr;(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"})(sr||(sr={}));var lr;(function(e){e[e.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",e[e.STYLE2024=1]="STYLE2024",e[e.STYLE_LEGACY=2]="STYLE_LEGACY",e[e.STYLE2026=3]="STYLE2026"})(lr||(lr={}));var cr;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(cr||(cr={}));var dr;(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_2026=1002]="EDITION_2026",e[e.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",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"})(dr||(dr={}));var ur;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(ur||(ur={}));function xi(e){return Object.assign(Object.assign({readUnknownFields:!0,recursionLimit:100},e),{depth:0})}function Tt(e,t,n){const o=ce(e);return ko(e).read(o,new xt(t),xi(n),t.byteLength),o}var Ki=new WeakMap;function ko(e){let t=Ki.get(e);return t===void 0&&(t=yd(e)),t}function yd(e){const t=String(e),n=new Map,o={read:Id(t,n),readGroup:Yd(t,n)};Ki.set(e,o);for(const a of e.fields)n.set(a.number,zi(a));return o}function Id(e,t){return(n,o,a,r)=>{var i;if(++a.depth>a.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${a.recursionLimit} reached`);const s=o.pos+r,l=(i=n.$unknown)!==null&&i!==void 0?i:[];for(;o.pos<s;){const[c,u]=o.tag(),h=t.get(c);if(h===void 0){const A=o.skip(u,c,a.recursionLimit-a.depth);a.readUnknownFields&&l.push({no:c,wireType:u,data:A});continue}h(n,o,a,u)}l.length>0&&(n.$unknown=l),a.depth--}}function Yd(e,t){return(n,o,a,r)=>{var i;if(++a.depth>a.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${a.recursionLimit} reached`);let s,l;const c=(i=n.$unknown)!==null&&i!==void 0?i:[];for(;o.pos<o.len&&([s,l]=o.tag(),l!=_.EndGroup);){const u=t.get(s);if(u===void 0){const h=o.skip(l,s,a.recursionLimit-a.depth);a.readUnknownFields&&c.push({no:s,wireType:l,data:h});continue}u(n,o,a,l)}if(l!=_.EndGroup||s!==r)throw new Error("invalid end group tag");c.length>0&&(n.$unknown=c),a.depth--}}function Xd(e,t,n,o,a){zi(n)(e[me],t,a,o)}function zi(e){switch(e.fieldKind){case"scalar":return Bd(e);case"enum":return Cd(e);case"message":return Fd(e);case"list":return wd(e);case"map":return kd(e)}}function Bd(e){const t=hn(e.scalar,e.utf8Validation,e.longAsString),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(a,r)=>{a[o]={case:n,value:t(r)}}}return(o,a)=>{o[n]=t(a)}}function Cd(e){var t;const n=e.localName,o=(t=e.oneof)===null||t===void 0?void 0:t.localName;if(e.enum.open)return o!==void 0?(i,s)=>{i[o]={case:n,value:s.int32()}}:(i,s)=>{i[n]=s.int32()};const a=e.enum.values,r=e.number;return(i,s,l,c)=>{var u;const h=s.int32();if(a.some(A=>A.number===h))o!==void 0?i[o]={case:n,value:h}:i[n]=h;else if(l.readUnknownFields){const A=[];sc(h,A);const Z=(u=i.$unknown)!==null&&u!==void 0?u:[];Z.push({no:r,wireType:c,data:new Uint8Array(A)}),i.$unknown=Z}}}function Fd(e){const t=e.localName,{toMessage:n,toLocal:o}=Se(e),a=Li(e);if(e.oneof){const r=e.oneof.localName;return(i,s,l)=>{const c=i[r],u=n(c.case===t?c.value:void 0);a(u,s,l),i[r]={case:t,value:o(u)}}}return(r,i,s)=>{const l=n(r[t]);a(l,i,s),r[t]=o(l)}}function Li(e){const t=ko(e.message);if(e.delimitedEncoding){const n=e.number;return(o,a,r)=>t.readGroup(o,a,r,n)}return(n,o,a)=>t.read(n,o,a,o.uint32())}function wd(e){const t=e.localName;if(e.listKind=="message"){const{toMessage:i,toLocal:s}=Se(e),l=Li(e);return(c,u,h)=>{const A=i(void 0);l(A,u,h),c[t].push(s(A))}}const n=e.listKind=="enum"?b.INT32:e.scalar,o=e.listKind=="scalar"?e.longAsString:!1,a=hn(n,e.utf8Validation,o),r=n!=b.STRING&&n!=b.BYTES;return(i,s,l,c)=>{const u=i[t];if(c==_.LengthDelimited&&r){const h=s.uint32()+s.pos;for(;s.pos<h;)u.push(a(s))}else u.push(a(s))}}function kd(e){const t=e.localName,n=hn(e.mapKey,e.utf8Validation,!1),o=Ce(e.mapKey,!1);let a,r;switch(e.mapKind){case"scalar":{const i=e.scalar,s=hn(i,e.utf8Validation,!1);if(a=l=>s(l),i==b.BYTES)r=()=>new Uint8Array(0);else{const l=Ce(i,!1);r=()=>l}break}case"enum":{const i=e.enum.values[0].number;a=s=>s.int32(),r=()=>i;break}case"message":{const{toMessage:i,toLocal:s}=Se(e),l=ko(e.message).read;a=(c,u,h)=>{const A=i(h);return l(A,c,u,c.uint32()),s(A)},r=()=>s(i(void 0));break}}return(i,s,l)=>{const c=i[t];let u,h;const A=s.uint32(),Z=s.pos+A;for(;s.pos<Z;){const[G]=s.tag();switch(G){case 1:u=n(s);break;case 2:h=a(s,l,h);break}}u===void 0&&(u=o),h===void 0&&(h=r()),fe(c,u,h)}}function hn(e,t,n){switch(e){case b.STRING:return o=>o.string(t);case b.BOOL:return o=>o.bool();case b.DOUBLE:return o=>o.double();case b.FLOAT:return o=>o.float();case b.INT32:return o=>o.int32();case b.INT64:return n?o=>String(o.int64()):o=>o.int64();case b.UINT64:return n?o=>String(o.uint64()):o=>o.uint64();case b.FIXED64:return n?o=>String(o.fixed64()):o=>o.fixed64();case b.BYTES:return o=>o.bytes();case b.FIXED32:return o=>o.fixed32();case b.SFIXED32:return o=>o.sfixed32();case b.SFIXED64:return n?o=>String(o.sfixed64()):o=>o.sfixed64();case b.SINT64:return n?o=>String(o.sint64()):o=>o.sint64();case b.UINT32:return o=>o.uint32();case b.SINT32:return o=>o.sint32()}}function oe(e,t){var n;const o=Tt(Wd,Co(e));return o.messageType.forEach(Fo),o.dependency=(n=t?.map(a=>a.proto.name))!==null&&n!==void 0?n:[],Ci(o,a=>t?.find(r=>r.proto.name===a)).getFile(o.name)}var Ne=oe("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function Ud(e){return new Date(Jd(e))}function Jd(e){return Number(e.seconds)*1e3+Math.round(e.nanos/1e6)}var ji=oe("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),xd=v(ji,0),Kd=2,zd=3,mr={writeUnknownFields:!0};function Ld(e){return e?Object.assign(Object.assign({},mr),e):mr}function Hi(e,t,n){const o=new Ei;return Uo(e)(o,Ld(n),t),o.finish()}var Ti=new WeakMap;function Uo(e){let t=Ti.get(e);return t===void 0&&(t=jd(e)),t}function jd(e){const t=e.typeName,n=e.fields.concat().sort((i,s)=>i.number-s.number),o=n[0],a=[],r=(i,s,l)=>{if(l.$typeName!==t&&o!==void 0)throw new Q(o,`cannot use ${o} with message ${l.$typeName}`,"ForeignFieldError");for(let u=0;u<a.length;u++)a[u](i,s,l);const c=l.$unknown;if(c!==void 0&&s.writeUnknownFields)for(let u=0;u<c.length;u++){const{no:h,wireType:A,data:Z}=c[u];i.tag(h,A).raw(Z)}};Ti.set(e,r);for(const i of n)a.push(Qi(i));return r}function Qi(e){switch(e.fieldKind){case"message":case"scalar":case"enum":return Hd(e);case"list":return Qd(e);case"map":return Md(e)}}function Hd(e){const t=Td(e),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(a,r,i)=>{const s=i[o];s.case===n&&t(a,r,s.value)}}if(e.presence!=Kd){const o=e.presence==zd?`cannot encode ${e} to binary: required field not set`:void 0;return(a,r,i)=>{const s=i[n];if(s!==void 0&&Object.prototype.hasOwnProperty.call(i,n))t(a,r,s);else if(o!==void 0)throw new Error(o)}}if(e.fieldKind=="enum"){const o=e.enum.values[0].number;return(a,r,i)=>{const s=i[n];s!==o&&t(a,r,s)}}switch(e.scalar){case b.BOOL:return(o,a,r)=>{const i=r[n];i!==!1&&t(o,a,i)};case b.STRING:return(o,a,r)=>{const i=r[n];i!==""&&t(o,a,i)};case b.BYTES:return(o,a,r)=>{const i=r[n];(!(i instanceof Uint8Array)||i.byteLength>0)&&t(o,a,i)};case b.DOUBLE:case b.FLOAT:return(o,a,r)=>{const i=r[n];Object.is(i,0)||t(o,a,i)};default:return(o,a,r)=>{const i=r[n];i!=0&&t(o,a,i)}}}function Td(e){switch(e.fieldKind){case"message":{const{toMessage:t}=Se(e),n=Mi(e);return(o,a,r)=>{n(o,a,t(r))}}case"scalar":case"enum":{const t=e.fieldKind=="enum"?b.INT32:e.scalar,n=e.number,o=Gn(t),a=Vn(t,e.parent.typeName,e.name);return(r,i,s)=>{r.tag(n,o),a(r,s)}}}}function Qd(e){const t=e.localName,n=e.number;switch(e.listKind){case"message":{const{toMessage:o}=Se(e),a=Mi(e);return(r,i,s)=>{const l=s[t];for(let c=0;c<l.length;c++)a(r,i,o(l[c]))}}case"scalar":case"enum":{const o=e.listKind=="enum"?b.INT32:e.scalar,a=Vn(o,e.parent.typeName,e.name);if(e.packed)return(i,s,l)=>{const c=l[t];if(c.length!=0){i.tag(n,_.LengthDelimited).fork();for(let u=0;u<c.length;u++)a(i,c[u]);i.join()}};const r=Gn(o);return(i,s,l)=>{const c=l[t];for(let u=0;u<c.length;u++)i.tag(n,r),a(i,c[u])}}}}function Md(e){const t=e.localName,n=e.number,o=Od(e);if(e.mapKind=="message"){const{toMessage:s}=Se(e),l=Uo(e.message);return(c,u,h)=>{const A=h[t],Z=Object.keys(A);for(let G=0;G<Z.length;G++){const S=Z[G];c.tag(n,_.LengthDelimited).fork(),o(c,S),c.tag(2,_.LengthDelimited).fork(),l(c,u,s(A[S])),c.join(),c.join()}}}const a=e.mapKind=="enum"?b.INT32:e.scalar,r=Gn(a),i=Vn(a,e.parent.typeName,e.name);return(s,l,c)=>{const u=c[t],h=Object.keys(u);for(let A=0;A<h.length;A++){const Z=h[A];s.tag(n,_.LengthDelimited).fork(),o(s,Z),s.tag(2,r),i(s,u[Z]),s.join()}}}function Od(e){const t=Gn(e.mapKey),n=Vn(e.mapKey,e.parent.typeName,e.name),o=Dd(e.mapKey);return(a,r)=>{a.tag(1,t),n(a,o(r))}}function Dd(e){switch(e){case b.STRING:return t=>t;case b.BOOL:return t=>t==="true"?!0:t==="false"?!1:t;case b.UINT64:case b.FIXED64:return t=>{try{return T.uParse(t)}catch{return t}};case b.INT64:case b.SFIXED64:case b.SINT64:return t=>{try{return T.parse(t)}catch{return t}};default:return t=>{const n=Number.parseInt(t);return Number.isFinite(n)?n:t}}}function Vn(e,t,n){const o=_d(e);return(a,r)=>{try{o(a,r)}catch(i){throw i instanceof Error?new Error(`cannot encode field ${t}.${n} to binary: ${i.message}`):i}}}function _d(e){switch(e){case b.STRING:return(t,n)=>t.string(n);case b.BOOL:return(t,n)=>t.bool(n);case b.DOUBLE:return(t,n)=>t.double(n);case b.FLOAT:return(t,n)=>t.float(n);case b.INT32:return(t,n)=>t.int32(n);case b.INT64:return(t,n)=>t.int64(n);case b.UINT64:return(t,n)=>t.uint64(n);case b.FIXED64:return(t,n)=>t.fixed64(n);case b.BYTES:return(t,n)=>t.bytes(n);case b.FIXED32:return(t,n)=>t.fixed32(n);case b.SFIXED32:return(t,n)=>t.sfixed32(n);case b.SFIXED64:return(t,n)=>t.sfixed64(n);case b.SINT64:return(t,n)=>t.sint64(n);case b.UINT32:return(t,n)=>t.uint32(n);case b.SINT32:return(t,n)=>t.sint32(n)}}function $d(e,t,n,o){Qi(o)(e,t,n[me])}function Mi(e){const t=e.number,n=Uo(e.message);return e.delimitedEncoding?(o,a,r)=>{o.tag(t,_.StartGroup),n(o,a,r),o.tag(t,_.EndGroup)}:(o,a,r)=>{o.tag(t,_.LengthDelimited).fork(),n(o,a,r),o.join()}}function Gn(e){switch(e){case b.BYTES:case b.STRING:return _.LengthDelimited;case b.DOUBLE:case b.FIXED64:case b.SFIXED64:return _.Bit64;case b.FIXED32:case b.SFIXED32:case b.FLOAT:return _.Bit32;default:return _.Varint}}function Pd(e,t,n){let o=!1;return n||(n=ce(xd),o=!0),n.value=Hi(e,t),n.typeUrl=tu(t.$typeName),o?n:void 0}function qd(e,t){return e.typeUrl===""?!1:(typeof t=="string"?t:t.typeName)===Oi(e.typeUrl)}function eu(e,t){if(e.typeUrl==="")return;const n=t.kind=="message"?t:t.getMessage(Oi(e.typeUrl));if(!(!n||!qd(e,n)))return Tt(n,e.value)}function tu(e){return`type.googleapis.com/${e}`}function Oi(e){const t=e.lastIndexOf("/"),n=t>=0?e.substring(t+1):e;if(!n.length)throw new Error(`invalid type url: ${e}`);return n}var Ue=oe("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),nu=v(Ue,0),Di=v(Ue,1),ou=v(Ue,2),io;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(io||(io={}));var _i=oe("Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZhbHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASABKAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoDSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUSDQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function au(e,t,n){$i(t,e);const o=iu(e.$unknown,t),[a,r,i]=Sn(t),s=xi(n);for(const l of o)Xd(a,new xt(l.data),r,l.wireType,s);return i()}function ru(e,t,n){var o;$i(t,e);const a=((o=e.$unknown)!==null&&o!==void 0?o:[]).filter(c=>c.no!==t.number),[r,i]=Sn(t,n),s=new Ei;$d(s,{writeUnknownFields:!0},r,i);const l=new xt(s.finish());for(;l.pos<l.len;){const[c,u]=l.tag(),h=l.skip(u,c);a.push({no:c,wireType:u,data:h})}e.$unknown=a}function iu(e,t){if(e===void 0)return[];if(t.fieldKind==="enum"||t.fieldKind==="scalar"){for(let n=e.length-1;n>=0;--n)if(e[n].no==t.number)return[e[n]];return[]}return e.filter(n=>n.no===t.number)}function Sn(e,t){const n=e.typeName,o=Object.assign(Object.assign({},e),{kind:"field",parent:e.extendee,localName:n}),a=Object.assign(Object.assign({},e.extendee),{fields:[o],members:[o],oneofs:[]}),r=ce(a,t!==void 0?{[n]:t}:void 0);return[kc(a,r),o,()=>{const i=r[n];if(i===void 0){const s=e.message;return rt(s)?Ce(s.fields[0].scalar,s.fields[0].longAsString):ce(s)}return i}]}function $i(e,t){if(e.extendee.typeName!=t.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var Pi=Date.parse("0001-01-01T00:00:00Z"),qi=Date.parse("9999-12-31T23:59:59Z");var su=3,lu=2,hr={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function cu(e){return e?Object.assign(Object.assign({},hr),e):hr}function es(e,t,n){return bn(e)(cu(n),t)}function du(e,t,n){var o;const a=es(e,t,n);return JSON.stringify(a,null,(o=n?.prettySpaces)!==null&&o!==void 0?o:0)}var so=new WeakMap;function bn(e){let t=so.get(e);return t===void 0&&(t=uu(e)),t}function uu(e){const t=e.typeName,n=hu(e);if(n!==void 0){const s=e.fields[0],l=(c,u)=>{if(u.$typeName!==t&&s!==void 0)throw new Q(s,`cannot use ${s} with message ${u.$typeName}`,"ForeignFieldError");return n(c,u)};return so.set(e,l),l}const o=e.fields.concat().sort((s,l)=>s.number-l.number),a=o[0],r=[],i=(s,l)=>{if(l.$typeName!==t&&a!==void 0)throw new Q(a,`cannot use ${a} with message ${l.$typeName}`,"ForeignFieldError");const c={};for(let u=0;u<r.length;u++)r[u](s,l,c);return s.registry&&Zu(c,s,s.registry,l,e),c};so.set(e,i);for(const s of o){const l=bu(s);r.push(s.jsonName==="__proto__"||s.name==="__proto__"?mu(l):l)}return i}function mu(e){return(t,n,o)=>{const a=Object.create(null);e(t,n,a);for(const r of Object.keys(a))fe(o,r,a[r])}}function hu(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n)=>Ru(n,t);case"google.protobuf.Timestamp":return(t,n)=>Gu(n);case"google.protobuf.Duration":return(t,n)=>Eu(n);case"google.protobuf.FieldMask":return(t,n)=>Vu(n);case"google.protobuf.Struct":return(t,n)=>as(n);case"google.protobuf.Value":return(t,n)=>Ko(n);case"google.protobuf.ListValue":return(t,n)=>rs(n);default:if(rt(e)){const t=e.fields[0],n=t.localName,o=Ce(t.scalar,!1),a=Nn(t);return(r,i)=>{const s=i[n];return a(r,s===void 0?o:s)}}return}}function bu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return gu(e);case"list":case"map":{const t=e.fieldKind=="list"?ns(e):os(e),n=e.name,o=e.jsonName,a=e.localName;return(r,i,s)=>{const l=t(r,i[a]);l!==void 0&&(s[r.useProtoFieldName?n:o]=l)}}}}function gu(e){const t=ts(e),n=e.name,o=e.jsonName,a=e.localName;if(e.oneof){const r=e.oneof.localName;return(i,s,l)=>{const c=s[r];c.case===a&&(l[i.useProtoFieldName?n:o]=t(i,c.value))}}if(e.presence!=lu){const r=e.presence==su?`cannot encode ${e} to JSON: required field not set`:void 0;return(i,s,l)=>{const c=s[a];if(c!==void 0&&Object.prototype.hasOwnProperty.call(s,a))l[i.useProtoFieldName?n:o]=t(i,c);else if(r!==void 0)throw new Error(r)}}if(e.fieldKind=="enum"){const r=e.enum.values[0].number;return(i,s,l)=>{const c=s[a];(c!==r||i.alwaysEmitImplicit)&&(l[i.useProtoFieldName?n:o]=t(i,c))}}switch(e.scalar){case b.BOOL:return(r,i,s)=>{const l=i[a];(l!==!1||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};case b.STRING:return(r,i,s)=>{const l=i[a];(l!==""||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};case b.BYTES:return(r,i,s)=>{const l=i[a];(!(l instanceof Uint8Array)||l.byteLength>0||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};case b.DOUBLE:case b.FLOAT:return(r,i,s)=>{const l=i[a];(!Object.is(l,0)||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};default:return(r,i,s)=>{const l=i[a];(l!=0||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))}}}function pu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return ts(e);case"list":return ns(e);case"map":return os(e)}}function ts(e){switch(e.fieldKind){case"scalar":return Nn(e);case"enum":return xo(e);case"message":return Jo(e)}}function Jo(e){const{toMessage:t}=Se(e),n=bn(e.message);return(o,a)=>n(o,t(a))}function ns(e){const t=Au(e);return(n,o)=>{const a=o;if(a.length==0&&!n.alwaysEmitImplicit)return;const r=[];for(let i=0;i<a.length;i++)r.push(t(n,a[i]));return r}}function Au(e){switch(e.listKind){case"scalar":return Nn(e);case"enum":return xo(e);case"message":return Jo(e)}}function os(e){const t=fu(e);return(n,o)=>{const a=o,r=Object.keys(a);if(r.length==0&&!n.alwaysEmitImplicit)return;const i={};for(let s=0;s<r.length;s++){const l=r[s];fe(i,l,t(n,a[l]))}return i}}function fu(e){switch(e.mapKind){case"scalar":return Nn(e);case"enum":return xo(e);case"message":return Jo(e)}}function xo(e){const t=e.enum;return t.typeName=="google.protobuf.NullValue"?(n,o)=>{if(typeof o!="number")throw br(t,o);return null}:(n,o)=>{var a,r;if(typeof o!="number")throw br(t,o);return n.enumAsInteger?o:(r=(a=t.value[o])===null||a===void 0?void 0:a.jsonName)!==null&&r!==void 0?r:o}}function br(e,t){return new Error(`cannot encode ${e} to JSON: expected number, got ${te(t)}`)}function Nn(e){switch(e.scalar){case b.INT32:case b.SFIXED32:case b.SINT32:case b.FIXED32:case b.UINT32:return(t,n)=>{if(typeof n!="number")throw st(e,n);return n};case b.FLOAT:case b.DOUBLE:return(t,n)=>{if(typeof n!="number")throw st(e,n);return Number.isNaN(n)?"NaN":n===Number.POSITIVE_INFINITY?"Infinity":n===Number.NEGATIVE_INFINITY?"-Infinity":n};case b.STRING:return(t,n)=>{if(typeof n!="string")throw st(e,n);return n};case b.BOOL:return(t,n)=>{if(typeof n!="boolean")throw st(e,n);return n};case b.UINT64:case b.FIXED64:case b.INT64:case b.SFIXED64:case b.SINT64:return(t,n)=>{if(typeof n=="bigint"||typeof n=="string"||typeof n=="number"&&Number.isInteger(n))return n.toString();throw st(e,n)};case b.BYTES:return(t,n)=>{if(n instanceof Uint8Array)return Lc(n);throw st(e,n)}}}function st(e,t){var n;return new Error(`cannot encode ${e} to JSON: ${(n=Si(e,t))===null||n===void 0?void 0:n.message}`)}function Zu(e,t,n,o,a){const r=o.$unknown;if(r===void 0)return;const i=new Set;for(let s=0;s<r.length;s++){const{no:l}=r[s];if(!i.has(l)){i.add(l);const c=n.getExtensionFor(a,l);if(!c)continue;const[u,h]=Sn(c,au(o,c)),A=u[me],Z=pu(h)(t,A[h.localName]);Z!==void 0&&(e[c.jsonName]=Z)}}}function Ru(e,t){if(e.typeUrl==="")return{};const{registry:n}=t;let o,a;if(n&&(o=eu(e,n),o&&(a=n.getMessage(o.$typeName))),!a||!o)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);const r=hi(a)?{value:bn(a)(t,o)}:bn(a)(t,o);return r["@type"]=e.typeUrl,r}function Eu(e){const t=Number(e.seconds),n=e.nanos;if(t>315576e6||t<-315576e6)throw new Error(`cannot encode message ${e.$typeName} to JSON: value out of range`);if(t>0&&n<0||t<0&&n>0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos sign must match seconds sign`);let o=e.seconds.toString();if(n!==0){let a=Math.abs(n).toString();a="0".repeat(9-a.length)+a,a.substring(3)==="000000"?a=a.substring(0,3):a.substring(6)==="000"&&(a=a.substring(0,6)),o+="."+a,n<0&&t==0&&(o="-"+o)}return o+"s"}function Vu(e){return e.paths.map(t=>{if(Bi(At(t))!==t)throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "${t}" is irreversible`);return At(t)}).join(",")}function as(e){const t={},n=Object.keys(e.fields);for(let o=0;o<n.length;o++){const a=n[o];fe(t,a,Ko(e.fields[a]))}return t}function Ko(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 as(e.kind.value);case"listValue":return rs(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function rs(e){return e.values.map(Ko)}function Gu(e){const t=Number(e.seconds)*1e3;if(t<Pi||t>qi)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`);if(e.nanos>999999999)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be greater than 99999999`);let n="Z";if(e.nanos>0){const o=(e.nanos+1e9).toString().substring(1);o.substring(3)==="000000"?n="."+o.substring(0,3)+"Z":o.substring(6)==="000"?n="."+o.substring(0,6)+"Z":n="."+o+"Z"}return new Date(t).toISOString().replace(".000Z",n)}var Su=2;function Nu(e){return Object.assign(Object.assign({ignoreUnknownFields:!1,recursionLimit:100},e),{depth:0})}function vu(e,t,n){return is(e,Uu(t,e.typeName),n)}function is(e,t,n){const o=ce(e);return Wu(e,o,t,n),o}function Wu(e,t,n,o){try{ft(e)(t,n,Nu(o))}catch(a){throw Wc(a)?new Error(`cannot decode ${a.field()} from JSON: ${a.message}`,{cause:a}):a}}var lo=new WeakMap;function ft(e){let t=lo.get(e);return t===void 0&&(t=yu(e)),t}function yu(e){const t=String(e),n=Iu(e);if(n!==void 0){const i=(s,l,c)=>{if(++c.depth>c.recursionLimit)throw new Error(`cannot decode ${t} from JSON: maximum recursion depth of ${c.recursionLimit} reached`);n(s,l,c),c.depth--};return lo.set(e,i),i}const o=e.typeName,a=new Map,r=(i,s,l)=>{var c;if(++l.depth>l.recursionLimit)throw new Error(`cannot decode ${t} from JSON: maximum recursion depth of ${l.recursionLimit} reached`);if(s==null||Array.isArray(s)||typeof s!="object")throw new Error(`cannot decode ${t} from JSON: ${te(s)}`);const u=new Map,h=new Set,A=Object.keys(s);for(let Z=0;Z<A.length;Z++){const G=A[Z],S=s[G],X=a.get(G);if(X!==void 0){const J=X.field;if(h.has(J))throw new Q(J,"set multiple times");if(h.add(J),X.oneofScalarNullSkip&&S===null)continue;if(X.oneof){const d=u.get(X.oneof);if(d!==void 0)throw new Q(X.oneof,`oneof set multiple times by ${d.name} and ${J.name}`);u.set(X.oneof,J)}X.read(i,S,l)}else{const J=G.startsWith("[")&&G.endsWith("]")?(c=l.registry)===null||c===void 0?void 0:c.getExtension(G.substring(1,G.length-1)):void 0;if(J?.extendee.typeName==o){const[d,m,p]=Sn(J);gr(m)(d[me],S,l),ru(i,J,p())}if(J===void 0&&!l.ignoreUnknownFields)throw new Error(`cannot decode ${t} from JSON: key "${G}" is unknown`)}}l.depth--};lo.set(e,r);for(const i of e.fields){const s={read:gr(i),field:i,oneof:i.oneof,oneofScalarNullSkip:i.oneof!==void 0&&i.fieldKind=="scalar"};a.set(i.name,s).set(i.jsonName,s)}return r}function Iu(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n,o)=>xu(t,n,o);case"google.protobuf.Timestamp":return(t,n)=>Ku(t,n);case"google.protobuf.Duration":return(t,n)=>zu(t,n);case"google.protobuf.FieldMask":return(t,n)=>Lu(t,n);case"google.protobuf.Struct":return(t,n,o)=>ds(t,n,o);case"google.protobuf.Value":return(t,n,o)=>To(t,n,o);case"google.protobuf.ListValue":return(t,n,o)=>us(t,n,o);default:if(rt(e)){const t=e.fields[0],n=t.localName,o=t.scalar,a=t.longAsString,r=ls(t);return(i,s)=>{s===null?i[n]=Ce(o,a):i[n]=r(s)}}return}}function gr(e){switch(e.fieldKind){case"scalar":return Yu(e);case"enum":return Xu(e);case"message":return Bu(e);case"list":return Cu(e);case"map":return wu(e)}}function Yu(e){const t=ls(e),n=e.localName;if(e.oneof){const a=e.oneof.localName;return(r,i)=>{r[a]={case:n,value:t(i)}}}const o=ss(e);return(a,r)=>{r===null?o(a):a[n]=t(r)}}function ss(e){const t=e.localName;if(e.presence!=Su)return a=>{delete a[t]};if(e.fieldKind=="enum"){const a=e.enum.values[0].number;return r=>{r[t]=a}}const n=e.scalar,o=e.longAsString;return a=>{a[t]=Ce(n,o)}}function Xu(e){const t=zo(e.enum),n=Lo(e.enum),o=e.localName,a=e.enum.typeName!="google.protobuf.NullValue";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{if(l===null&&a){s[i].case===o&&(s[i]={case:void 0});return}const u=t(l,c.ignoreUnknownFields);if(u===Zt)return;const h=n(u);if(h!==!0)throw new Q(e,pe(e,u,h));s[i]={case:o,value:u}}}const r=ss(e);return(i,s,l)=>{if(s===null&&a){r(i);return}const c=t(s,l.ignoreUnknownFields);if(c===Zt)return;const u=n(c);if(u!==!0)throw new Q(e,pe(e,c,u));i[o]=c}}function Bu(e){const t=e.localName,{toMessage:n,toLocal:o}=Se(e),a=ft(e.message),r=e.message.typeName!="google.protobuf.Value";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{const u=s[i];if(l===null&&r){u.case===t&&(s[i]={case:void 0});return}const h=n(u.case===t?u.value:void 0);a(h,l,c),s[i]={case:t,value:o(h)}}}return(i,s,l)=>{if(s===null&&r){delete i[t];return}const c=n(i[t]);a(c,s,l),i[t]=o(c)}}function Cu(e){const t=e.localName,n=Fu(e);return(o,a,r)=>{if(a===null)return;if(!Array.isArray(a))throw new Q(e,"expected Array, got "+te(a));const i=o[t];for(let s=0;s<a.length;s++){const l=n(a[s],r,i.length);l!==Zt&&i.push(l)}}}function Fu(e){switch(e.listKind){case"scalar":{const t=jo(e),n=Te(e.scalar),o=Ho(e);return(a,r,i)=>{if(a===null)throw new Q(e,"list item must not be null");const s=t(a),l=n(s);if(l!==!0)throw new Q(e,`list item #${i+1}: ${pe(e,s,l)}`);return o(s)}}case"enum":{const t=zo(e.enum),n=Lo(e.enum),o=e.enum.typeName!="google.protobuf.NullValue";return(a,r,i)=>{if(a===null&&o)throw new Q(e,"list item must not be null");const s=t(a,r.ignoreUnknownFields);if(s===Zt)return s;const l=n(s);if(l!==!0)throw new Q(e,`list item #${i+1}: ${pe(e,s,l)}`);return s}}case"message":{const{toMessage:t,toLocal:n}=Se(e),o=ft(e.message),a=e.message.typeName!="google.protobuf.Value";return(r,i)=>{if(r===null&&a)throw new Q(e,"list item must not be null");const s=t(void 0);return o(s,r,i),n(s)}}}}function wu(e){const t=e.localName,n=e.mapKey,o=ku(n),a=Te(n);let r,i,s=c=>c,l=!0;switch(e.mapKind){case"scalar":r=jo(e),i=Te(e.scalar),s=Ho(e);break;case"enum":{const c=zo(e.enum);r=(u,h)=>c(u,h.ignoreUnknownFields),i=Lo(e.enum),l=e.enum.typeName!="google.protobuf.NullValue";break}case"message":{const{toMessage:c,toLocal:u}=Se(e),h=ft(e.message);l=e.message.typeName!="google.protobuf.Value",r=(A,Z)=>{const G=c(void 0);return h(G,A,Z),u(G)};break}}return(c,u,h)=>{if(u===null)return;if(typeof u!="object"||Array.isArray(u))throw new Q(e,"expected object, got "+te(u));const A=c[t],Z=new Set,G=Object.keys(u);for(let S=0;S<G.length;S++){const X=G[S],J=u[X],d=o(X);if(Z.has(d))throw new Q(e,`duplicate map key "${X}"`);if(Z.add(d),J===null&&l)throw new Q(e,"map value must not be null");const m=r(J,h);if(m===Zt)continue;const p=a(d);if(p!==!0)throw new Q(e,`invalid map key: ${pe({scalar:n},d,p)}`);if(i!==void 0){const g=i(m);if(g!==!0)throw new Q(e,`map entry ${te(d)}: ${pe(e,m,g)}`)}fe(A,d,s(m))}}}var Zt=Symbol();function zo(e){const t=e.values[0].number,n=new Map;for(const o of e.values)n.set(o.jsonName,o.number);for(const o of e.values)n.set(o.name,o.number);return(o,a)=>{if(o===null)return t;switch(typeof o){case"number":if(Number.isInteger(o))return o;break;case"string":{const r=n.get(o);if(r!==void 0)return r;if(a)return Zt;break}}throw new Error(`cannot decode ${e} from JSON: ${te(o)}`)}}function Lo(e){if(e.open)return Te(b.INT32);const t=e.values;return n=>t.some(o=>o.number===n)}function ls(e){const t=jo(e),n=Te(e.scalar),o=Ho(e);return a=>{const r=t(a),i=n(r);if(i!==!0)throw new Q(e,pe(e,r,i));return o(r)}}function jo(e){switch(e.scalar){case b.DOUBLE:case b.FLOAT:return t=>{if(t==="NaN")return NaN;if(t==="Infinity")return Number.POSITIVE_INFINITY;if(t==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof t=="number"){if(Number.isNaN(t))throw new Q(e,"unexpected NaN number");if(!Number.isFinite(t))throw new Q(e,"unexpected infinite number");return t}if(typeof t=="string"){if(t===""||t.trim().length!==t.length)return t;const n=Number(t);return Number.isFinite(n)?n:t}return t};case b.INT32:case b.FIXED32:case b.SFIXED32:case b.SINT32:case b.UINT32:return cs;case b.BYTES:return t=>{if(typeof t=="string"){if(t==="")return new Uint8Array(0);try{return Co(t)}catch(n){throw new Q(e,n instanceof Error?n.message:String(n))}}return t};default:return t=>t}}function Ho(e){const t=e.fieldKind!=="map"&&e.longAsString;switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?T.parse(n):n;case b.FIXED64:case b.UINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?T.uParse(n):n;default:return n=>n}}function ku(e){switch(e){case b.BOOL:return t=>{switch(t){case"true":return!0;case"false":return!1}return t};case b.INT32:case b.FIXED32:case b.UINT32:case b.SFIXED32:case b.SINT32:return cs;case b.INT64:case b.SINT64:case b.SFIXED64:case b.UINT64:case b.FIXED64:return t=>/^-?0+$/.test(t)?"0":t.replace(/^(-?)0+(?=\d)/,"$1");default:return t=>t}}function cs(e){if(typeof e=="string"){if(e===""||e.trim().length!==e.length)return e;const t=Number(e);return Number.isNaN(t)?e:t}return e}function Uu(e,t){let n;try{n=JSON.parse(e)}catch(o){const a=o instanceof Error?o.message:String(o);throw new Error(`cannot decode message ${t} from JSON: ${a}`,{cause:o})}return Ju(e,t),n}function Ju(e,t){const n=[];let o=!1,a=0;for(;a<e.length;)switch(e[a]){case"{":n.push(new Set),o=!0,a++;break;case"[":n.push(null),o=!1,a++;break;case"}":case"]":n.pop(),o=!1,a++;break;case",":o=n[n.length-1]!=null,a++;break;case":":o=!1,a++;break;case'"':{const r=a++;let i=!1;for(;a<e.length;){if(e[a]=="\\"){i=!0,a+=2;continue}if(e[a]=='"')break;a++}const s=a++,l=n[n.length-1];if(o&&l){const c=i?JSON.parse(e.substring(r,s+1)):e.substring(r+1,s);if(l.has(c))throw new Error(`cannot decode message ${t} from JSON: duplicate object key "${c}"`);l.add(c)}o=!1;break}default:a++;break}}function xu(e,t,n){var o;if(t===null||Array.isArray(t)||typeof t!="object")throw new Error(`cannot decode message ${e.$typeName} from JSON: expected object but got ${te(t)}`);if(Object.keys(t).length==0)return;const a=t["@type"];if(typeof a!="string"||a=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);const r=a.includes("/")?a.substring(a.lastIndexOf("/")+1):a;if(!r.length)throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is invalid`);const i=(o=n.registry)===null||o===void 0?void 0:o.getMessage(r);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${a} is not in the type registry`);const s=ce(i);if(hi(i)&&Object.prototype.hasOwnProperty.call(t,"value"))ft(i)(s,t.value,n);else{const l={};for(const c of Object.keys(t))c!=="@type"&&fe(l,c,t[c]);ft(i)(s,l,n)}Pd(i,s,e)}function Ku(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const n=t.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!n)throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);const o=Date.parse(n[1]+"-"+n[2]+"-"+n[3]+"T"+n[4]+":"+n[5]+":"+n[6]+(n[8]?n[8]:"Z"));if(Number.isNaN(o))throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);if(o<Pi||o>qi)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=T.parse(o/1e3),e.nanos=0,n[7]&&(e.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function zu(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const n=t.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(n===null)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const o=Number(n[1]);if(o>315576e6||o<-315576e6)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);if(e.seconds=T.parse(o),typeof n[2]!="string")return;const a=n[2]+"0".repeat(9-n[2].length);e.nanos=parseInt(a),(o<0||Object.is(o,-0))&&(e.nanos=-e.nanos)}function Lu(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);t!==""&&(e.paths=t.split(",").map(n=>{if(n.includes("_"))throw new Error(`cannot decode message ${e.$typeName} from JSON: path names must be lowerCamelCase`);return Bi(n)}))}function ds(e,t,n){if(typeof t!="object"||t==null||Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`);const o=Object.keys(t);for(let a=0;a<o.length;a++){const r=o[a],i=ce(Di);To(i,t[r],n),fe(e.fields,r,i)}}function To(e,t,n){if(++n.depth>n.recursionLimit)throw new Error(`cannot decode ${e.$typeName} from JSON: maximum recursion depth of ${n.recursionLimit} reached`);switch(typeof t){case"number":e.kind={case:"numberValue",value:t};break;case"string":e.kind={case:"stringValue",value:t};break;case"boolean":e.kind={case:"boolValue",value:t};break;case"object":if(t===null)e.kind={case:"nullValue",value:io.NULL_VALUE};else if(Array.isArray(t)){const o=ce(ou);us(o,t,n),e.kind={case:"listValue",value:o}}else{const o=ce(nu);ds(o,t,n),e.kind={case:"structValue",value:o}}break;default:throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`)}return n.depth--,e}function us(e,t,n){if(!Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`);for(let o=0;o<t.length;o++){const a=ce(Di);To(a,t[o],n),e.values.push(a)}}function pr(e){const t=E[e];return typeof t!="string"?e.toString():t[0].toLowerCase()+t.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var C=class dt extends Error{constructor(t,n=E.Unknown,o,a,r){super(ju(t,n)),this.name="ConnectError",this.isWireError=!1,Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=t,this.code=n,this.metadata=new Headers(o??{}),this.details=a??[],this.cause=r}static from(t,n=E.Unknown){return t instanceof dt?t:t instanceof Error?t.name=="AbortError"||t.name=="TimeoutError"?new dt(t.message,E.Canceled):new dt(t.message,n,void 0,void 0,t):new dt(String(t),n,void 0,void 0,t)}static[Symbol.hasInstance](t){return t instanceof Error?Object.getPrototypeOf(t)===dt.prototype?!0:t.name==="ConnectError"&&"code"in t&&typeof t.code=="number"&&"metadata"in t&&"details"in t&&Array.isArray(t.details)&&"rawMessage"in t&&typeof t.rawMessage=="string"&&"cause"in t:!1}findDetails(t){const n=t.kind==="message"?{getMessage:a=>a===t.typeName?t:void 0}:t,o=[];for(const a of this.details){if("desc"in a){n.getMessage(a.desc.typeName)&&o.push(ce(a.desc,a.value));continue}const r=n.getMessage(a.type);if(r)try{o.push(Tt(r,a.value))}catch{}}return o}};function ju(e,t){return e.length?`[${pr(t)}] ${e}`:`[${pr(t)}]`}function Hu(e,t,n){try{const o=Co(e);return t?Tt(t,o,n):o}catch(o){throw C.from(o,E.DataLoss)}}function Tu(e,t){const n={};for(const o of e.methods){const a=t(o);a!=null&&(n[o.localName]=a)}return n}var cn=4294967295,jn=cn,Qu=1024;function Mu(e,t,n){if(t!=null||(t=jn),e!=null||(e=cn),n!=null||(n=Qu),t<1||t>jn)throw new C(`writeMaxBytes ${t} must be >= 1 and <= ${jn}`,E.Internal);if(e<1||e>cn)throw new C(`readMaxBytes ${e} must be >= 1 and <= ${cn}`,E.Internal);return{readMaxBytes:e,writeMaxBytes:t,compressMinBytes:n}}function Ou(e,t){if(t>e)throw new C(`message size ${t} is larger than configured writeMaxBytes ${e}`,E.ResourceExhausted)}function ms(e,t,n=!1){if(t>e){let o=`message size is larger than configured readMaxBytes ${e}`;throw n&&(o=`message size ${t} is larger than configured readMaxBytes ${e}`),new C(o,E.ResourceExhausted)}}function Du(e){return new _u(e)}var _u=class{constructor(e){this.readMaxBytes=e,this.header=new Uint8Array(5),this.headerView=new DataView(this.header.buffer),this.buf=[]}get byteLength(){return this.buf.reduce((e,t)=>e+t.byteLength,0)}decode(e){this.buf.push(e);const t=[];for(;;){let n=this.pop();if(!n)break;t.push(n)}return t}pop(){if(!(!this.env&&(this.env=this.head(),!this.env))&&this.cons(this.env.data)){const e=this.env;return this.env=void 0,e}}head(){if(!this.cons(this.header))return;const e=this.headerView.getUint8(0),t=this.headerView.getUint32(1);return ms(this.readMaxBytes,t,!0),{flags:e,data:new Uint8Array(t)}}cons(e){const t=e.byteLength;if(this.byteLength<t)return!1;let n=0;for(;n<t;){const o=this.buf.shift();o.byteLength>t-n?(e.set(o.subarray(0,t-n),n),this.buf.unshift(o.subarray(t-n)),n+=t-n):(e.set(o,n),n+=o.byteLength)}return!0}};async function $u(e,t,n){let{flags:o,data:a}=e;if((o&1)===1)throw new C("invalid envelope, already compressed",E.Internal);return t&&a.byteLength>=n&&(a=await t.compress(a),o=o|1),{data:a,flags:o}}async function Pu(e,t,n){let{flags:o,data:a}=e;if((o&1)===1){if(!t)throw new C("received compressed envelope, but do not know how to decompress",E.Internal);a=await t.decompress(a,n),o=o^1}return{data:a,flags:o}}function qu(e,t){const n=new Uint8Array(t.length+5);n.set(t,5);const o=new DataView(n.buffer,n.byteOffset,n.byteLength);return o.setUint8(0,e),o.setUint32(1,t.length),n}var Fe=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(r){n[r]=e[r]&&function(i){return new Promise(function(s,l){i=e[r](i),a(s,l,i.done,i.value)})}}function a(r,i,s,l){Promise.resolve(l).then(function(c){r({value:c,done:s})},i)}},z=function(e){return this instanceof z?(this.v=e,this):new z(e)},Ge=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),a,r=[];return a=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),a[Symbol.asyncIterator]=function(){return this},a;function i(Z){return function(G){return Promise.resolve(G).then(Z,h)}}function s(Z,G){o[Z]&&(a[Z]=function(S){return new Promise(function(X,J){r.push([Z,S,X,J])>1||l(Z,S)})},G&&(a[Z]=G(a[Z])))}function l(Z,G){try{c(o[Z](G))}catch(S){A(r[0][3],S)}}function c(Z){Z.value instanceof z?Promise.resolve(Z.value.v).then(u,h):A(r[0][2],Z)}function u(Z){l("next",Z)}function h(Z){l("throw",Z)}function A(Z,G){Z(G),r.shift(),r.length&&l(r[0][0],r[0][1])}},em=function(e){var t,n;return t={},o("next"),o("throw",function(a){throw a}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(a,r){t[a]=e[a]?function(i){return(n=!n)?{value:z(e[a](i)),done:!1}:r?r(i):i}:r}};function tm(e,...t){const[n,o,a]=nm(t);let r=e,i;return a?.propagateDownStreamError===!0&&(r=i=hs(r)),r=dn(r,...n,{propagateDownStreamError:!1}),o(r).catch(s=>i?i.abort(s).then(()=>Promise.reject(s)):Promise.reject(s))}function nm(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,e.pop(),t]}function dn(e,...t){return Ge(this,arguments,function*(){var o;const[a,r]=om(t);let i;const s=e[Symbol.asyncIterator]();let l={[Symbol.asyncIterator](){return s}};r?.propagateDownStreamError===!0&&(l=i=hs(l));for(const u of a)l=u(l);const c=l[Symbol.asyncIterator]();try{for(;;){const u=yield z(c.next());if(u.done===!0)break;if(!i){yield yield z(u.value);continue}try{yield yield z(u.value)}catch(h){throw yield z(i.abort(h)),h}}}finally{r?.propagateDownStreamError===!0&&((o=s.return)===null||o===void 0||o.call(s).catch(()=>{}))}})}function om(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,t]}function Ar(e,t,n){return t===void 0||n===void 0?function(o){return Ge(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const h=s;yield yield z({flags:0,data:e.serialize(h)})}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield z(i.call(c)))}finally{if(r)throw r.error}}})}:function(o){return Ge(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const h=s;let A,Z=0;h.end?(Z=Z|t,A=n.serialize(h.value)):A=e.serialize(h.value),yield yield z({flags:Z,data:A})}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield z(i.call(c)))}finally{if(r)throw r.error}}})}}function fr(e,t,n){return n&&t!==void 0?function(o){return Ge(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const{flags:h,data:A}=s;(h&t)===t?yield yield z({value:n.parse(A),end:!0}):yield yield z({value:e.parse(A),end:!1})}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield z(i.call(c)))}finally{if(r)throw r.error}}})}:function(o){return Ge(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Fe(o),u;u=yield z(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const{flags:h,data:A}=s;if(t!==void 0&&(h&t)===t){if(n===null)throw new C("unexpected end flag",E.InvalidArgument);continue}yield yield z(e.parse(A))}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield z(i.call(c)))}finally{if(r)throw r.error}}})}}function Zr(e,t){return function(n){return Ge(this,arguments,function*(){var o,a,r,i;try{for(var s=!0,l=Fe(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z($u(i,e,t)))}catch(u){a={error:u}}finally{try{!s&&!o&&(r=l.return)&&(yield z(r.call(l)))}finally{if(a)throw a.error}}})}}function Rr(e,t){return function(n){return Ge(this,arguments,function*(){var o,a,r,i;try{for(var s=!0,l=Fe(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z(Pu(i,e,t)))}catch(u){a={error:u}}finally{try{!s&&!o&&(r=l.return)&&(yield z(r.call(l)))}finally{if(a)throw a.error}}})}}function Er(){return function(e){return Ge(this,arguments,function*(){var t,n,o,a;try{for(var r=!0,i=Fe(e),s;s=yield z(i.next()),t=s.done,!t;r=!0){a=s.value,r=!1;const{flags:l,data:c}=a;yield yield z(qu(l,c))}}catch(l){n={error:l}}finally{try{!r&&!t&&(o=i.return)&&(yield z(o.call(i)))}finally{if(n)throw n.error}}})}}function Vr(e){return function(t){return Ge(this,arguments,function*(){var n,o,a,r;const i=Du(e);try{for(var s=!0,l=Fe(t),c;c=yield z(l.next()),n=c.done,!n;s=!0){r=c.value,s=!1;const u=r;for(const h of i.decode(u))yield yield z(h)}}catch(u){o={error:u}}finally{try{!s&&!n&&(a=l.return)&&(yield z(a.call(l)))}finally{if(o)throw o.error}}if(i.byteLength>0)throw new C("protocol error: incomplete envelope",E.InvalidArgument)})}}function hs(e){const t=e[Symbol.asyncIterator]();if(t.throw===void 0)throw new Error("AsyncIterable does not implement throw");const n=t;let o,a,r={next(){return a=n.next().finally(()=>{a=void 0}),a},throw(s){return n.throw(s)}};t.return!==void 0&&(r=Object.assign(Object.assign({},r),{return(s){return n.return(s)}}));let i=!1;return{abort(s){if(o)return o.state;const l=()=>n.throw(s).then(c=>c.done===!0?"completed":"caught",()=>"rethrown");return a?(o={reason:s,state:a.then(l,l)},o.state):(o={reason:s,state:l()},o.state)},[Symbol.asyncIterator](){if(i)throw new Error("AsyncIterable cannot be re-used");return i=!0,r}}}function bs(e){return Ge(this,arguments,function*(){yield z(yield*em(Fe(e)))})}var gs=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(r){n[r]=e[r]&&function(i){return new Promise(function(s,l){i=e[r](i),a(s,l,i.done,i.value)})}}function a(r,i,s,l){Promise.resolve(l).then(function(c){r({value:c,done:s})},i)}},Rt=function(e){return this instanceof Rt?(this.v=e,this):new Rt(e)},am=function(e){var t,n;return t={},o("next"),o("throw",function(a){throw a}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(a,r){t[a]=e[a]?function(i){return(n=!n)?{value:Rt(e[a](i)),done:!1}:r?r(i):i}:r}},rm=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),a,r=[];return a=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),a[Symbol.asyncIterator]=function(){return this},a;function i(Z){return function(G){return Promise.resolve(G).then(Z,h)}}function s(Z,G){o[Z]&&(a[Z]=function(S){return new Promise(function(X,J){r.push([Z,S,X,J])>1||l(Z,S)})},G&&(a[Z]=G(a[Z])))}function l(Z,G){try{c(o[Z](G))}catch(S){A(r[0][3],S)}}function c(Z){Z.value instanceof Rt?Promise.resolve(Z.value.v).then(u,h):A(r[0][2],Z)}function u(Z){l("next",Z)}function h(Z){l("throw",Z)}function A(Z,G){Z(G),r.shift(),r.length&&l(r[0][0],r[0][1])}};function ve(e,t){return Tu(e,n=>{switch(n.methodKind){case"unary":return im(t,n);case"server_streaming":return sm(t,n);case"client_streaming":return lm(t,n);case"bidi_streaming":return cm(t,n);default:return null}})}function im(e,t){return async(n,o)=>{var a,r;const i=await e.unary(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);return(a=o?.onHeader)===null||a===void 0||a.call(o,i.header),(r=o?.onTrailer)===null||r===void 0||r.call(o,i.trailer),i.message}}function sm(e,t){return(n,o)=>ps(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,bs([n]),o?.contextValues),o)}function lm(e,t){return async(n,o)=>{var a,r,i,s,l,c;const u=await e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);(l=o?.onHeader)===null||l===void 0||l.call(o,u.header);let h,A=0;try{for(var Z=!0,G=gs(u.message),S;S=await G.next(),a=S.done,!a;Z=!0)s=S.value,Z=!1,h=s,A++}catch(X){r={error:X}}finally{try{!Z&&!a&&(i=G.return)&&await i.call(G)}finally{if(r)throw r.error}}if(!h)throw new C("protocol error: missing response message",E.Unimplemented);if(A>1)throw new C("protocol error: received extra messages for client streaming method",E.Unimplemented);return(c=o?.onTrailer)===null||c===void 0||c.call(o,u.trailer),h}}function cm(e,t){return(n,o)=>ps(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues),o)}function ps(e,t){const n=(function(){return rm(this,arguments,function*(){var o,a;const r=yield Rt(e);(o=t?.onHeader)===null||o===void 0||o.call(t,r.header),yield Rt(yield*am(gs(r.message))),(a=t?.onTrailer)===null||a===void 0||a.call(t,r.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function dm(...e){const t=new AbortController,n=e.filter(a=>a!==void 0).concat(t.signal);for(const a of n){if(a.aborted){o.apply(a);break}a.addEventListener("abort",o)}function o(){t.signal.aborted||t.abort(Lt(this));for(const a of n)a.removeEventListener("abort",o)}return t}function um(e){const t=new AbortController,n=()=>{t.abort(new C("the operation timed out",E.DeadlineExceeded))};let o;return e!==void 0&&(e<=0?n():o=setTimeout(n,e)),{signal:t.signal,cleanup:()=>clearTimeout(o)}}function Lt(e){if(!e.aborted)return;if(e.reason!==void 0)return e.reason;const t=new Error("This operation was aborted");return t.name="AbortError",t}function Gr(){return{get(e){return e.id in this?this[e.id]:e.defaultValue},set(e,t){return this[e.id]=t,this},delete(e){return delete this[e.id],this}}}function mm(e){const t=new Headers,n=new TextDecoder().decode(e).split(`\r
|
|
52
|
+
`);for(const o of n){if(o==="")continue;const a=o.indexOf(":");if(a>0){const r=o.substring(0,a).trim(),i=o.substring(a+1).trim();t.append(r,i)}}return t}function hm(e){const t=[];return e.forEach((n,o)=>{t.push(`${o}: ${n}\r
|
|
53
|
+
`)}),new TextEncoder().encode(t.join(""))}function Sr(){return{serialize:hm,parse:mm}}var bm="Content-Type",As="Grpc-Encoding",gm="Grpc-Accept-Encoding",pm="Grpc-Timeout",fs="Grpc-Status";var Am="Grpc-Status-Details-Bin",fm="User-Agent",Zm="X-User-Agent",Rm="X-Grpc-Web",Em="application/grpc-web+proto",Vm="application/grpc-web+json";function We(e,t,...n){if(n.length>0)throw new Error;return e.services[t]}var Gm=oe("CgxzdGF0dXMucHJvdG8SCmdvb2dsZS5ycGMiTgoGU3RhdHVzEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIlCgdkZXRhaWxzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUJeCg5jb20uZ29vZ2xlLnJwY0ILU3RhdHVzUHJvdG9QAVo3Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9ycGMvc3RhdHVzO3N0YXR1c6ICA1JQQ2IGcHJvdG8z",[ji]),Sm=v(Gm,0);function Zs(e){var t;const n=e.get(Am);if(n!=null){const a=Hu(n,Sm);if(a.code==0)return;const r=new C(a.message,a.code,e);return r.details=a.details.map(i=>({type:i.typeUrl.substring(i.typeUrl.lastIndexOf("/")+1),value:i.value})),r.isWireError=!0,r}const o=e.get(fs);if(o!=null){if(o==="0")return;const a=parseInt(o,10);let r;return a in E?r=new C(decodeURIComponent((t=e.get("Grpc-Message"))!==null&&t!==void 0?t:""),a,e):r=new C(`invalid grpc-status: ${o}`,E.Internal,e),r.isWireError=!0,r}}function Nr(e,t){return e.toString().replace(/\/?$/,`/${t.parent.typeName}/${t.name}`)}function Rs(e,t){return ce(e,t)}function Nm(e,t){function n(o){return o.done===!0?o:{done:o.done,value:Rs(e,o.value)}}return{[Symbol.asyncIterator](){const o=t[Symbol.asyncIterator](),a={next:()=>o.next().then(n)};return o.throw!==void 0&&(a.throw=r=>o.throw(r).then(n)),o.return!==void 0&&(a.return=r=>o.return(r).then(n)),a}}}function Es(e,t){if(!t)return e;for(const n of t.concat().reverse())e=n(e);return e}function vm(e){var t;const n=Object.assign({},e);return(t=n.ignoreUnknownFields)!==null&&t!==void 0||(n.ignoreUnknownFields=!0),n}function vr(e,t,n,o){const a=Pt(Wr(e.input,t),o),r=Pt(yr(e.input,n),o),i=Pt(Wr(e.output,t),o),s=Pt(yr(e.output,n),o);return{getI(l){return l?a:r},getO(l){return l?i:s}}}function Pt(e,t){return{serialize(n){const o=e.serialize(n);return Ou(t.writeMaxBytes,o.byteLength),o},parse(n){return ms(t.readMaxBytes,n.byteLength,!0),e.parse(n)}}}function Wr(e,t){return{parse(n){try{return Tt(e,n,t)}catch(o){throw new C(`parse binary: ${o instanceof Error?o.message:String(o)}`,E.Internal)}},serialize(n){try{return Hi(e,n,t)}catch(o){throw new C(`serialize binary: ${o instanceof Error?o.message:String(o)}`,E.Internal)}}}}function yr(e,t){var n,o;const a=(n=t?.textEncoder)!==null&&n!==void 0?n:new TextEncoder,r=(o=t?.textDecoder)!==null&&o!==void 0?o:new TextDecoder,i=vm(t);return{parse(s){try{return vu(e,r.decode(s),i)}catch(l){throw C.from(l,E.InvalidArgument)}},serialize(s){try{const l=du(e,s,i);return a.encode(l)}catch(l){throw C.from(l,E.Internal)}}}}function Wm(e){const t=Es(e.next,e.interceptors),[n,o,a]=Vs(e);return t(Object.assign(Object.assign({},e.req),{message:Rs(e.req.method.input,e.req.message),signal:n})).then(r=>(a(),r),o)}function ym(e){const t=Es(e.next,e.interceptors),[n,o,a]=Vs(e),r=Object.assign(Object.assign({},e.req),{message:Nm(e.req.method.input,e.req.message),signal:n});let i=!1;return n.addEventListener("abort",function(){var s,l;const c=e.req.message[Symbol.asyncIterator]();i||(s=c.throw)===null||s===void 0||s.call(c,this.reason).catch(()=>{}),(l=c.return)===null||l===void 0||l.call(c).catch(()=>{})}),t(r).then(s=>Object.assign(Object.assign({},s),{message:{[Symbol.asyncIterator](){const l=s.message[Symbol.asyncIterator]();return{next(){return!i&&n.aborted?o(Lt(n)):l.next().then(c=>(c.done==!0&&(i=!0,a()),c),o)}}}}}),o)}function Vs(e){const{signal:t,cleanup:n}=um(e.timeoutMs),o=dm(e.signal,t);return[o.signal,function(r){const i=o.signal.aborted?C.from(Lt(o.signal),E.Canceled):C.from(r);return o.abort(i),n(),Promise.reject(i)},function(){n(),o.abort()}]}var Im=oe("CiVoYWdpY29kZS9jb21tb24vdjEvZXJyb3JfZGV0YWlsLnByb3RvEhJoYWdpY29kZS5jb21tb24udjEiQgoLRXJyb3JEZXRhaWwSDAoEY29kZRgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIoqgIlUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW1vbi5WMWIGcHJvdG8z",[Ue]),Ym=v(Im,0),P={REFUSED:1,USAGE:2,SAGA_RESOURCE_CONFLICT:4,HTTP_BAD_REQUEST:20,HTTP_UNAUTHORIZED:21,HTTP_FORBIDDEN:23,HTTP_NOT_FOUND:24,HTTP_CONFLICT:29,OPERATION_FAILED:30,WAIT_TIMEOUT:31,LOCK_LOST:32,HTTP_CLIENT_ERROR:40,HTTP_SERVER_ERROR:50,TRANSPORT:60,UNKNOWN:70},N=class extends Error{constructor(e){super(e),this.name="CliUsageError"}},U=class extends Error{constructor(e){super(e),this.name="CliOperationFailedError"}},Xm=class extends Error{constructor(e){super(`Saga resources conflict with existing files: ${e.join(", ")}. Re-run with --force to replace them.`),this.name="SagaResourceConflictError"}},H=class extends Error{reasons;details;reported;constructor(e,t={}){super(e.join("; ")),this.name="CliSagaRefusalError",this.reasons=e,this.details=t.details??{},this.reported=t.reported??!1}},Qo=class extends Error{constructor(e){super(e),this.name="CliWaitTimeoutError"}},et=class extends Error{errorCode;reported;constructor(e,t={}){super(e),this.name="CliLockLostError",this.errorCode=t.errorCode,this.reported=t.reported??!1}},ye=class extends Error{status;details;constructor(e,t,n){super(t),this.name="CliHttpError",this.status=e,this.details=n}};function Mo(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return e}function Et(e,t){const n=Mo(e)?.[t];return typeof n=="string"&&n.trim()?n.trim():void 0}function Oo(e){return e.includes("fetch failed")||e.includes("ECONNREFUSED")||e.includes("ENOTFOUND")||e.includes("ECONNRESET")||e.includes("ETIMEDOUT")||e.includes("EHOSTUNREACH")||e.includes("EAI_AGAIN")||e.includes("Failed to parse URL")||e.includes("Invalid URL")}function Ir(e){switch(e){case 400:return P.HTTP_BAD_REQUEST;case 401:return P.HTTP_UNAUTHORIZED;case 403:return P.HTTP_FORBIDDEN;case 404:return P.HTTP_NOT_FOUND;case 409:return P.HTTP_CONFLICT;default:return e&&e>=400&&e<500?P.HTTP_CLIENT_ERROR:e&&e>=500?P.HTTP_SERVER_ERROR:P.UNKNOWN}}var Bm={[E.InvalidArgument]:400,[E.OutOfRange]:400,[E.Unauthenticated]:401,[E.PermissionDenied]:403,[E.NotFound]:404,[E.AlreadyExists]:409,[E.FailedPrecondition]:409,[E.Aborted]:409,[E.Unimplemented]:501,[E.Internal]:500,[E.Unknown]:500,[E.DataLoss]:500,[E.Unavailable]:503,[E.DeadlineExceeded]:504},Cm=/exceeds?\s+the\s+maximum|too\s+large|payload\s+too\s+large/i;function Fm(e){return e.code===E.ResourceExhausted?Cm.test(e.rawMessage)?413:429:Bm[e.code]??500}function wm(e){return e.code!==E.Unavailable&&e.code!==E.Unknown&&e.code!==E.Internal&&e.code!==E.Aborted?!1:e.cause instanceof Error||Oo(e.rawMessage)}function vn(e){if(!(e instanceof C)||e.code===E.Canceled||wm(e))return;const[t]=e.findDetails(Ym),n=t&&t.code.length>0?t.code:void 0,o=t?.data??{},a=e.rawMessage.trim()||`The backend rejected the request (${E[e.code]}).`;return{status:Fm(e),message:a,code:n,body:{error:a,...n?{code:n}:{},...o}}}function Gs(e){if(!(e instanceof C)||e.code!==E.FailedPrecondition)return;const t=vn(e);return new et(t?.message??e.rawMessage,{errorCode:t?.code})}function Ss(e){return e instanceof C?e.code===E.Unavailable||e.code===E.DeadlineExceeded||e.code!==E.Canceled&&vn(e)===void 0:e instanceof Error&&Oo(e.message)}function Yr(e,t){const n=t.baseUrl??"the configured backend";return{exitCode:P.TRANSPORT,message:/Failed to parse URL|Invalid URL/i.test(e)?`Invalid HagiCode backend base URL: ${n}`:`Cannot reach HagiCode backend at ${n}. Check that the backend is running and the base URL is correct.`}}function Ns(e,t={}){if(e instanceof N)return{exitCode:P.USAGE,message:e.message};if(e instanceof U)return{exitCode:P.OPERATION_FAILED,message:e.message};if(e instanceof Xm)return{exitCode:P.SAGA_RESOURCE_CONFLICT,message:e.message};if(e instanceof H)return{exitCode:P.REFUSED,message:[e.reasons.length>1?"Refused:":"Refused.",...e.reasons.map(n=>` - ${n}`)].join(`
|
|
54
|
+
`),details:{errors:e.reasons}};if(e instanceof Qo)return{exitCode:P.WAIT_TIMEOUT,message:e.message};if(e instanceof et)return{exitCode:P.LOCK_LOST,message:e.message,errorCode:e.errorCode};if(e instanceof ye)return{exitCode:Ir(e.status),status:e.status,message:e.message,details:e.details};if(e instanceof C){const n=vn(e);if(n){const o=Um(n.body);return{exitCode:Ir(n.status),status:n.status,message:o.length>0?[n.message,...o].join(`
|
|
55
|
+
`):n.message,errorCode:Et(n.body,"errorCode")??n.code,correlationId:Et(n.body,"correlationId"),details:n.body}}return e.code===E.Canceled?{exitCode:P.UNKNOWN,message:"The request was cancelled."}:Yr(e.rawMessage,t)}return e instanceof Error?Oo(e.message)?Yr(e.message,t):{exitCode:P.UNKNOWN,message:e.message}:{exitCode:P.UNKNOWN,message:String(e)}}function km(e){const t=Mo(e)?.errors;return Array.isArray(t)?t.flatMap(n=>{const o=Et(n,"field"),a=Et(n,"message");return o&&a?[` - ${o}: ${a}`]:[]}):[]}function Um(e){const t=Mo(e)?.fieldErrors;return Array.isArray(t)?t.flatMap(n=>{const o=Et(n,"field"),a=Et(n,"message");return o&&a?[` - ${o}: ${a}`]:[]}):[]}function vs(e,t={}){if(t.json)return`${JSON.stringify({error:{message:e.message,status:e.status,exitCode:e.exitCode,errorCode:e.errorCode,correlationId:e.correlationId,details:e.details}},null,2)}
|
|
56
|
+
`;const n=[e.status?`status=${e.status}`:void 0,e.errorCode?`errorCode=${e.errorCode}`:void 0,e.correlationId?`correlationId=${e.correlationId}`:void 0].filter(Boolean),o=n.length>0?` (${n.join(", ")})`:"";return[`${e.message}${o}`,...km(e.details)].join(`
|
|
57
57
|
`)+`
|
|
58
|
-
`}var Ym="--base-url",Xm="HAGI_API_BASE_URL";function Ee(e){const t=e?.trim();return t||void 0}function Mo(e=process.env){return(0,R.join)(Ee(e.XDG_CONFIG_HOME)??(0,R.join)((0,Jl.homedir)(),".config"),"hagi","config.json")}function Ns(e){const t=Mo(e);let n;try{n=(0,B.readFileSync)(t,"utf8")}catch(a){if(a.code==="ENOENT")return;throw new N(`Cannot read CLI config file ${t}: ${a instanceof Error?a.message:String(a)}`)}let o;try{o=JSON.parse(n)}catch{throw new N(`CLI config file ${t} is not valid JSON.`)}return o&&typeof o=="object"&&!Array.isArray(o)?o:{}}function Bm(e=process.env){const t=Ns(e)?.baseUrl;return typeof t=="string"?Ee(t):void 0}function Cm(e=process.env){const t=Ns(e)?.steer;if(t===void 0||typeof t=="boolean")return t;throw new N(`CLI config file ${Mo(e)} has a "steer" value that is not true or false.`)}function Fm(e={},t=process.env){const n=Ee(e.baseUrl)??Ee(t.HAGI_API_BASE_URL)??Bm(t);if(!n)throw new N(`No backend base URL is configured. Set ${Ym} <url>, the ${Xm} environment variable, or "baseUrl" in ${Mo(t)}.`);return{baseUrl:n,token:Ee(e.token)??Ee(t.HAGI_API_TOKEN),lang:Ee(e.lang)??Ee(t.HAGI_API_LANG)}}var Ht;function wm(e={},t=process.env){return Ht=Fm(e,t),Ht}function vs(){if(!Ht)throw new N("The backend connection is not configured. Resolve the API runtime before calling the backend.");return Ht}function km(){return Ee(Ht?.baseUrl)}var se=oe("CiFoYWdpY29kZS9wcm9qZWN0L3YxL3Byb2plY3QucHJvdG8SE2hhZ2ljb2RlLnByb2plY3QudjEiSwoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSMwoEYm9keRgBIAEoCzIlLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdER0byJIChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USLwoGcmVzdWx0GAEgASgLMh8uaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0RHRvIhoKGENyZWF0ZURlbW9Qcm9qZWN0UmVxdWVzdCJMChlDcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEi8KBnJlc3VsdBgBIAEoCzIfLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdER0byJXChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIzCgRib2R5GAIgASgLMiUuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0RHRvIkgKFVVwZGF0ZVByb2plY3RSZXNwb25zZRIvCgZyZXN1bHQYASABKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REdG8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlIkUKHkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg8KB3JlZnJlc2gYAiABKAgiZwofR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzUmVzcG9uc2VEdG8iPgooR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInsKKUdldFByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8ikAEKKVNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSTwoEYm9keRgCIAEoCzJBLmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3REdG8ifAoqU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8iMwodR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJdCh5HZXRNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvIiwKFlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJWChdSZWxvYWRNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8igAEKIUNsb25lTW9ub1NwZWNzUmVwb3NpdG9yaWVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkcKBGJvZHkYAiABKAsyOS5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yaWVzUmVxdWVzdER0byJwCiJDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0byJpCihSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoEcGF0aBgCIAEoCUgAiAEBEg0KBWZvcmNlGAMgASgIQgcKBV9wYXRoInQKKVJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0byIwChpJbml0aWFsaXplTW9ub1NwZWNzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIloKG0luaXRpYWxpemVNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8ifgogVXBkYXRlTW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRJGCgRib2R5GAIgASgLMjguaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0byJgCiFVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvImcKH0dldFByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIcCg9yZXBvc2l0b3J5X3BhdGgYAiABKAlIAIgBAUISChBfcmVwb3NpdG9yeV9wYXRoImEKIEdldFByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdERlc2lnbkRvY3VtZW50RHRvIoABCiBTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkgKBGJvZHkYAiABKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8ibAohU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3VsdER0byI2CiBHZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJImMKIUdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXNwb25zZRI+CgZyZXN1bHQYASABKAsyLi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhEdG8iRwojR2V0UHJvamVjdERlc2lnblNpdGVEb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRzbHVnGAIgASgJImkKJEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlRG9jdW1lbnREdG8ieQocVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKC2JyYW5jaF9uYW1lGAIgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgDIAEoCUgAiAEBQhIKEF9yZXBvc2l0b3J5X3BhdGgiYQodVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucHJvamVjdC52MS5CcmFuY2hWYWxpZGF0aW9uUmVzcG9uc2VEdG8iKgoaVmFsaWRhdGVQcm9qZWN0UGF0aFJlcXVlc3QSDAoEcGF0aBgBIAEoCSJdChtWYWxpZGF0ZVByb2plY3RQYXRoUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5QYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvIlcKGlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0EjkKBGJvZHkYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc1JlcXVlc3REdG8iWwobU2NhbkdpdFJlcG9zaXRvcmllc1Jlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnByb2plY3QudjEuU2NhbkdpdFJlcG9zUmVzcG9uc2VEdG8iYAoeVmFsaWRhdGVNb25vU3BlY3NDb25maWdSZXF1ZXN0Ej4KBGJvZHkYASABKAsyMC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzUmVxdWVzdER0byJkCh9WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAEoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVNb25vU3BlY3NSZXNwb25zZUR0byItChdHZXRQcm9qZWN0VmF1bHRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIlUKGEdldFByb2plY3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIqABCh5PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgCIAEoCUgAiAEBEhUKCHN1Yl9wYXRoGAMgASgJSAGIAQFCHQobX2N1cnJlbnRfaW50ZXJmYWNlX2xhbmd1YWdlQgsKCV9zdWJfcGF0aCJlCh9PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnByb2plY3QudjEuVnNDb2RlU2VydmVyTGF1bmNoUmVzcG9uc2VEdG8iNQofR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIl4KIEdldFByb2plY3RHaXRXYXRjaFN0YXR1c1Jlc3BvbnNlEjoKBnJlc3VsdBgBIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdEdpdFdhdGNoU3RhdHVzIkAKDlN1YlJlcG9JbmZvRHRvEgwKBG5hbWUYASABKAkSDAoEcGF0aBgCIAEoCRISCgpoYXNfYWdlbnRzGAMgASgIIvEDCgpQcm9qZWN0RHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjEKDWNyZWF0aW9uX3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKFmxhc3RfbW9kaWZpY2F0aW9uX3RpbWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWlzX21vbm9fc3BlY3MYByABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAggASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgJIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgKIAEoCEgDiAEBEj0KEHN1Yl9yZXBvc2l0b3JpZXMYCyADKAsyIy5oYWdpY29kZS5wcm9qZWN0LnYxLlN1YlJlcG9JbmZvRHRvQg4KDF9kZXNjcmlwdGlvbkIVChNfbW9ub19zcGVjc192ZXJzaW9uQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiWAoQQ3JlYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iWAoQVXBkYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24i5gIKG1Byb2plY3RTdGFuZGFyZFdvcmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIWCglwYXJlbnRfaWQYAyABKAlIAIgBARIPCgdlbmFibGVkGAQgASgIEg0KBW9yZGVyGAUgASgFEhMKC3NvdXJjZV90eXBlGAYgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAcgASgJEgwKBHRhZ3MYCCADKAkSFQoIbGFuZ3VhZ2UYCSABKAlIAYgBARJQCghtZXRhZGF0YRgKIAMoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIu0CChxQcm9qZWN0U3RhbmRhcmRXb3JkUGhyYXNlRHRvEhAKCGdyb3VwX2lkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIWCg5zdWJtaXR0ZWRfdGV4dBgEIAEoCRIPCgdlbmFibGVkGAUgASgIEg0KBW9yZGVyGAYgASgFEhMKC3NvdXJjZV90eXBlGAcgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAggASgJEgwKBHRhZ3MYCSADKAkSFQoIbGFuZ3VhZ2UYCiABKAlIAIgBARJRCghtZXRhZGF0YRgLIAMoCzI/LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFBocmFzZUR0by5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUILCglfbGFuZ3VhZ2UinAEKHFByb2plY3RTdGFuZGFyZFdvcmRTb3VyY2VEdG8SDAoEdHlwZRgBIAEoCRIVCg1yZWxhdGl2ZV9wYXRoGAIgASgJEhEKCWZ1bGxfcGF0aBgDIAEoCRIOCgZleGlzdHMYBCABKAgSNAoQbGFzdF9tb2RpZmllZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiygEKIVByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGAoLc291cmNlX3R5cGUYBCABKAlIAIgBARIaCg1yZWxhdGl2ZV9wYXRoGAUgASgJSAGIAQESEgoFZmllbGQYBiABKAlIAogBAUIOCgxfc291cmNlX3R5cGVCEAoOX3JlbGF0aXZlX3BhdGhCCAoGX2ZpZWxkIr0DCh9Qcm9qZWN0U3RhbmRhcmRXb3Jkc1Jlc3BvbnNlRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKZnJvbV9jYWNoZRgFIAEoCBJCCgdzb3VyY2VzGAYgAygLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3JkU291cmNlRHRvEkAKBmdyb3VwcxgHIAMoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvEkIKB3BocmFzZXMYCCADKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRQaHJhc2VEdG8SSwoLZGlhZ25vc3RpY3MYCSADKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0byK6AgolUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZVBocmFzZUR0bxILCgNrZXkYASABKAkSDQoFbGFiZWwYAiABKAkSFgoOc3VibWl0dGVkX3RleHQYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSACIAQESWgoIbWV0YWRhdGEYCCADKAsySC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCwoJX2xhbmd1YWdlIpIDCiRQcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSFgoJcGFyZW50X2lkGAMgASgJSACIAQESDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSAGIAQESWQoIbWV0YWRhdGEYCCADKAsyRy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVHcm91cER0by5NZXRhZGF0YUVudHJ5EksKB3BocmFzZXMYCSADKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8aLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIsQBCiVQcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEhMKC3NvdXJjZV90eXBlGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhMKC2dyb3VwX2NvdW50GAQgASgFEhQKDHBocmFzZV9jb3VudBgFIAEoBRI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLWAQokUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhMKC3NvdXJjZV90eXBlGAIgASgJEhUKDXJlbGF0aXZlX3BhdGgYAyABKAkSEQoJZnVsbF9wYXRoGAQgASgJEg4KBmV4aXN0cxgFIAEoCBI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglzaWduYXR1cmUYByABKAkilgEKIVByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxITCgtncm91cF9jb3VudBgBIAEoBRIUCgxwaHJhc2VfY291bnQYAiABKAUSHAoUZGlzYWJsZWRfZW50cnlfY291bnQYAyABKAUSEQoJdGFnX2NvdW50GAQgASgFEhUKDXNvdXJjZV9zdGF0dXMYBSABKAki8wQKKVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudERvY3VtZW50RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASSQoGZ3JvdXBzGAUgAygLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SQgoHc291cmNlcxgGIAMoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFNvdXJjZUR0bxJaChZ1c2VyX292ZXJsYXlfc3VtbWFyaWVzGAcgAygLMjouaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEkoKCnN0YXRpc3RpY3MYCCABKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxJRCg5zb3VyY2VfdmVyc2lvbhgJIAEoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEksKC2RpYWdub3N0aWNzGAogAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0RpYWdub3N0aWNEdG8i5AEKLFNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEkkKBmdyb3VwcxgCIAMoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZUdyb3VwRHRvElEKDnNvdXJjZV92ZXJzaW9uGAMgASgLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc1NvdXJjZVZlcnNpb25EdG8iVQojTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJEhIKCnZhbHVlX2tpbmQYAyABKAki5gQKIE1vbm9TcGVjc01hbmFnZW1lbnRSZXBvc2l0b3J5RHRvEgwKBG5hbWUYASABKAkSEQoEY29kZRgCIAEoCUgAiAEBEgwKBHBhdGgYAyABKAkSEAoDdXJsGAQgASgJSAGIAQESGQoMZGlzcGxheV9uYW1lGAUgASgJSAKIAQESEQoEdHlwZRgGIAEoCUgDiAEBEhEKBGljb24YByABKAlIBIgBARIQCghvcHRpb25hbBgIIAEoCBIMCgR0YWdzGAkgAygJEkoKCG1ldGFkYXRhGAogAygLMjguaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50TWV0YWRhdGFFbnRyeUR0bxIZChFpc192YWxpZF9naXRfcmVwbxgLIAEoCBITCgZicmFuY2gYDCABKAlIBYgBARIfChdoYXNfdW5jb21taXR0ZWRfY2hhbmdlcxgNIAEoCBIdChV1bnB1c2hlZF9jb21taXRfY291bnQYDiABKAUSGwoTaGFzX3RyYWNraW5nX2JyYW5jaBgPIAEoCBI1Cg90cmFja2luZ19icmFuY2gYECABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSEwoLYWhlYWRfY291bnQYESABKAUSFAoMYmVoaW5kX2NvdW50GBIgASgFEhcKCnN5bmNfc3RhdGUYEyABKAlIBogBAUIHCgVfY29kZUIGCgRfdXJsQg8KDV9kaXNwbGF5X25hbWVCBwoFX3R5cGVCBwoFX2ljb25CCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSKiAgoWTW9ub1NwZWNzTWFuYWdlbWVudER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhMKC2NvbmZpZ19wYXRoGAMgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYBCABKAgSFAoMeWFtbF9wcmV2aWV3GAUgASgJEksKDHJlcG9zaXRvcmllcxgGIAMoCzI1LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudFJlcG9zaXRvcnlEdG8SSgoIbWV0YWRhdGEYByADKAsyOC5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnRNZXRhZGF0YUVudHJ5RHRvImMKIU1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yeVJlc3VsdER0bxIMCgRwYXRoGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQFCCgoIX21lc3NhZ2UicAolTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0bxJHCgdyZXN1bHRzGAEgAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDbG9uZVJlcG9zaXRvcnlSZXN1bHREdG8iTwokTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXF1ZXN0RHRvEg0KBXBhdGhzGAEgAygJEhgKEGluY2x1ZGVfb3B0aW9uYWwYAiABKAgiZQoiTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0bxIMCgRwYXRoGAEgASgJEg8KB3JlbW92ZWQYAiABKAgSFAoHbWVzc2FnZRgDIAEoCUgAiAEBQgoKCF9tZXNzYWdlIoQCCiNVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYAyABKAgSSwoMcmVwb3NpdG9yaWVzGAQgAygLMjUuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50UmVwb3NpdG9yeUR0bxJKCghtZXRhZGF0YRgFIAMoCzI4LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8inQEKGFByb2plY3REZXNpZ25Eb2N1bWVudER0bxIMCgRwYXRoGAEgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgCIAEoCUgAiAEBEg8KB2NvbnRlbnQYAyABKAkSDgoGZXhpc3RzGAQgASgIEhQKB3ZlcnNpb24YBSABKAlIAYgBAUISChBfcmVwb3NpdG9yeV9wYXRoQgoKCF92ZXJzaW9uIoYBCiJTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzdWx0RHRvEgwKBHBhdGgYASABKAkSHAoPcmVwb3NpdG9yeV9wYXRoGAIgASgJSACIAQESDwoHY3JlYXRlZBgDIAEoCBIPCgd2ZXJzaW9uGAQgASgJQhIKEF9yZXBvc2l0b3J5X3BhdGgingEKJVVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8SHAoPcmVwb3NpdG9yeV9wYXRoGAEgASgJSACIAQESDwoHY29udGVudBgCIAEoCRIdChBleHBlY3RlZF92ZXJzaW9uGAMgASgJSAGIAQFCEgoQX3JlcG9zaXRvcnlfcGF0aEITChFfZXhwZWN0ZWRfdmVyc2lvbiLAAQoeUHJvamVjdERlc2lnblNpdGVJbmRleEVudHJ5RHRvEgwKBHNsdWcYASABKAkSDQoFdGl0bGUYAiABKAkSDwoHc3VtbWFyeRgDIAEoCRISCgpkZXRhaWxfdXJsGAQgASgJEhsKE2Rlc2lnbl9kb3dubG9hZF91cmwYBSABKAkSHwoXcHJldmlld19saWdodF9pbWFnZV91cmwYBiABKAkSHgoWcHJldmlld19kYXJrX2ltYWdlX3VybBgHIAEoCSK+AgoZUHJvamVjdERlc2lnblNpdGVJbmRleER0bxITCgtjYXRhbG9nX3VybBgBIAEoCRIVCg1zb3VyY2Vfc3RhdHVzGAIgASgJEhMKC2VudHJ5X2NvdW50GAMgASgFEkQKB2VudHJpZXMYBCADKAsyMy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhFbnRyeUR0bxIaCg1jYWNoZV9jb250cm9sGAUgASgJSACIAQESEgoFZV90YWcYBiABKAlIAYgBARIaCg1sYXN0X21vZGlmaWVkGAcgASgJSAKIAQESFAoHZXhwaXJlcxgIIAEoCUgDiAEBQhAKDl9jYWNoZV9jb250cm9sQggKBl9lX3RhZ0IQCg5fbGFzdF9tb2RpZmllZEIKCghfZXhwaXJlcyKZAgocUHJvamVjdERlc2lnblNpdGVEb2N1bWVudER0bxIMCgRzbHVnGAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB2NvbnRlbnQYAyABKAkSEgoKZGV0YWlsX3VybBgEIAEoCRIbChNkZXNpZ25fZG93bmxvYWRfdXJsGAUgASgJEhoKDWNhY2hlX2NvbnRyb2wYBiABKAlIAIgBARISCgVlX3RhZxgHIAEoCUgBiAEBEhoKDWxhc3RfbW9kaWZpZWQYCCABKAlIAogBARIUCgdleHBpcmVzGAkgASgJSAOIAQFCEAoOX2NhY2hlX2NvbnRyb2xCCAoGX2VfdGFnQhAKDl9sYXN0X21vZGlmaWVkQgoKCF9leHBpcmVzImoKG0JyYW5jaFZhbGlkYXRpb25SZXNwb25zZUR0bxIOCgZleGlzdHMYASABKAgSEAoIaXNfdmFsaWQYAiABKAgSFAoMaXNfYXZhaWxhYmxlGAMgASgIEhMKC2JyYW5jaF9uYW1lGAQgASgJIogDChlQYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvEhAKCGlzX3ZhbGlkGAEgASgIEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhYKCXBhdGhfdHlwZRgEIAEoCUgAiAEBEiIKFWhhc19tb25vX3NwZWNzX2NvbmZpZxgFIAEoCEgBiAEBEiMKFm1vbm9fc3BlY3NfY29uZmlnX3BhdGgYBiABKAlIAogBARImChltb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5GAcgASgJSAOIAQESKwoebW9ub19zcGVjc19jb21taXRfd2hlbl9hcmNoaXZlGAggASgISASIAQFCDAoKX3BhdGhfdHlwZUIYChZfaGFzX21vbm9fc3BlY3NfY29uZmlnQhkKF19tb25vX3NwZWNzX2NvbmZpZ19wYXRoQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiVgoKR2l0UmVwb0R0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSFQoNcmVsYXRpdmVfcGF0aBgDIAEoCRIVCg1pc19tb25vX3NwZWNzGAQgASgIIqQBChdTY2FuR2l0UmVwb3NSZXNwb25zZUR0bxI1CgxyZXBvc2l0b3JpZXMYASADKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLkdpdFJlcG9EdG8SEwoLdG90YWxfY291bnQYAiABKAUSDwoHc3VjY2VzcxgDIAEoCBIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UijwEKFlNjYW5HaXRSZXBvc1JlcXVlc3REdG8SEQoJcm9vdF9wYXRoGAEgASgJEhEKCW1heF9kZXB0aBgCIAEoBRIWCg5leGNsdWRlX2hpZGRlbhgDIAEoCBIdChVtYXhfZm9sZGVyc19wZXJfbGV2ZWwYBCABKAUSGAoQZXhjbHVkZV9wYXR0ZXJucxgFIAMoCSJEChlNb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEg8KB3ZlcnNpb24YASABKAkSFgoOcmVwb19kaXJlY3RvcnkYAiABKAkikgEKHFZhbGlkYXRlTW9ub1NwZWNzUmVzcG9uc2VEdG8SEAoIaXNfdmFsaWQYASABKAgSPgoGY29uZmlnGAIgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEhAKCHdhcm5pbmdzGAMgAygJEg4KBmVycm9ycxgEIAMoCSIzChtWYWxpZGF0ZU1vbm9TcGVjc1JlcXVlc3REdG8SFAoMcHJvamVjdF9wYXRoGAEgASgJInwKG1ZhdWx0Qm9vdHN0cmFwRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGgoNcmVsYXRpdmVfcGF0aBgEIAEoCUgAiAEBQhAKDl9yZWxhdGl2ZV9wYXRoIt8CCgxWYXVsdEl0ZW1EdG8SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEhUKDXBoeXNpY2FsX3BhdGgYBCABKAkSFAoHZ2l0X3VybBgFIAEoCUgAiAEBEjIKDmNyZWF0ZWRfYXRfdXRjGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCg51cGRhdGVkX2F0X3V0YxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASTwoVYm9vdHN0cmFwX2RpYWdub3N0aWNzGAggAygLMjAuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEJvb3RzdHJhcERpYWdub3N0aWNEdG8SDQoFc2NvcGUYCSABKAkSFwoKcHJvamVjdF9pZBgKIAEoCUgBiAEBQgoKCF9naXRfdXJsQg0KC19wcm9qZWN0X2lkIn4KFFZhdWx0TGlzdFJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKBWl0ZW1zGAIgAygLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8inwQKHFZzQ29kZVNlcnZlclJ1bnRpbWVTdGF0dXNEdG8SDgoGc3RhdHVzGAEgASgJEhsKE2FjdGl2ZV9jYXBhYmlsaXRpZXMYAiADKAkSEQoEaG9zdBgDIAEoCUgAiAEBEhwKD2NvbmZpZ3VyZWRfcG9ydBgEIAEoBUgBiAEBEhsKDmVmZmVjdGl2ZV9wb3J0GAUgASgFSAKIAQESFQoIYmFzZV91cmwYBiABKAlIA4gBARIWCglhdXRoX21vZGUYByABKAlIBIgBARITCgZzb3VyY2UYCCABKAlIBYgBARIVCg1zb3VyY2VfbG9ja2VkGAkgASgIEhIKCmhhc19zZWNyZXQYCiABKAgSGgoNc2VjcmV0X3NvdXJjZRgLIAEoCUgGiAEBEjkKFWxhc3RfYXR0ZW1wdGVkX2F0X3V0YxgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKbGFzdF9lcnJvchgNIAEoCUgHiAEBEhsKDnN0YXR1c19tZXNzYWdlGA4gASgJSAiIAQFCBwoFX2hvc3RCEgoQX2NvbmZpZ3VyZWRfcG9ydEIRCg9fZWZmZWN0aXZlX3BvcnRCCwoJX2Jhc2VfdXJsQgwKCl9hdXRoX21vZGVCCQoHX3NvdXJjZUIQCg5fc2VjcmV0X3NvdXJjZUINCgtfbGFzdF9lcnJvckIRCg9fc3RhdHVzX21lc3NhZ2UinAIKHVZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvEhIKCmxhdW5jaF91cmwYASABKAkSHQoQY29ubmVjdGlvbl90b2tlbhgCIAEoCUgAiAEBEhEKCW9wZW5fbW9kZRgDIAEoCRJCCgdydW50aW1lGAQgASgLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Wc0NvZGVTZXJ2ZXJSdW50aW1lU3RhdHVzRHRvEhgKC2luc3RhbmNlX2lkGAUgASgJSAGIAQESMgoOZXhwaXJlc19hdF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhMKEV9jb25uZWN0aW9uX3Rva2VuQg4KDF9pbnN0YW5jZV9pZCKXAgoVUHJvamVjdEdpdFdhdGNoU3RhdHVzEh4KFm1vbml0b3JlZF9yZXBvc2l0b3JpZXMYASADKAkSNAoQbGFzdF9zY2FuX2F0X3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoQbmV4dF9zY2FuX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQcmVwb3NpdG9yeV9jb3VudBgEIAEoBRISCgppc19ydW5uaW5nGAUgASgIEiIKGm1heF9tb25pdG9yZWRfcmVwb3NpdG9yaWVzGAYgASgFEiAKGGdpdF9hdXRvX3JlZnJlc2hfZW5hYmxlZBgHIAEoCDL1GAoOUHJvamVjdFNlcnZpY2USZgoNQ3JlYXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJyChFDcmVhdGVEZW1vUHJvamVjdBItLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlRGVtb1Byb2plY3RSZXF1ZXN0Gi4uaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEmYKDVVwZGF0ZVByb2plY3QSKS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USZgoNRGVsZXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRKEAQoXR2V0UHJvamVjdFN0YW5kYXJkV29yZHMSMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRKiAQohR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50Ej0uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0Gj4uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKlAQoiU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudBI+LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3QaPy5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKBAQoWR2V0TW9ub1NwZWNzTWFuYWdlbWVudBIyLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QaMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldE1vbm9TcGVjc01hbmFnZW1lbnRSZXNwb25zZRJsCg9SZWxvYWRNb25vU3BlY3MSKy5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QaLC5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1Jlc3BvbnNlEo0BChpDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllcxI2LmhhZ2ljb2RlLnByb2plY3QudjEuQ2xvbmVNb25vU3BlY3NSZXBvc2l0b3JpZXNSZXF1ZXN0GjcuaGFnaWNvZGUucHJvamVjdC52MS5DbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEqIBCiFSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXQSPS5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlcXVlc3QaPi5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEngKE0luaXRpYWxpemVNb25vU3BlY3MSLy5oYWdpY29kZS5wcm9qZWN0LnYxLkluaXRpYWxpemVNb25vU3BlY3NSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5Jbml0aWFsaXplTW9ub1NwZWNzUmVzcG9uc2USigEKGVVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2UShwEKGEdldFByb2plY3REZXNpZ25Eb2N1bWVudBI0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBo1LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGVNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5TYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGUdldFByb2plY3REZXNpZ25TaXRlSW5kZXgSNS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVzcG9uc2USkwEKHEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnQSOC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXF1ZXN0GjkuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZURvY3VtZW50UmVzcG9uc2USfgoVVmFsaWRhdGVQcm9qZWN0QnJhbmNoEjEuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXF1ZXN0GjIuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXNwb25zZRJ4ChNWYWxpZGF0ZVByb2plY3RQYXRoEi8uaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RQYXRoUmVxdWVzdBowLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVQcm9qZWN0UGF0aFJlc3BvbnNlEngKE1NjYW5HaXRSZXBvc2l0b3JpZXMSLy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5TY2FuR2l0UmVwb3NpdG9yaWVzUmVzcG9uc2UShAEKF1ZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnEjMuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1JlcXVlc3QaNC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnUmVzcG9uc2USbwoQR2V0UHJvamVjdFZhdWx0cxIsLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFZhdWx0c1JlcXVlc3QaLS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RWYXVsdHNSZXNwb25zZRKEAQoXT3BlblByb2plY3RJbkNvZGVTZXJ2ZXISMy5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5Qcm9qZWN0SW5Db2RlU2VydmVyUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuT3BlblByb2plY3RJbkNvZGVTZXJ2ZXJSZXNwb25zZRKHAQoYR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzEjQuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXF1ZXN0GjUuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlByb2plY3QuVjFiBnByb3RvMw",[Ne,Mi]),Um=v(se,1),Jm=v(se,5),xm=v(se,15),Km=v(se,17),zm=v(se,19),Lm=v(se,21),jm=v(se,23),Hm=v(se,25),Tm=v(se,41),Qm=v(se,50),Mm=v(se,51),Om=v(se,69),Dm=v(se,71),_m=v(se,85),$m=We(se,0),Je=oe("Ch9oYWdpY29kZS9wcm9qZWN0L3YxL3ZhdWx0LnByb3RvEhNoYWdpY29kZS5wcm9qZWN0LnYxIhMKEUxpc3RWYXVsdHNSZXF1ZXN0Ik8KEkxpc3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIk4KEkNyZWF0ZVZhdWx0UmVxdWVzdBI4CgRib2R5GAEgASgLMiouaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3REdG8iSAoTQ3JlYXRlVmF1bHRSZXNwb25zZRIxCgZyZXN1bHQYASABKAsyIS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0SXRlbUR0byJaChJVcGRhdGVWYXVsdFJlcXVlc3QSCgoCaWQYASABKAkSOAoEYm9keRgCIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXF1ZXN0RHRvIkgKE1VwZGF0ZVZhdWx0UmVzcG9uc2USMQoGcmVzdWx0GAEgASgLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8iPAoSRGVsZXRlVmF1bHRSZXF1ZXN0EgoKAmlkGAEgASgJEhoKEmRlbGV0ZV9sb2NhbF9maWxlcxgCIAEoCCJSChNEZWxldGVWYXVsdFJlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXNwb25zZUR0byI+ChRHZXRWYXVsdEZpbGVzUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRwYXRoGAIgASgJSACIAQFCBwoFX3BhdGgiVgoVR2V0VmF1bHRGaWxlc1Jlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlTGlzdFJlc3BvbnNlRHRvIjYKGkdldFZhdWx0RmlsZVByZXZpZXdSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBHBhdGgYAiABKAkiXwobR2V0VmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlEkAKBnJlc3VsdBgBIAEoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlRHRvIo4BChxPcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBHBhdGgYAiABKAlIAIgBARInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgDIAEoCUgBiAEBQgcKBV9wYXRoQh0KG19jdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZSJjCh1PcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wcm9qZWN0LnYxLlZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvImwKFUNyZWF0ZVZhdWx0UmVxdWVzdER0bxIMCgRuYW1lGAEgASgJEgwKBHR5cGUYAiABKAkSFQoNcGh5c2ljYWxfcGF0aBgDIAEoCRIUCgdnaXRfdXJsGAQgASgJSACIAQFCCgoIX2dpdF91cmwibAoVVXBkYXRlVmF1bHRSZXF1ZXN0RHRvEgwKBG5hbWUYASABKAkSDAoEdHlwZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhQKB2dpdF91cmwYBCABKAlIAIgBAUIKCghfZ2l0X3VybCKdAQoWRGVsZXRlVmF1bHRSZXNwb25zZUR0bxIKCgJpZBgBIAEoCRIPCgdkZWxldGVkGAIgASgIEiQKHGRlbGV0ZV9sb2NhbF9maWxlc19yZXF1ZXN0ZWQYAyABKAgSIwobbG9jYWxfZmlsZXNfZGVsZXRpb25fc3RhdHVzGAQgASgJEhsKE2xvY2FsX2ZpbGVzX2RlbGV0ZWQYBSABKAgizAEKEVZhdWx0RmlsZUVudHJ5RHRvEhUKDXJlbGF0aXZlX3BhdGgYASABKAkSEQoJZmlsZV9uYW1lGAIgASgJEhQKDGlzX2RpcmVjdG9yeRgDIAEoCBIRCglleHRlbnNpb24YBCABKAkSEgoKc2l6ZV9ieXRlcxgFIAEoAxI1ChFsYXN0X21vZGlmaWVkX3V0YxgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRcHJldmlld19zdXBwb3J0ZWQYByABKAgimAIKGFZhdWx0RmlsZUxpc3RSZXNwb25zZUR0bxIQCgh2YXVsdF9pZBgBIAEoCRISCgp2YXVsdF9uYW1lGAIgASgJEhUKDXBoeXNpY2FsX3BhdGgYAyABKAkSDgoGc3RhdHVzGAQgASgJEhcKCmVycm9yX2NvZGUYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESFAoMaXNfdHJ1bmNhdGVkGAcgASgIEhgKEHRvdGFsX2ZpbGVfY291bnQYCCABKAUSNQoFaXRlbXMYCSADKAsyJi5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0RmlsZUVudHJ5RHRvQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIpQDChtWYXVsdEZpbGVQcmV2aWV3UmVzcG9uc2VEdG8SEAoIdmF1bHRfaWQYASABKAkSEgoKdmF1bHRfbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhUKDXJlbGF0aXZlX3BhdGgYBCABKAkSEQoJZmlsZV9uYW1lGAUgASgJEhEKCWV4dGVuc2lvbhgGIAEoCRISCgpzaXplX2J5dGVzGAcgASgDEjUKEWxhc3RfbW9kaWZpZWRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZzdGF0dXMYCSABKAkSFwoKZXJyb3JfY29kZRgKIAEoCUgAiAEBEhQKB21lc3NhZ2UYCyABKAlIAYgBARIZChFwcmV2aWV3X3N1cHBvcnRlZBgMIAEoCBIZChFjb250ZW50X3RydW5jYXRlZBgNIAEoCBIUCgdjb250ZW50GA4gASgJSAKIAQFCDQoLX2Vycm9yX2NvZGVCCgoIX21lc3NhZ2VCCgoIX2NvbnRlbnQy9QUKDFZhdWx0U2VydmljZRJdCgpMaXN0VmF1bHRzEiYuaGFnaWNvZGUucHJvamVjdC52MS5MaXN0VmF1bHRzUmVxdWVzdBonLmhhZ2ljb2RlLnByb2plY3QudjEuTGlzdFZhdWx0c1Jlc3BvbnNlEmAKC0NyZWF0ZVZhdWx0EicuaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3QaKC5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVZhdWx0UmVzcG9uc2USYAoLVXBkYXRlVmF1bHQSJy5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVZhdWx0UmVxdWVzdBooLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXNwb25zZRJgCgtEZWxldGVWYXVsdBInLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXF1ZXN0GiguaGFnaWNvZGUucHJvamVjdC52MS5EZWxldGVWYXVsdFJlc3BvbnNlEmYKDUdldFZhdWx0RmlsZXMSKS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZXNSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5HZXRWYXVsdEZpbGVzUmVzcG9uc2USeAoTR2V0VmF1bHRGaWxlUHJldmlldxIvLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0VmF1bHRGaWxlUHJldmlld1JlcXVlc3QaMC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZVByZXZpZXdSZXNwb25zZRJ+ChVPcGVuVmF1bHRJbkNvZGVTZXJ2ZXISMS5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlcXVlc3QaMi5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuUHJvamVjdC5WMWIGcHJvdG8z",[Ne,se]),Pm=v(Je,1),qm=v(Je,3),eh=v(Je,5),th=v(Je,7),nh=v(Je,9),oh=v(Je,11),ah=v(Je,14),rh=v(Je,15),ih=We(Je,0),Te=oe("CitoYWdpY29kZS9jb21tdW5pdHkvdjEvc2NoZWR1bGVkX3BsYW5zLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiQwoZTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiWgoaTGlzdFNjaGVkdWxlZFBsYW5zUmVzcG9uc2USPAoGcmVzdWx0GAEgAygLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSIlChdHZXRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJYChhHZXRTY2hlZHVsZWRQbGFuUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSI2CiBMaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIm0KIUxpc3RTY2hlZHVsZWRQbGFuUHJvYmxlbXNSZXNwb25zZRJICgZyZXN1bHQYASADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkRlZmluaXRpb25Qcm9ibGVtRHRvIvMBCiNMaXN0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VzUmVxdWVzdBIYCgtyYW5nZV9zdGFydBgBIAEoCUgAiAEBEhYKCXJhbmdlX2VuZBgCIAEoCUgBiAEBEh4KEWRpc3BsYXlfdGltZV96b25lGAMgASgJSAKIAQESEwoGY3Vyc29yGAQgASgJSAOIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgEiAEBQg4KDF9yYW5nZV9zdGFydEIMCgpfcmFuZ2VfZW5kQhQKEl9kaXNwbGF5X3RpbWVfem9uZUIJCgdfY3Vyc29yQg0KC19wcm9qZWN0X2lkInIKJExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VQYWdlUmVzcG9uc2UiWwoaQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSPQoEYm9keRgBIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiZwoaVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkSPQoEYm9keRgCIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoaRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiHQobRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlInkKIkVkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlcXVlc3QSCgoCaWQYASABKAkSRwoEYm9keRgCIAEoCzI5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0ImMKI0VkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiYAokRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0EgoKAmlkGAEgASgJEhoKDW9jY3VycmVuY2VfYXQYAiABKAlIAIgBAUIQCg5fb2NjdXJyZW5jZV9hdCJlCiVEZWxldGVTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiJQoXUnVuU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiVQoYUnVuU2NoZWR1bGVkUGxhblJlc3BvbnNlEjkKBnJlc3VsdBgBIAEoCzIpLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXNzaW9uUmVzcG9uc2VEdG8iJwoZU3RhcnRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpTdGFydFNjaGVkdWxlZFBsYW5SZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvIjUKJ0NvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBIKCgJpZBgBIAEoCSJuCihDb25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUnVuQWNjZXB0ZWREdG8iNAomQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlcXVlc3QSCgoCaWQYASABKAkiZwonQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoVU2NoZWR1bGVkUGxhbkFnZW50RHRvEg8KB2hlcm9faWQYASABKAkiawoZU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxIQCghzdHJhdGVneRgBIAEoCRI8CgZhZ2VudHMYAiADKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50RHRvIuABCidTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USKgoGcnVuX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgRuYW1lGAIgASgJSACIAQESRAoKYWdlbnRfcG9vbBgDIAEoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuQWdlbnRQb29sRHRvEicKB3BheWxvYWQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCBwoFX25hbWUi4wEKHlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIvCgtvcmlnaW5hbF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEa2luZBgCIAEoCRJQCghvdmVycmlkZRgDIAEoCzI+LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USHAoPaW5wdXRfZmlsZV9wYXRoGAQgASgJSACIAQFCEgoQX2lucHV0X2ZpbGVfcGF0aCI4ChZTY2hlZHVsZWRQbGFuUmVwZWF0RHRvEgwKBHJ1bGUYASABKAkSEAoId2Vla2RheXMYAiADKAkiiAIKGlNjaGVkdWxlZFBsYW5RdW90YVJlc2V0RHRvEhMKBndpbmRvdxgBIAEoCUgAiAEBEiIKFW1pbl9yZW1haW5pbmdfcGVyY2VudBgCIAEoBUgBiAEBEiUKGG1heF9taW51dGVzX2JlZm9yZV9yZXNldBgDIAEoBUgCiAEBEigKG3JlcXVpcmVfbWFudWFsX2NvbmZpcm1hdGlvbhgEIAEoCEgDiAEBQgkKB193aW5kb3dCGAoWX21pbl9yZW1haW5pbmdfcGVyY2VudEIbChlfbWF4X21pbnV0ZXNfYmVmb3JlX3Jlc2V0Qh4KHF9yZXF1aXJlX21hbnVhbF9jb25maXJtYXRpb24i9wIKGFNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxIMCgRtb2RlGAEgASgJEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoJdGltZV96b25lGAMgASgJSACIAQESFwoKc3RhcnRfZGF0ZRgEIAEoCUgBiAEBEhUKCGVuZF9kYXRlGAUgASgJSAKIAQESGAoLdGltZV9vZl9kYXkYBiABKAlIA4gBARI9CgZyZXBlYXQYByABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlcGVhdER0bxJGCgtxdW90YV9yZXNldBgIIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUXVvdGFSZXNldER0b0IMCgpfdGltZV96b25lQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki0AYKFVNjaGVkdWxlZFBsYW5SZXNwb25zZRIKCgJpZBgBIAEoCRIMCgR0eXBlGAIgASgJEg0KBXNjb3BlGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSIQoUZGVmaW5pdGlvbl9maWxlX3BhdGgYBSABKAlIAIgBARIMCgRuYW1lGAYgASgJEg8KB2VuYWJsZWQYByABKAgSEQoEaWNvbhgIIAEoCUgBiAEBEhIKBWNvbG9yGAkgASgJSAKIAQESLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoIc2NoZWR1bGUYDCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblNjaGVkdWxlRHRvEkQKCmFnZW50X3Bvb2wYDSABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGA4gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg0KBXN0YXRlGA8gASgJEi8KC25leHRfcnVuX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJJCgpleGNlcHRpb25zGBEgAygLMjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIcCg9pbnB1dF9maWxlX3BhdGgYEiABKAlIA4gBARI7ChdsYXN0X3RyaWdnZXJlZF9yZXNldF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASWQoVcGVuZGluZ19xdW90YV90cmlnZ2VyGBQgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5QZW5kaW5nUXVvdGFUcmlnZ2VyRHRvQhcKFV9kZWZpbml0aW9uX2ZpbGVfcGF0aEIHCgVfaWNvbkIICgZfY29sb3JCEgoQX2lucHV0X2ZpbGVfcGF0aCKJAQojU2NoZWR1bGVkUGxhblBlbmRpbmdRdW90YVRyaWdnZXJEdG8SLQoJcmFpc2VkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg93aW5kb3dfcmVzZXRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkcKIVNjaGVkdWxlZFBsYW5EZWZpbml0aW9uUHJvYmxlbUR0bxIRCglmaWxlX3BhdGgYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLTAQofU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIMCgRtb2RlGAEgASgJEhEKBHJ1bGUYAiABKAlIAIgBARIQCgh3ZWVrZGF5cxgDIAMoCRIXCgpzdGFydF9kYXRlGAQgASgJSAGIAQESFQoIZW5kX2RhdGUYBSABKAlIAogBARIYCgt0aW1lX29mX2RheRgGIAEoCUgDiAEBQgcKBV9ydWxlQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki6gMKH1NjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USDwoHcGxhbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEjEKDW9jY3VycmVuY2VfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBG5hbWUYBCABKAkSDAoEdHlwZRgFIAEoCRIPCgdlbmFibGVkGAYgASgIEhEKBGljb24YByABKAlIAIgBARISCgVjb2xvchgIIAEoCUgBiAEBEg0KBXN0YXRlGAkgASgJEh8KEnNjaGVkdWxlX3RpbWVfem9uZRgKIAEoCUgCiAEBEkoKCnJlY3VycmVuY2UYCyABKAsyNi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIvCgtuZXh0X3J1bl9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLb3JpZ2luYWxfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2lzX21vZGlmaWVkGA4gASgIQgcKBV9pY29uQggKBl9jb2xvckIVChNfc2NoZWR1bGVfdGltZV96b25lIpMCCiNTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVBhZ2VSZXNwb25zZRIvCgtyYW5nZV9zdGFydBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJcmFuZ2VfZW5kGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZChFkaXNwbGF5X3RpbWVfem9uZRgDIAEoCRJHCgdlbnRyaWVzGAQgAygLMjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USGAoLbmV4dF9jdXJzb3IYBSABKAlIAIgBAUIOCgxfbmV4dF9jdXJzb3Ii0QIKGFNjaGVkdWxlZFBsYW5TYXZlUmVxdWVzdBIMCgR0eXBlGAEgASgJEhIKBXNjb3BlGAIgASgJSACIAQESDAoEbmFtZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIEhEKBGljb24YBSABKAlIAYgBARISCgVjb2xvchgGIAEoCUgCiAEBEkEKCHNjaGVkdWxlGAcgASgLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxJECgphZ2VudF9wb29sGAggASgLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5BZ2VudFBvb2xEdG8SJwoHcGF5bG9hZBgJIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUIICgZfc2NvcGVCBwoFX2ljb25CCAoGX2NvbG9yIo4CCiJTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0EjEKDW9jY3VycmVuY2VfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoEbmFtZRgDIAEoCUgAiAEBEkQKCmFnZW50X3Bvb2wYBCABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGAUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlQgcKBV9uYW1lIs4DChJDaGF0SGVyb1N1bW1hcnlEdG8SDwoHaGVyb19pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoEaWNvbhgEIAEoCUgBiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBSABKAkSGQoMYWdlbnRfY2xpX2lkGAYgASgJSAKIAQESGwoOYWdlbnRfY2xpX25hbWUYByABKAlIA4gBARIbCg5hZ2VudF9jbGlfaWNvbhgIIAEoCUgEiAEBEhUKCG1vZGVsX2lkGAkgASgJSAWIAQESFwoKbW9kZWxfbmFtZRgKIAEoCUgGiAEBEhcKCm1vZGVsX2ljb24YCyABKAlIB4gBARIiChVzZWNvbmRhcnlfbW9kZWxfbGFiZWwYDCABKAlICIgBAUIOCgxfZGVzY3JpcHRpb25CBwoFX2ljb25CDwoNX2FnZW50X2NsaV9pZEIRCg9fYWdlbnRfY2xpX25hbWVCEQoPX2FnZW50X2NsaV9pY29uQgsKCV9tb2RlbF9pZEINCgtfbW9kZWxfbmFtZUINCgtfbW9kZWxfaWNvbkIYChZfc2Vjb25kYXJ5X21vZGVsX2xhYmVsIjgKFE9wZW5TcGVjVGFza1Byb2dyZXNzEhEKCWNvbXBsZXRlZBgBIAEoBRINCgV0b3RhbBgCIAEoBSKAAgoQT3BlblNwZWNGaWxlSW5mbxIRCglmaWxlX25hbWUYASABKAkSFQoNcmVsYXRpdmVfcGF0aBgCIAEoCRIOCgZleGlzdHMYAyABKAgSEQoJZmlsZV90eXBlGAQgASgJEhMKC2lzX3JlcXVpcmVkGAUgASgIEhMKC2lzX2FyY2hpdmVkGAYgASgIEjEKDWFyY2hpdmVkX2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkIKDXRhc2tfcHJvZ3Jlc3MYCCABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuT3BlblNwZWNUYXNrUHJvZ3Jlc3MiXgoRT3BlblNwZWNGaWxlc0luZm8SEQoJYmFzZV9wYXRoGAEgASgJEjYKBWZpbGVzGAIgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLk9wZW5TcGVjRmlsZUluZm8izAEKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCEIXChVfZXhlY3V0aW9uX21lc3NhZ2VfaWQigAEKFlNlc3Npb25Ob3RpZmljYXRpb25EdG8SDAoEa2luZBgBIAEoCRIvCgtvYnNlcnZlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJwoHcGF5bG9hZBgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSLtAQoWU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIaCg1wcm9tcHRfdG9rZW5zGAEgASgFSACIAQESIQoUY2FjaGVkX3Byb21wdF90b2tlbnMYAiABKAVIAYgBARIeChFjb21wbGV0aW9uX3Rva2VucxgDIAEoBUgCiAEBEjMKD2xhc3RfdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCEAoOX3Byb21wdF90b2tlbnNCFwoVX2NhY2hlZF9wcm9tcHRfdG9rZW5zQhQKEl9jb21wbGV0aW9uX3Rva2VucyJfChRTdGFnZUV4ZWN1dG9ySW5mb0R0bxIVCg1wcm92aWRlcl90eXBlGAEgASgJEjAKDGxhc3RfdXBkYXRlZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAivAIKFVN0YWdlSGVyb1NlbGVjdGlvbkR0bxIRCglzdGFnZV9rZXkYASABKAkSEgoKc2NyaXB0X2tleRgCIAEoCRIVCg1zY2VuYXJpb19uYW1lGAMgASgJEhQKB2hlcm9faWQYBCABKAlIAIgBARIWCgloZXJvX25hbWUYBSABKAlIAYgBARIWCgloZXJvX2ljb24YBiABKAlIAogBARIVCg1leGVjdXRvcl90eXBlGAcgASgJEhUKDXVzZWRfZmFsbGJhY2sYCCABKAgSGAoQc2VsZWN0aW9uX3NvdXJjZRgJIAEoCRIvCgtzZWxlY3RlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uIrcLChJTZXNzaW9uUmVzcG9uc2VEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRINCgV0aXRsZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhwKD2NoaWVmX2NvbXBsYWludBgEIAEoCUgBiAEBEgwKBGNvZGUYBSABKAUSDAoEdHlwZRgGIAEoCRIOCgZzdGF0dXMYByABKAkSEQoJaXNfYWN0aXZlGAggASgIEjIKDmxhc3RfYWN0aXZlX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpwcm9qZWN0X2lkGAogASgJEhQKDHByb2plY3RfbmFtZRgLIAEoCRIUCgxwcm9qZWN0X3BhdGgYDCABKAkSGgoNcHJvcG9zYWxfbmFtZRgNIAEoCUgCiAEBEkEKD29wZW5fc3BlY19maWxlcxgOIAEoCzIoLmhhZ2ljb2RlLmNvbW11bml0eS52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSRQoOcXVldWVfbWVzc2FnZXMYECADKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuUXVldWVNZXNzYWdlU3VtbWFyeUR0bxIeChF3b3JraW5nX2RpcmVjdG9yeRgRIAEoCUgDiAEBEhUKCG1ldGFkYXRhGBIgASgJSASIAQESHwoSY2hhdF9leGVjdXRvcl90eXBlGBMgASgJSAWIAQESPAoJY2hhdF9oZXJvGBQgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoYXRIZXJvU3VtbWFyeUR0bxJbChJzdGFnZV9leGVjdXRvcl9tYXAYFSADKAsyPy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJmChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyRC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlSGVyb1NlbGVjdGlvbk1hcEVudHJ5EiAKE3J1bnRpbWVfbW9kZWxfbGFiZWwYFyABKAlIBogBARI5ChVwcm9jZXNzaW5nX3N0YXJ0ZWRfYXQYGCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkQKDXNlc3Npb25fdXNhZ2UYGSABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIcCg9wcmV2aW91c19zdGF0dXMYGiABKAlIB4gBARJECg1ub3RpZmljYXRpb25zGBsgAygLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8aZAoVU3RhZ2VFeGVjdXRvck1hcEVudHJ5EgsKA2tleRgBIAEoCRI6CgV2YWx1ZRgCIAEoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaagoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjsKBXZhbHVlGAIgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YWdlSGVyb1NlbGVjdGlvbkR0bzoCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMiLgobU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvEg8KB3BsYW5faWQYASABKAkymQ4KFVNjaGVkdWxlZFBsYW5zU2VydmljZRJ5ChJMaXN0U2NoZWR1bGVkUGxhbnMSMC5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBoxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhbnNSZXNwb25zZRJzChBHZXRTY2hlZHVsZWRQbGFuEi4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXF1ZXN0Gi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXNwb25zZRKOAQoZTGlzdFNjaGVkdWxlZFBsYW5Qcm9ibGVtcxI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBo4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVzcG9uc2USlwEKHExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXMSOi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1JlcXVlc3QaOy5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1Jlc3BvbnNlEnwKE0NyZWF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE1VwZGF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE0RlbGV0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEpQBChtFZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRWRpdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVxdWVzdBo6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5FZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXNwb25zZRKaAQodRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOy5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0GjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2UScwoQUnVuU2NoZWR1bGVkUGxhbhIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVzcG9uc2USeQoSU3RhcnRTY2hlZHVsZWRQbGFuEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YXJ0U2NoZWR1bGVkUGxhblJlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuU3RhcnRTY2hlZHVsZWRQbGFuUmVzcG9uc2USowEKIENvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBo/LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEqABCh9DYW5jZWxTY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXF1ZXN0Gj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXNwb25zZUIrqgIoUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW11bml0eS5WMWIGcHJvdG8z",[Ue,Ne]),sh=v(Te,1),lh=v(Te,3),ch=v(Te,9),dh=v(Te,11),uh=v(Te,19),mh=v(Te,21),Ir=v(Te,39),hh=We(Te,0),bh=oe("Ci1oYWdpY29kZS9jb21tdW5pdHkvdjEvY29tbXVuaXR5X3ByZXNldHMucHJvdG8SFWhhZ2ljb2RlLmNvbW11bml0eS52MSIdChtMaXN0Q29tbXVuaXR5UHJlc2V0c1JlcXVlc3QiYwocTGlzdENvbW11bml0eVByZXNldHNSZXNwb25zZRJDCgZyZXN1bHQYASABKAsyMy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RSZXNwb25zZUR0byJmCh1JbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVxdWVzdBJFCgRib2R5GAEgASgLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvImwKHkluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8ifAogU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3QSEQoJcHJlc2V0X2lkGAEgASgJEkUKBGJvZHkYAiABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8ibwohU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRPcGVyYXRpb25SZXNwb25zZUR0byI0Ch9Vbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXF1ZXN0EhEKCXByZXNldF9pZBgBIAEoCSJuCiBVbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8iIAoeUmVmcmVzaENvbW11bml0eVByZXNldHNSZXF1ZXN0IiEKH1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UihwEKFkNvbW11bml0eVByZXNldFJpc2tEdG8SGQoRZGVjbGFyZXNfY29tbWFuZHMYASABKAgSFwoPZGVjbGFyZXNfc2tpbGxzGAIgASgIEhYKDmRlY2xhcmVzX2hvb2tzGAMgASgIEiEKGWRlY2xhcmVzX2NsaV9yZXF1aXJlbWVudHMYBCABKAgi2QQKGExvY2FsSGFnaVRhc2tMaXN0SXRlbUR0bxIRCglwcmVzZXRfaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSEwoLc291cmNlX2tpbmQYBCABKAkSGQoRaW5zdGFsbGF0aW9uX2tpbmQYBSABKAkSFwoPbWFuYWdlbWVudF9raW5kGAYgASgJEiAKGGlzX3Nlc3Npb25fY3JlYXRpb25fb25seRgHIAEoCBIPCgdlbmFibGVkGAggASgIEhQKDGlzX3JlbW92YWJsZRgJIAEoCBIRCglwdWJsaXNoZXIYCiABKAkSHQoQc291cmNlX3JlZmVyZW5jZRgLIAEoCUgAiAEBEhsKDmFyY2hpdmVfc2hhMjU2GAwgASgJSAGIAQESNAoQaW5zdGFsbGVkX2F0X3V0YxgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoScmVsYXRpdmVfZGlyZWN0b3J5GA4gASgJEhgKC2Rlc2NyaXB0aW9uGA8gASgJSAKIAQESPAoFcmlza3MYECABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0Umlza0R0bxIWCglzb3VyY2VfaWQYESABKAlIA4gBARIRCgRpY29uGBIgASgJSASIAQFCEwoRX3NvdXJjZV9yZWZlcmVuY2VCEQoPX2FyY2hpdmVfc2hhMjU2Qg4KDF9kZXNjcmlwdGlvbkIMCgpfc291cmNlX2lkQgcKBV9pY29uIloKHVByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIRCgRwYXRoGAMgASgJSACIAQFCBwoFX3BhdGgiqQEKHExvY2FsSGFnaVRhc2tMaXN0UmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RJdGVtRHRvEkkKC2RpYWdub3N0aWNzGAIgAygLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvIqwDCh5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SEQoJcHJlc2V0X2lkGAEgASgJEhYKCW5hbWVzcGFjZRgCIAEoCUgAiAEBEg8KB3ZlcnNpb24YAyABKAkSEQoJcHVibGlzaGVyGAQgASgJEh0KEHNvdXJjZV9yZWZlcmVuY2UYBSABKAlIAYgBARIWCg5hcmNoaXZlX3NoYTI1NhgGIAEoCRI0ChBpbnN0YWxsZWRfYXRfdXRjGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJyZWxhdGl2ZV9kaXJlY3RvcnkYCCABKAkSDwoHZW5hYmxlZBgJIAEoCBI8CgVyaXNrcxgKIAEoCzItLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRSaXNrRHRvEhYKCXNvdXJjZV9pZBgLIAEoCUgCiAEBEhEKBGljb24YDCABKAlIA4gBAUIMCgpfbmFtZXNwYWNlQhMKEV9zb3VyY2VfcmVmZXJlbmNlQgwKCl9zb3VyY2VfaWRCBwoFX2ljb24ilAIKI0NvbW11bml0eVByZXNldE9wZXJhdGlvblJlc3BvbnNlRHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIWCglwcmVzZXRfaWQYAiABKAlIAIgBARISCgVlcnJvchgDIAEoCUgBiAEBEksKDGluc3RhbGxhdGlvbhgEIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SSQoLZGlhZ25vc3RpY3MYBSADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG9CDAoKX3ByZXNldF9pZEIICgZfZXJyb3IisgIKIENvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvEhYKDmFyY2hpdmVfYmFzZTY0GAEgASgJEh8KEmV4cGVjdGVkX3ByZXNldF9pZBgCIAEoCUgAiAEBEh0KEGV4cGVjdGVkX3ZlcnNpb24YAyABKAlIAYgBARIcCg9leHBlY3RlZF9zaGEyNTYYBCABKAlIAogBARIWCglwdWJsaXNoZXIYBSABKAlIA4gBARIdChBzb3VyY2VfcmVmZXJlbmNlGAYgASgJSASIAQFCFQoTX2V4cGVjdGVkX3ByZXNldF9pZEITChFfZXhwZWN0ZWRfdmVyc2lvbkISChBfZXhwZWN0ZWRfc2hhMjU2QgwKCl9wdWJsaXNoZXJCEwoRX3NvdXJjZV9yZWZlcmVuY2UiMwogQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8SDwoHZW5hYmxlZBgBIAEoCDLMBQoXQ29tbXVuaXR5UHJlc2V0c1NlcnZpY2USfwoUTGlzdENvbW11bml0eVByZXNldHMSMi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdENvbW11bml0eVByZXNldHNSZXF1ZXN0GjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UShQEKFkluc3RhbGxDb21tdW5pdHlQcmVzZXQSNC5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNS5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlc3BvbnNlEo4BChlTZXRDb21tdW5pdHlQcmVzZXRFbmFibGVkEjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXF1ZXN0GjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXNwb25zZRKLAQoYVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0EjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVzcG9uc2USiAEKF1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzEjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVxdWVzdBo2LmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZWZyZXNoQ29tbXVuaXR5UHJlc2V0c1Jlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ne]),Oo=oe("CihoYWdpY29kZS9jb21tdW5pdHkvdjEvcHJlc2V0X3Rhc2tzLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiHQobR2V0UHJlc2V0VGFza0NhdGFsb2dSZXF1ZXN0ImMKHEdldFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8ibwoiQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrUmVxdWVzdER0byJzCiNDaGVja1ByZXNldFRhc2tSZXF1aXJlbWVudHNSZXNwb25zZRJMCgZyZXN1bHQYASABKAsyPC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tSZXNwb25zZUR0byIeChxMaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0ImIKHUxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hU3VtbWFyeUR0byI0ChpHZXRQcmVzZXRUYXNrU2NoZW1hUmVxdWVzdBIWCg5wcmVzZXRfdGFza19pZBgBIAEoCSJhChtHZXRQcmVzZXRUYXNrU2NoZW1hUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDcmVhdGlvblNjaGVtYUR0byLKAQogUHJlc2V0VGFza0NhdGFsb2dEaXNhYmxlZEl0ZW1EdG8SCgoCaWQYASABKAkSEAoIZ3JvdXBfaWQYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSDgoGc3RhdHVzGAQgASgJEhgKEHBsdWdpbl9yb290X3BhdGgYBSABKAkSSQoLZGlhZ25vc3RpY3MYBiADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG8iPQodUHJlc2V0VGFza0FnZW50UmVxdWlyZW1lbnREdG8SDAoEbW9kZRgBIAEoCRIOCgZhZ2VudHMYAiADKAki6gEKFFByZXNldFRhc2tDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhIKBXNraWxsGAUgASgJSACIAQESEAoDdXJsGAYgASgJSAGIAQESFgoJZG9jc19zbHVnGAcgASgJSAKIAQESHQoQcHJlbHVkZV90ZW1wbGF0ZRgIIAEoCUgDiAEBQggKBl9za2lsbEIGCgRfdXJsQgwKCl9kb2NzX3NsdWdCEwoRX3ByZWx1ZGVfdGVtcGxhdGUiNgoZUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgV0aXRsZRgCIAEoCSLMAQobUHJlc2V0VGFza0NvbW1hbmRDYXRhbG9nRHRvEhQKDHBhcmFtZXRlcl9pZBgBIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgCIAEoCRJACgZncm91cHMYAyADKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxI9Cghjb21tYW5kcxgEIAMoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tbWFuZER0byJWChpQcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxIOCgZsZWdhY3kYASABKAkSDwoHYmluZGluZxgCIAEoCRIXCg9kaWFnbm9zdGljX2NvZGUYAyABKAkidAoWUHJlc2V0VGFza0V4ZWN1dGlvbkR0bxIWCg5zY2hlbWFfdmVyc2lvbhgBIAEoCRIQCghzdHJhdGVneRgCIAEoCRIcCg9leHRlbnNpb25fcG9pbnQYAyABKAlIAIgBAUISChBfZXh0ZW5zaW9uX3BvaW50Ip8CChlQcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEg0KBWlucHV0GAEgASgJEh0KEHByb21wdF9wYXJhbWV0ZXIYAiABKAlIAIgBARIZCgxtZXRhZGF0YV9rZXkYAyABKAlIAYgBARIQCghyZXF1aXJlZBgEIAEoCBIVCghwcm9kdWNlchgFIAEoCUgCiAEBEhcKCnZhbHVlX3R5cGUYBiABKAlIA4gBARIWCgl0cmFuc2Zvcm0YByABKAlIBIgBARIPCgdhbGlhc2VzGAggAygJQhMKEV9wcm9tcHRfcGFyYW1ldGVyQg8KDV9tZXRhZGF0YV9rZXlCCwoJX3Byb2R1Y2VyQg0KC192YWx1ZV90eXBlQgwKCl90cmFuc2Zvcm0iOAoYUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvEg0KBXZhbHVlGAEgASgJEg0KBWxhYmVsGAIgASgJIt4DCiBQcmVzZXRUYXNrRmllbGRDb21wb25lbnRQcm9wc0R0bxIgChN0YXJnZXRfc2VsZWN0aW9uX2lkGAEgASgJSACIAQESFwoKZW1wdHlfdGV4dBgCIAEoCUgBiAEBEiMKFmFsbG93X291dHB1dF9zZWxlY3Rpb24YAyABKAhIAogBARIlChhyZXF1aXJlX291dHB1dF9zZWxlY3Rpb24YBCABKAhIA4gBARIYCgtlbXB0eV90aXRsZRgFIAEoCUgEiAEBEh4KEWVtcHR5X2Rlc2NyaXB0aW9uGAYgASgJSAWIAQESHQoQcmVxdWlyZWRfbWVzc2FnZRgHIAEoCUgGiAEBEkAKB29wdGlvbnMYCCADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvQhYKFF90YXJnZXRfc2VsZWN0aW9uX2lkQg0KC19lbXB0eV90ZXh0QhkKF19hbGxvd19vdXRwdXRfc2VsZWN0aW9uQhsKGV9yZXF1aXJlX291dHB1dF9zZWxlY3Rpb25CDgoMX2VtcHR5X3RpdGxlQhQKEl9lbXB0eV9kZXNjcmlwdGlvbkITChFfcmVxdWlyZWRfbWVzc2FnZSL3AgoXUHJlc2V0VGFza1BhbmVsRmllbGREdG8SCgoCaWQYASABKAkSEAoIcmVuZGVyZXIYAiABKAkSEgoKaW5wdXRfdHlwZRgDIAEoCRISCgp2YWx1ZV90eXBlGAQgASgJEhIKBWxhYmVsGAUgASgJSACIAQESEQoEaGludBgGIAEoCUgBiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAKIAQESEAoIcmVxdWlyZWQYCCABKAgSEwoGb3V0cHV0GAkgASgJSAOIAQESGwoOc2VsZWN0aW9uX21vZGUYCiABKAlIBIgBARJQCg9jb21wb25lbnRfcHJvcHMYCyABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkQ29tcG9uZW50UHJvcHNEdG9CCAoGX2xhYmVsQgcKBV9oaW50Qg4KDF9wbGFjZWhvbGRlckIJCgdfb3V0cHV0QhEKD19zZWxlY3Rpb25fbW9kZSJ3ChlQcmVzZXRUYXNrUGFuZWxTZWN0aW9uRHRvEgoKAmlkGAEgASgJEg4KBmxheW91dBgCIAEoCRI+CgZmaWVsZHMYAyADKAsyLi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BhbmVsRmllbGREdG8iyQEKIVByZXNldFRhc2tQcm9tcHRWYXJpYW50U3VtbWFyeUR0bxIKCgJpZBgBIAEoCRJSCgVtYXRjaBgCIAMoCzJDLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUHJvbXB0VmFyaWFudFN1bW1hcnlEdG8uTWF0Y2hFbnRyeRpECgpNYXRjaEVudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi/gEKIlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SDAoEdHlwZRgBIAEoCRIWCg5kZWZhdWx0X2xvY2FsZRgCIAEoCRIZChFzdXBwb3J0ZWRfbG9jYWxlcxgDIAMoCRIRCglzZWxlY3RvcnMYBCADKAkSSgoIdmFyaWFudHMYBSADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1Byb21wdFZhcmlhbnRTdW1tYXJ5RHRvEiAKE2ZhbGxiYWNrX3ZhcmlhbnRfaWQYBiABKAlIAIgBAUIWChRfZmFsbGJhY2tfdmFyaWFudF9pZCJFChhQcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SDAoEdHlwZRgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBW5hbWVzGAMgAygJIqoDCh5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8SEQoJc2NlbmVfa2V5GAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB3N1bW1hcnkYAyABKAkSYQoPdGl0bGVfYnlfbG9jYWxlGAQgAygLMkguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZVJlZ2lzdHJhdGlvbkR0by5UaXRsZUJ5TG9jYWxlRW50cnkSZQoRc3VtbWFyeV9ieV9sb2NhbGUYBSADKAsySi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjZW5lUmVnaXN0cmF0aW9uRHRvLlN1bW1hcnlCeUxvY2FsZUVudHJ5Eh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgGIAEoBRo0ChJUaXRsZUJ5TG9jYWxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo2ChRTdW1tYXJ5QnlMb2NhbGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIo8BChJQcmVzZXRUYXNrU2NlbmVEdG8SEAoIcHJvdmlkZXIYASABKAkSGQoRZGVmYXVsdF9zY2VuZV9rZXkYAiABKAkSTAoNcmVnaXN0cmF0aW9ucxgDIAMoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8ivAEKHFByZXNldFRhc2tUYXJnZXRTZWxlY3Rpb25EdG8SCgoCaWQYASABKAkSDAoEa2luZBgCIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgDIAEoCRIcChRhbGxvd2VkX2FjY2Vzc190eXBlcxgEIAMoCRIOCgZvdXRwdXQYBSABKAkSGQoMc2NvcGVfc291cmNlGAYgASgJSACIAQESEAoIcmVxdWlyZWQYByABKAhCDwoNX3Njb3BlX3NvdXJjZSKBCQoYUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSEQoEaWNvbhgFIAEoCUgAiAEBEhQKDGRpc3BsYXlfbmFtZRgGIAEoCRINCgV0aXRsZRgHIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIVCg1kZWZhdWx0X3RpdGxlGAkgASgJEhQKDHN1Ym1pdF9sYWJlbBgKIAEoCRIYChBzdWJtaXR0aW5nX2xhYmVsGAsgASgJEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYDCABKAkSGwoTYWxsb3dfaGVyb19vdmVycmlkZRgNIAEoCBISCgpzb3J0X29yZGVyGA4gASgFEhkKEXN1cHBvcnRlZF9sb2NhbGVzGA8gAygJEkIKCHNlY3Rpb25zGBAgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQYW5lbFNlY3Rpb25EdG8SSwoPY29tbWFuZF9jYXRhbG9nGBEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kQ2F0YWxvZ0R0bxJOChF0YXJnZXRfc2VsZWN0aW9ucxgSIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrVGFyZ2V0U2VsZWN0aW9uRHRvEk8KEWFnZW50X3JlcXVpcmVtZW50GBMgASgLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tBZ2VudFJlcXVpcmVtZW50RHRvEkUKDHJlcXVpcmVtZW50cxgUIAMoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SUgoPcHJvbXB0X3N0cmF0ZWd5GBUgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SQAoJZXhlY3V0aW9uGBYgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tFeGVjdXRpb25EdG8SSAoNY29tcGF0aWJpbGl0eRgXIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxJICg5pbnB1dF9iaW5kaW5ncxgYIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEjgKBXNjZW5lGBkgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZUR0bxIjChZzZXJ2ZXJfZGVjaWRlZF9oZXJvX2lkGBogASgJSAGIAQFCBwoFX2ljb25CGQoXX3NlcnZlcl9kZWNpZGVkX2hlcm9faWQirwEKHFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEk8KDmRpc2FibGVkX2l0ZW1zGAIgAygLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nRGlzYWJsZWRJdGVtRHRvIkgKJ1ByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrRGlhZ25vc3RpY0R0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkitQEKIVByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0bxIMCgR0eXBlGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGcGFzc2VkGAMgASgIEg8KB21lc3NhZ2UYBCABKAkSUwoLZGlhZ25vc3RpY3MYBSADKAsyPi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tEaWFnbm9zdGljRHRvIqMBCiVQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1Jlc3BvbnNlRHRvEhYKDnByZXNldF90YXNrX2lkGAEgASgJEhIKCmFsbF9wYXNzZWQYAiABKAgSTgoMcmVxdWlyZW1lbnRzGAMgAygLMjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0byI+CiRQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1JlcXVlc3REdG8SFgoOcHJlc2V0X3Rhc2tfaWQYASABKAkiygEKGlByZXNldFRhc2tTY2hlbWFTdW1tYXJ5RHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSDQoFdGl0bGUYBSABKAkSEwoLZGVzY3JpcHRpb24YBiABKAkSFAoMdGFyZ2V0X2NvdW50GAcgASgFEhUKDWNvbW1hbmRfY291bnQYCCABKAUSFwoPcGFyYW1ldGVyX2NvdW50GAkgASgFIngKGlByZXNldFRhc2tTY2hlbWFDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhAKA3VybBgFIAEoCUgAiAEBQgYKBF91cmwi0gEKG1ByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxIUCgxwYXJhbWV0ZXJfaWQYASABKAkSFgoOc2VsZWN0aW9uX21vZGUYAiABKAkSQAoGZ3JvdXBzGAMgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kR3JvdXBEdG8SQwoIY29tbWFuZHMYBCADKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYUNvbW1hbmREdG8iOwoYUHJlc2V0VGFza1NjaGVtYUFsaWFzRHRvEgsKA2tleRgBIAEoCRISCgpkZXByZWNhdGVkGAIgASgIIrQCChxQcmVzZXRUYXNrU2NoZW1hUGFyYW1ldGVyRHRvEgsKA2tleRgBIAEoCRIOCgZvcmlnaW4YAiABKAkSFQoIcHJvZHVjZXIYAyABKAlIAIgBARISCgp2YWx1ZV90eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEg0KBWxhYmVsGAYgASgJEhEKBGhpbnQYByABKAlIAYgBARJACgdvcHRpb25zGAggAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tGaWVsZE9wdGlvbkR0bxJACgdhbGlhc2VzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFBbGlhc0R0b0ILCglfcHJvZHVjZXJCBwoFX2hpbnQihwEKGlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEg4KBm1ldGhvZBgBIAEoCRIMCgRwYXRoGAIgASgJEhwKFHByZXNldF90YXNrX2lkX2ZpZWxkGAMgASgJEhQKDGxvY2FsZV9maWVsZBgEIAEoCRIXCg9yZXF1aXJlZF9maWVsZHMYBSADKAkieAokUHJlc2V0VGFza1NjaGVtYVNjZW5lUmVnaXN0cmF0aW9uRHRvEhEKCXNjZW5lX2tleRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgEIAEoBSKcAQoZUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxIQCghwcm92aWRlchgBIAEoCRIZChFkZWZhdWx0X3NjZW5lX2tleRgCIAEoCRJSCg1yZWdpc3RyYXRpb25zGAMgAygLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFTY2VuZVJlZ2lzdHJhdGlvbkR0byL0AQoZUHJlc2V0VGFza1NjaGVtYVRhcmdldER0bxIKCgJpZBgBIAEoCRIMCgRraW5kGAIgASgJEhYKDnNlbGVjdGlvbl9tb2RlGAMgASgJEhAKCHJlcXVpcmVkGAQgASgIEhwKFGFsbG93ZWRfYWNjZXNzX3R5cGVzGAUgAygJEhkKDHNjb3BlX3NvdXJjZRgGIAEoCUgAiAEBEhMKC3JlcXVlc3Rfa2V5GAcgASgJEh4KEXNjb3BlX3JlcXVlc3Rfa2V5GAggASgJSAGIAQFCDwoNX3Njb3BlX3NvdXJjZUIUChJfc2NvcGVfcmVxdWVzdF9rZXkiegoYUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYASABKAkSQQoHdGFyZ2V0cxgCIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hVGFyZ2V0RHRvIuMEChtQcmVzZXRUYXNrQ3JlYXRpb25TY2hlbWFEdG8SCgoCaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIOCgZsb2NhbGUYAyABKAkSDQoFdGl0bGUYBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSPgoFc2NvcGUYBiABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEkQKCGNvbW1hbmRzGAcgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxJHCgpwYXJhbWV0ZXJzGAggAygLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFQYXJhbWV0ZXJEdG8SRQoMcmVxdWlyZW1lbnRzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudER0bxJACgZzY2VuZXMYCiABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxJCCgdyZXF1ZXN0GAsgASgLMjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEi0KDGlucHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKAoHZXhhbXBsZRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QyrwQKElByZXNldFRhc2tzU2VydmljZRJ/ChRHZXRQcmVzZXRUYXNrQ2F0YWxvZxIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRQcmVzZXRUYXNrQ2F0YWxvZ1JlcXVlc3QaMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza0NhdGFsb2dSZXNwb25zZRKUAQobQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzEjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoZWNrUHJlc2V0VGFza1JlcXVpcmVtZW50c1JlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVzcG9uc2USggEKFUxpc3RQcmVzZXRUYXNrU2NoZW1hcxIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEnwKE0dldFByZXNldFRhc2tTY2hlbWESMS5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ue,bh]),gh=v(Oo,5),ph=v(Oo,7),Ah=We(Oo,0),ae=oe("CiloYWdpY29kZS9jb21tdW5pdHkvdjEvc2tpbGxfZ2FsbGVyeS5wcm90bxIVaGFnaWNvZGUuY29tbXVuaXR5LnYxIhcKFUdldExvY2FsU2tpbGxzUmVxdWVzdCJfChZHZXRMb2NhbFNraWxsc1Jlc3BvbnNlEkUKBnJlc3VsdBgBIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8iLAocR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBIMCgRzbHVnGAEgASgJIl0KHUdldEJ1aWx0SW5Ta2lsbERldGFpbFJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5CdWlsdEluU2tpbGxEZXRhaWxEdG8iYAoaVW5pbnN0YWxsTG9jYWxTa2lsbFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vbmluc3RhbGxMb2NhbFNraWxsUmVxdWVzdER0byJiChtVbmluc3RhbGxMb2NhbFNraWxsUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXN1bHREdG8icAoiU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVxdWVzdBJKCgRib2R5GAEgASgLMjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3REdG8icgojU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2USSwoGcmVzdWx0GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0byI2ChZHZXRTa2lsbEdhbGxlcnlSZXF1ZXN0EhIKBXF1ZXJ5GAEgASgJSACIAQFCCAoGX3F1ZXJ5IlkKF0dldFNraWxsR2FsbGVyeVJlc3BvbnNlEj4KBnJlc3VsdBgBIAEoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlSZXNwb25zZUR0byI6ChxHZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCSJdCh1HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXNwb25zZRI8CgZyZXN1bHQYASABKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5RGV0YWlsRHRvIjkKG0dldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkiWwocR2V0U2tpbGxHYWxsZXJ5QXVkaXRSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5QXVkaXREdG8itAEKHFNraWxsR2FsbGVyeUF1ZGl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSEQoEcmlzaxgCIAEoCUgAiAEBEhMKBmFsZXJ0cxgDIAEoBUgBiAEBEhIKBXNjb3JlGAQgASgFSAKIAQESGAoLYW5hbHl6ZWRfYXQYBSABKAlIA4gBAUIHCgVfcmlza0IJCgdfYWxlcnRzQggKBl9zY29yZUIOCgxfYW5hbHl6ZWRfYXQijgEKFFNraWxsR2FsbGVyeUF1ZGl0RHRvEgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCRISCgpza2lsbF9zbHVnGAMgASgJEkYKCXByb3ZpZGVycxgEIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlBdWRpdFByb3ZpZGVyRHRvIkIKJEdldFNraWxsR2FsbGVyeUluc3RhbGxDb250ZXh0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkibQolR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHREdG8iIQofR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVxdWVzdCJuCiBHZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8ibgohVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0EkkKBGJvZHkYASABKAsyOy5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvInAKIlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVzcG9uc2USSgoGcmVzdWx0GAEgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyTGlzdFJlc3BvbnNlRHRvIm4KIURlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdER0byJwCiJEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckxpc3RSZXNwb25zZUR0byIjCiFSZXNldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QicAoiUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8iUgoTSW5zdGFsbFNraWxsUmVxdWVzdBI7CgRib2R5GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3REdG8iVAoUSW5zdGFsbFNraWxsUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlc3VsdER0byL3AQoYTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvEg8KB2VuYWJsZWQYASABKAgSFAoHdmVyc2lvbhgCIAEoCUgAiAEBEhMKBnNvdXJjZRgDIAEoCUgBiAEBEhcKCnJlcG9zaXRvcnkYBCABKAlIAogBARIQCgNyZWYYBSABKAlIA4gBARIRCgRwYXRoGAYgASgJSASIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAWIAQFCCgoIX3ZlcnNpb25CCQoHX3NvdXJjZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQg8KDV9jb250ZW50X2hhc2givAIKI0xvY2FsU2tpbGxNYW5hZ2VkSW5zdGFsbE1ldGFkYXRhRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgFEhAKCHNraWxsX2lkGAIgASgJEg4KBnNvdXJjZRgDIAEoCRISCgpza2lsbF9zbHVnGAQgASgJEhQKB3ZlcnNpb24YBSABKAlIAIgBARIhChRub3JtYWxpemVkX3NraWxsX2tleRgGIAEoCUgBiAEBEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSAKIAQESMwoPcmVjb3JkZWRfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfdmVyc2lvbkIXChVfbm9ybWFsaXplZF9za2lsbF9rZXlCFAoSX2luc3RhbGxfcmVmZXJlbmNlIosCChFMb2NhbFNraWxsSXRlbUR0bxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBXNjb3BlGAMgASgJEgwKBHBhdGgYBCABKAkSDgoGYWdlbnRzGAUgAygJElwKGG1hbmFnZWRfaW5zdGFsbF9tZXRhZGF0YRgGIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsTWFuYWdlZEluc3RhbGxNZXRhZGF0YUR0bxIOCgZvcmlnaW4YByABKAkSQQoIYnVpbHRfaW4YCCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvIo8BCh5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNwoFaXRlbXMYAiADKAsyKC5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEl0ZW1EdG8isQEKG0J1aWx0SW5Ta2lsbERldGFpbFNvdXJjZUR0bxIRCgR0eXBlGAEgASgJSACIAQESFwoKcmVwb3NpdG9yeRgCIAEoCUgBiAEBEhAKA3JlZhgDIAEoCUgCiAEBEhEKBHBhdGgYBCABKAlIA4gBARIQCgN1cmwYBSABKAlIBIgBAUIHCgVfdHlwZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQgYKBF91cmwiPAoYQnVpbHRJblNraWxsRmlsZUVudHJ5RHRvEgwKBHBhdGgYASABKAkSEgoKc2l6ZV9ieXRlcxgCIAEoAyI5ChtCdWlsdEluU2tpbGxNZXRhZGF0YVBhaXJEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJIo4EChVCdWlsdEluU2tpbGxEZXRhaWxEdG8SDAoEc2x1ZxgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhQKB3ZlcnNpb24YBCABKAlIAIgBARIPCgdlbmFibGVkGAUgASgIEkQKCG1ldGFkYXRhGAYgAygLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbE1ldGFkYXRhUGFpckR0bxJCCgZzb3VyY2UYByABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQnVpbHRJblNraWxsRGV0YWlsU291cmNlRHRvEhkKDGNvbnRlbnRfaGFzaBgIIAEoCUgBiAEBEj4KBWZpbGVzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbEZpbGVFbnRyeUR0bxISCgpmaWxlX2NvdW50GAogASgFEhgKEHRvdGFsX3NpemVfYnl0ZXMYCyABKAMSFwoPZmlsZXNfdHJ1bmNhdGVkGAwgASgIEhUKDWxpY2Vuc2VfZmlsZXMYDSADKAkSDAoEYm9keRgOIAEoCRIWCg5ib2R5X3RydW5jYXRlZBgPIAEoCBIXCg9ib2R5X3NpemVfYnl0ZXMYECABKANCCgoIX3ZlcnNpb25CDwoNX2NvbnRlbnRfaGFzaCLXAQocVW5pbnN0YWxsTG9jYWxTa2lsbFJlc3VsdER0bxISCgpza2lsbF9uYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIZCgx1c2VyX21lc3NhZ2UYAyABKAlIAIgBARIfChJkaWFnbm9zdGljX21lc3NhZ2UYBCABKAlIAYgBARIvCgtvY2N1cnJlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX3VzZXJfbWVzc2FnZUIVChNfZGlhZ25vc3RpY19tZXNzYWdlIjMKHVVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0RHRvEhIKCnNraWxsX25hbWUYASABKAkivAEKJFNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0bxIMCgRzbHVnGAEgASgJEg8KB2VuYWJsZWQYAiABKAgSEQoJc3VjY2VlZGVkGAMgASgIEhkKDHVzZXJfbWVzc2FnZRgEIAEoCUgAiAEBEh8KEmRpYWdub3N0aWNfbWVzc2FnZRgFIAEoCUgBiAEBQg8KDV91c2VyX21lc3NhZ2VCFQoTX2RpYWdub3N0aWNfbWVzc2FnZSJGCiVTZXRCdWlsdEluU2tpbGxBdmFpbGFiaWxpdHlSZXF1ZXN0RHRvEgwKBHNsdWcYASABKAkSDwoHZW5hYmxlZBgCIAEoCCKlAgoiU2tpbGxHYWxsZXJ5UmVwb3NpdG9yeURpc2NvdmVyeUR0bxIMCgRtb2RlGAEgASgJEhwKD3JlcXVlc3RlZF9xdWVyeRgCIAEoCUgAiAEBEh4KEW5vcm1hbGl6ZWRfc291cmNlGAMgASgJSAGIAQESGwoOcmVwb3NpdG9yeV91cmwYBCABKAlIAogBARIPCgdvdXRjb21lGAUgASgJEhcKCmVycm9yX2NvZGUYBiABKAlIA4gBARIUCgdtZXNzYWdlGAcgASgJSASIAQFCEgoQX3JlcXVlc3RlZF9xdWVyeUIUChJfbm9ybWFsaXplZF9zb3VyY2VCEQoPX3JlcG9zaXRvcnlfdXJsQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIuYBCiNUcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSHgoRbWF0Y2hlZF9ydWxlX3R5cGUYBCABKAlIAIgBARIfChJtYXRjaGVkX3J1bGVfdmFsdWUYBSABKAlIAYgBARIRCglpc19wcmVzZXQYBiABKAhCFAoSX21hdGNoZWRfcnVsZV90eXBlQhUKE19tYXRjaGVkX3J1bGVfdmFsdWUiwwEKFFNraWxsR2FsbGVyeVNraWxsRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc291cmNlGAMgASgJEhAKCGluc3RhbGxzGAQgASgFEhkKEWlzX3RydXN0ZWRfc291cmNlGAUgASgIElQKEHRydXN0ZWRfcHJvdmlkZXIYBiABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJUcnVzdFN1bW1hcnlEdG8i5AEKF1NraWxsR2FsbGVyeVJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKBWl0ZW1zGAIgAygLMisuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVNraWxsRHRvElcKFHJlcG9zaXRvcnlfZGlzY292ZXJ5GAMgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVJlcG9zaXRvcnlEaXNjb3ZlcnlEdG8i7AUKFVNraWxsR2FsbGVyeURldGFpbER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhwKD3JlcG9zaXRvcnlfbmFtZRgFIAEoCUgBiAEBEiEKFHJlcG9zaXRvcnlfZnVsbF9uYW1lGAYgASgJSAKIAQESGwoOcmVwb3NpdG9yeV91cmwYByABKAlIA4gBARImChlyZXBvc2l0b3J5X2RlZmF1bHRfYnJhbmNoGAggASgJSASIAQESHwoScmVwb3NpdG9yeV9wcml2YXRlGAkgASgISAWIAQESFgoOaXNfaW5zdGFsbGFibGUYCiABKAgSGQoRaXNfdHJ1c3RlZF9zb3VyY2UYCyABKAgSVAoQdHJ1c3RlZF9wcm92aWRlchgMIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxIeChFpbnN0YWxsX3JlZmVyZW5jZRgNIAEoCUgGiAEBEiQKF2luc3RhbGxfY29tbWFuZF9wcmV2aWV3GA4gASgJSAeIAQESHAoPaW5zdGFsbF92ZXJzaW9uGA8gASgJSAiIAQESGQoMaW5zdGFsbF9oaW50GBAgASgJSAmIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9yZXBvc2l0b3J5X25hbWVCFwoVX3JlcG9zaXRvcnlfZnVsbF9uYW1lQhEKD19yZXBvc2l0b3J5X3VybEIcChpfcmVwb3NpdG9yeV9kZWZhdWx0X2JyYW5jaEIVChNfcmVwb3NpdG9yeV9wcml2YXRlQhQKEl9pbnN0YWxsX3JlZmVyZW5jZUIaChhfaW5zdGFsbF9jb21tYW5kX3ByZXZpZXdCEgoQX2luc3RhbGxfdmVyc2lvbkIPCg1faW5zdGFsbF9oaW50Iq4DCh1Ta2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIWCg5pc19pbnN0YWxsYWJsZRgEIAEoCBIZChFpc190cnVzdGVkX3NvdXJjZRgFIAEoCBJUChB0cnVzdGVkX3Byb3ZpZGVyGAYgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyVHJ1c3RTdW1tYXJ5RHRvEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSACIAQESJAoXaW5zdGFsbF9jb21tYW5kX3ByZXZpZXcYCCABKAlIAYgBARIcCg9pbnN0YWxsX3ZlcnNpb24YCSABKAlIAogBARIZCgxpbnN0YWxsX2hpbnQYCiABKAlIA4gBAUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCGgoYX2luc3RhbGxfY29tbWFuZF9wcmV2aWV3QhIKEF9pbnN0YWxsX3ZlcnNpb25CDwoNX2luc3RhbGxfaGludCJFCiBUcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0bxISCgptYXRjaF90eXBlGAEgASgJEg0KBXZhbHVlGAIgASgJIo8CChdUcnVzdGVkU2tpbGxQcm92aWRlckR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSEQoJaXNfcHJlc2V0GAQgASgIEhIKCmlzX2VuYWJsZWQYBSABKAgSEgoKc29ydF9vcmRlchgGIAEoBRISCgpydWxlX2NvdW50GAcgASgFEhcKD3NvdXJjZV9leGFtcGxlcxgIIAMoCRJMCgttYXRjaF9ydWxlcxgJIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0byKrAQojVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmVyc2lvbhgCIAEoBRI9CgVpdGVtcxgDIAMoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckR0byLxAQokVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtiYWRnZV9sYWJlbBgDIAEoCUgAiAEBEhIKCmlzX2VuYWJsZWQYBCABKAgSEgoKc29ydF9vcmRlchgFIAEoBRJMCgttYXRjaF9ydWxlcxgGIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0b0IOCgxfYmFkZ2VfbGFiZWwiOwokRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJIrgDChVJbnN0YWxsU2tpbGxSZXN1bHREdG8SEAoIc2tpbGxfaWQYASABKAkSDgoGc291cmNlGAIgASgJEhIKCnNraWxsX3NsdWcYAyABKAkSIQoUbm9ybWFsaXplZF9za2lsbF9rZXkYBCABKAlIAIgBARIeChFpbnN0YWxsX3JlZmVyZW5jZRgFIAEoCUgBiAEBEhwKD2NvbW1hbmRfcHJldmlldxgGIAEoCUgCiAEBEhQKB3ZlcnNpb24YByABKAlIA4gBARIOCgZzdGF0dXMYCCABKAkSGQoMdXNlcl9tZXNzYWdlGAkgASgJSASIAQESHwoSZGlhZ25vc3RpY19tZXNzYWdlGAogASgJSAWIAQESLwoLb2NjdXJyZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9ub3JtYWxpemVkX3NraWxsX2tleUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCEgoQX2NvbW1hbmRfcHJldmlld0IKCghfdmVyc2lvbkIPCg1fdXNlcl9tZXNzYWdlQhUKE19kaWFnbm9zdGljX21lc3NhZ2UiagoWSW5zdGFsbFNraWxsUmVxdWVzdER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIUCgd2ZXJzaW9uGAQgASgJSACIAQFCCgoIX3ZlcnNpb24iGwoZTGlzdFVzZXJTa2lsbEJhc2VzUmVxdWVzdCJfChpMaXN0VXNlclNraWxsQmFzZXNSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8iWgoXQWRkVXNlclNraWxsQmFzZVJlcXVlc3QSPwoEYm9keRgBIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdER0byJZChhBZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVtb3ZlVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJiChtSZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlbW92ZVVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVzY2FuVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJcChtSZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iYAoaU2V0VXNlclNraWxsRW5hYmxlZFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdER0byJiChtTZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldFVzZXJTa2lsbEVuYWJsZWRSZXN1bHREdG8i+AEKEFVzZXJTa2lsbEJhc2VEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSDAoEcGF0aBgDIAEoCRIOCgZzdGF0dXMYBCABKAkSGgoNc3RhdHVzX3JlYXNvbhgFIAEoCUgAiAEBEhsKDnN0YXR1c19tZXNzYWdlGAYgASgJSAGIAQESMwoGc2tpbGxzGAcgAygLMiMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbER0bxIYChBza2lsbHNfdHJ1bmNhdGVkGAggASgIQhAKDl9zdGF0dXNfcmVhc29uQhEKD19zdGF0dXNfbWVzc2FnZSL9AQoMVXNlclNraWxsRHRvEgwKBHNsdWcYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg8KB2VuYWJsZWQYBCABKAgSDgoGc3RhdHVzGAUgASgJEhsKDmNvbmZsaWN0c193aXRoGAYgASgJSAGIAQESPAoIcHJvYmxlbXMYByADKAsyKi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsUHJvYmxlbUR0bxIKCgJpZBgIIAEoCRIMCgRwYXRoGAkgASgJQg4KDF9kZXNjcmlwdGlvbkIRCg9fY29uZmxpY3RzX3dpdGgiNAoTVXNlclNraWxsUHJvYmxlbUR0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkiSAoaQWRkVXNlclNraWxsQmFzZVJlcXVlc3REdG8SDAoEcGF0aBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBQggKBl9sYWJlbCKTAQoaVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8SEQoJc3VjY2VlZGVkGAEgASgIEhkKDHVzZXJfbWVzc2FnZRgCIAEoCUgAiAEBEjYKBWJhc2VzGAMgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VEdG9CDwoNX3VzZXJfbWVzc2FnZSKOAQoWVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESNQoEYmFzZRgDIAEoCzInLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vc2VyU2tpbGxCYXNlRHRvQg8KDV91c2VyX21lc3NhZ2UibgocUmVtb3ZlVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESDwoHYmFzZV9pZBgDIAEoCUIPCg1fdXNlcl9tZXNzYWdlIlUKHVNldFVzZXJTa2lsbEVuYWJsZWRSZXF1ZXN0RHRvEg8KB2Jhc2VfaWQYASABKAkSEgoKc2tpbGxfc2x1ZxgCIAEoCRIPCgdlbmFibGVkGAMgASgIIpMBChxTZXRVc2VyU2tpbGxFbmFibGVkUmVzdWx0RHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIZCgx1c2VyX21lc3NhZ2UYAiABKAlIAIgBARIPCgdiYXNlX2lkGAMgASgJEhIKCnNraWxsX3NsdWcYBCABKAkSDwoHZW5hYmxlZBgFIAEoCEIPCg1fdXNlcl9tZXNzYWdlMtASChNTa2lsbEdhbGxlcnlTZXJ2aWNlEm0KDkdldExvY2FsU2tpbGxzEiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldExvY2FsU2tpbGxzUmVxdWVzdBotLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRMb2NhbFNraWxsc1Jlc3BvbnNlEoIBChVHZXRCdWlsdEluU2tpbGxEZXRhaWwSMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBo0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRCdWlsdEluU2tpbGxEZXRhaWxSZXNwb25zZRJ8ChNVbmluc3RhbGxMb2NhbFNraWxsEjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0GjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXNwb25zZRKUAQobU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5EjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2UScAoPR2V0U2tpbGxHYWxsZXJ5Ei0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeVJlcXVlc3QaLi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5UmVzcG9uc2USggEKFUdldFNraWxsR2FsbGVyeURldGFpbBIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeURldGFpbFJlc3BvbnNlEn8KFEdldFNraWxsR2FsbGVyeUF1ZGl0EjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBozLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlBdWRpdFJlc3BvbnNlEpoBCh1HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dBI7LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dFJlcXVlc3QaPC5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRKLAQoYR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzEjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USkQEKGlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyEjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBo5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5VcHNlcnRUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEpEBChpEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlchI4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5EZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlcXVlc3QaOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXNwb25zZRKRAQoaUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnMSOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXF1ZXN0GjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlc2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USZwoMSW5zdGFsbFNraWxsEiouaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3QaKy5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbFNraWxsUmVzcG9uc2USeQoSTGlzdFVzZXJTa2lsbEJhc2VzEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RVc2VyU2tpbGxCYXNlc1JlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFVzZXJTa2lsbEJhc2VzUmVzcG9uc2UScwoQQWRkVXNlclNraWxsQmFzZRIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVtb3ZlVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVzY2FuVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTU2V0VXNlclNraWxsRW5hYmxlZBIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2VCK6oCKFBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5Db21tdW5pdHkuVjFiBnByb3RvMw",[Ne]),fh=v(ae,1),Zh=v(ae,5),Rh=v(ae,7),Eh=v(ae,9),Vh=v(ae,11),Gh=v(ae,13),Sh=v(ae,19),Nh=v(ae,21),vh=v(ae,23),Wh=v(ae,25),yh=v(ae,27),Ih=v(ae,37),Yh=v(ae,39),Xh=v(ae,49),Bh=v(ae,50),Ch=v(ae,52),Fh=We(ae,0),Ws=oe("CiVoYWdpY29kZS9wbGF0Zm9ybS92MS9zdGF0aXN0aWNzLnByb3RvEhRoYWdpY29kZS5wbGF0Zm9ybS52MSJ1ChhHZXRBZ2dyZWdhdGVkRGF0YVJlcXVlc3QSFQoNZm9yY2VfcmVmcmVzaBgBIAEoCBIlChhnaXRfYXV0b19yZWZyZXNoX2VuYWJsZWQYAiABKAhIAIgBAUIbChlfZ2l0X2F1dG9fcmVmcmVzaF9lbmFibGVkIl0KGUdldEFnZ3JlZ2F0ZWREYXRhUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8iHQobR2V0VG9rZW5Nb25pdG9yVXNhZ2VSZXF1ZXN0ImIKHEdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yVXNhZ2VTbmFwc2hvdER0byK/AQodR2V0VG9rZW5Nb25pdG9ySGlzdG9yeVJlcXVlc3QSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgAiAEBEhcKCnBhZ2VfdG9rZW4YBCABKAlIAYgBAUIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuImIKHkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRJACgZyZXN1bHQYASABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JIaXN0b3J5UGFnZUR0byKTAQoaVG9rZW5Nb25pdG9ySGlzdG9yeVBhZ2VEdG8SQwoHc2FtcGxlcxgBIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlTYW1wbGVEdG8SHAoPbmV4dF9wYWdlX3Rva2VuGAIgASgJSACIAQFCEgoQX25leHRfcGFnZV90b2tlbiKhAwocVG9rZW5Nb25pdG9ySGlzdG9yeVNhbXBsZUR0bxIzCg9vYnNlcnZlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGwoOZmFpbHVyZV9yZWFzb24YBCABKAlIAIgBARIVCghkYXRlX2tleRgFIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgGIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAcgASgBSAOIAQESQwoHcGVyaW9kcxgIIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlQZXJpb2REdG8SQwoHd2luZG93cxgJIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlXaW5kb3dEdG9CEQoPX2ZhaWx1cmVfcmVhc29uQgsKCV9kYXRlX2tleUIPCg1fdG90YWxfdG9rZW5zQgsKCV9jb3N0X3VzZCKOAwocVG9rZW5Nb25pdG9ySGlzdG9yeVBlcmlvZER0bxIOCgZwZXJpb2QYASABKAkSFAoMdG90YWxfdG9rZW5zGAIgASgDEhAKCGNvc3RfdXNkGAMgASgBEh4KEWNhY2hlX3JlYWRfdG9rZW5zGAQgASgDSACIAQESHwoSY2FjaGVfd3JpdGVfdG9rZW5zGAUgASgDSAGIAQESGgoNb3V0cHV0X3Rva2VucxgGIAEoA0gCiAEBEhkKDHRpbWVkX3Rva2VucxgHIAEoA0gDiAEBEiAKE3RpbWVkX291dHB1dF90b2tlbnMYCCABKANIBIgBARIeChF0aW1lZF9kdXJhdGlvbl9tcxgJIAEoA0gFiAEBQhQKEl9jYWNoZV9yZWFkX3Rva2Vuc0IVChNfY2FjaGVfd3JpdGVfdG9rZW5zQhAKDl9vdXRwdXRfdG9rZW5zQg8KDV90aW1lZF90b2tlbnNCFgoUX3RpbWVkX291dHB1dF90b2tlbnNCFAoSX3RpbWVkX2R1cmF0aW9uX21zIp0DChxUb2tlbk1vbml0b3JIaXN0b3J5V2luZG93RHRvEhAKCHByb3ZpZGVyGAEgASgJEhcKCnBsYW5fbGFiZWwYAiABKAlIAIgBARIXCg9wcm92aWRlcl9zdGF0dXMYAyABKAkSDAoEa2luZBgEIAEoCRISCgVsYWJlbBgFIAEoCUgBiAEBEhsKDndpbmRvd19taW51dGVzGAYgASgFSAKIAQESGQoMdXNlZF9wZXJjZW50GAcgASgBSAOIAQESHgoRcmVtYWluaW5nX3BlcmNlbnQYCCABKAFIBIgBARIxCg1yZXNldHNfYXRfdXRjGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVzb3VyY2VfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19wbGFuX2xhYmVsQggKBl9sYWJlbEIRCg9fd2luZG93X21pbnV0ZXNCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnQidQohR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2VSZXF1ZXN0EigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJmCiJHZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEkAKBnJlc3VsdBgBIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhvdXJseVVzYWdlRHRvItcCChpUb2tlbk1vbml0b3JIb3VybHlVc2FnZUR0bxIyCg5ob3VyX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXRjX29mZnNldF9taW51dGVzGAIgASgFEg4KBnRva2VucxgDIAEoAxIQCghjb3N0X3VzZBgEIAEoARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSACIAQESHgoRY2FjaGVfcmVhZF90b2tlbnMYBiABKANIAYgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYByABKANIAogBARIYChBvYnNlcnZlZF9zZWNvbmRzGAggASgFEhEKCWVzdGltYXRlZBgJIAEoCEIQCg5fb3V0cHV0X3Rva2Vuc0IUChJfY2FjaGVfcmVhZF90b2tlbnNCFQoTX2NhY2hlX3dyaXRlX3Rva2VucyIlCiNHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVxdWVzdCJgCiRHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0RHRvIkQKIEdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXF1ZXN0EhQKB21pbnV0ZXMYASABKAVIAIgBAUIKCghfbWludXRlcyJiCiFHZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVzcG9uc2USPQoGcmVzdWx0GAEgAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0U25hcHNob3QiOAoaR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QSEQoEZGF0ZRgBIAEoCUgAiAEBQgcKBV9kYXRlIlgKG0dldEhlcm9CYXR0bGVSZXBvcnRSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RHRvIkAKIEdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXF1ZXN0EhIKBXJhbmdlGAEgASgJSACIAQFCCAoGX3JhbmdlImcKIUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvIuwCChxHZXRIaXN0b3JpY2FsVGltZWxpbmVSZXF1ZXN0EhgKC2VudGl0eV90eXBlGAEgASgJSACIAQESFgoJZW50aXR5X2lkGAIgASgJSAGIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgCiAEBEhcKCnNlc3Npb25faWQYBCABKAlIA4gBARIzCg9yYW5nZV9zdGFydF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjEKDXJhbmdlX2VuZF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBmN1cnNvchgHIAEoCUgEiAEBEhYKCXBhZ2Vfc2l6ZRgIIAEoBUgFiAEBQg4KDF9lbnRpdHlfdHlwZUIMCgpfZW50aXR5X2lkQg0KC19wcm9qZWN0X2lkQg0KC19zZXNzaW9uX2lkQgkKB19jdXJzb3JCDAoKX3BhZ2Vfc2l6ZSJpCh1HZXRIaXN0b3JpY2FsVGltZWxpbmVSZXNwb25zZRJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvIiUKI0dldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXF1ZXN0InIKJEdldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VEdG8iqgEKFkFnZ3JlZ2F0aW9uTWV0YWRhdGFEdG8SLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg50b3RhbF9wcm9qZWN0cxgCIAEoBRIaChJ0b3RhbF9yZXBvc2l0b3JpZXMYAyABKAUSFwoPZmFpbGVkX3Byb2plY3RzGAQgASgFEhQKDGhhc19mYWlsdXJlcxgFIAEoCCKyBQoYUmVwb3NpdG9yeUFnZ3JlZ2F0aW9uRHRvEhEKBGNvZGUYASABKAlIAIgBARIMCgRuYW1lGAIgASgJEgwKBHBhdGgYAyABKAkSFQoNcmVsYXRpdmVfcGF0aBgEIAEoCRIUCgxkaXNwbGF5X25hbWUYBSABKAkSEQoEdHlwZRgGIAEoCUgBiAEBEgwKBHRhZ3MYByADKAkSEQoEaWNvbhgIIAEoCUgCiAEBEhAKA3VybBgJIAEoCUgDiAEBEhgKEGNvbGxhcHNlX3RvX21vcmUYCiABKAgSGQoRaXNfdmFsaWRfZ2l0X3JlcG8YCyABKAgSHAoUZ2l0X3N0YXR1c19hdmFpbGFibGUYDCABKAgSEwoGYnJhbmNoGA0gASgJSASIAQESHwoXaGFzX3VuY29tbWl0dGVkX2NoYW5nZXMYDiABKAgSHQoVdW5wdXNoZWRfY29tbWl0X2NvdW50GA8gASgFEhsKE2hhc190cmFja2luZ19icmFuY2gYECABKAgSNQoPdHJhY2tpbmdfYnJhbmNoGBEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEhMKC2FoZWFkX2NvdW50GBIgASgFEhQKDGJlaGluZF9jb3VudBgTIAEoBRIXCgpzeW5jX3N0YXRlGBQgASgJSAWIAQESEwoLaXNfb3B0aW9uYWwYFSABKAgSFAoMaXNfc2FuaXRpemVkGBYgASgIEhsKE3Nhbml0aXphdGlvbl9yZWFzb24YFyABKAkSGAoQaGFzX25hbWVfd2FybmluZxgYIAEoCBIVCg1uYW1lX3dhcm5pbmdzGBkgAygJQgcKBV9jb2RlQgcKBV90eXBlQgcKBV9pY29uQgYKBF91cmxCCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSK6BAoVUHJvamVjdEFnZ3JlZ2F0aW9uRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhUKDWlzX21vbm9fc3BlY3MYBSABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAYgASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgHIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgIIAEoCEgDiAEBEkQKDHJlcG9zaXRvcmllcxgJIAMoCzIuLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlJlcG9zaXRvcnlBZ2dyZWdhdGlvbkR0bxJBCh1naXRfc25hcHNob3RfcmVmcmVzaGVkX2F0X3V0YxgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIQoZZ2l0X3NuYXBzaG90X3NlcnZlZF9zdGFsZRgLIAEoCBIrCgVlcnJvchgMIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIRCgloYXNfZXJyb3IYDSABKAhCDgoMX2Rlc2NyaXB0aW9uQhUKE19tb25vX3NwZWNzX3ZlcnNpb25CHAoaX21vbm9fc3BlY3NfcmVwb19kaXJlY3RvcnlCIQofX21vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZSKbAQoaRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8SPQoIcHJvamVjdHMYASADKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Qcm9qZWN0QWdncmVnYXRpb25EdG8SPgoIbWV0YWRhdGEYAiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5BZ2dyZWdhdGlvbk1ldGFkYXRhRHRvIqkDChxUb2tlbk1vbml0b3JVc2FnZVNuYXBzaG90RHRvEg4KBnN0YXR1cxgBIAEoCRIOCgZzb3VyY2UYAiABKAkSGwoOZmFpbHVyZV9yZWFzb24YAyABKAlIAIgBARIVCghkYXRlX2tleRgEIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgFIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAYgASgBSAOIAQESLwoLcmVhZF9hdF91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhgKEHNuYXBzaG90X3ZlcnNpb24YCCABKAMSOwoGbGltaXRzGAkgASgLMisuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yTGltaXRzRHRvEj0KB3BlcmlvZHMYCiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RzRHRvQhEKD19mYWlsdXJlX3JlYXNvbkILCglfZGF0ZV9rZXlCDwoNX3RvdGFsX3Rva2Vuc0ILCglfY29zdF91c2QiugEKFVRva2VuTW9uaXRvckxpbWl0c0R0bxIyCg51cGRhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKcmVmcmVzaF9tcxgCIAEoBUgAiAEBEkUKCXByb3ZpZGVycxgDIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG9CDQoLX3JlZnJlc2hfbXMi0wIKHFRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSDgoGc3RhdHVzGAIgASgJEhcKCnBsYW5fbGFiZWwYAyABKAlIAIgBARIyCg51cGRhdGVkX2F0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoHd2luZG93cxgFIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEhgKC2JhbGFuY2VfdXNkGAYgASgBSAGIAQESSAoNcmVzZXRfY3JlZGl0cxgHIAEoCzIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0b0INCgtfcGxhbl9sYWJlbEIOCgxfYmFsYW5jZV91c2Qi9QMKGlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEgwKBGtpbmQYASABKAkSEgoFbGFiZWwYAiABKAlIAIgBARIZCgx1c2VkX3BlcmNlbnQYAyABKAFIAYgBARIeChFyZW1haW5pbmdfcGVyY2VudBgEIAEoAUgCiAEBEhEKBHVzZWQYBSABKAFIA4gBARISCgVsaW1pdBgGIAEoAUgEiAEBEhYKCXJlbWFpbmluZxgHIAEoAUgFiAEBEhUKCGN1cnJlbmN5GAggASgJSAaIAQESMQoNcmVzZXRzX2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOd2luZG93X21pbnV0ZXMYCiABKAVIB4gBARIeChFyZXNldF9kZXNjcmlwdGlvbhgLIAEoCUgIiAEBEhoKDW1ldGVyX3Zpc2libGUYDCABKAhICYgBAUIICgZfbGFiZWxCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnRCBwoFX3VzZWRCCAoGX2xpbWl0QgwKCl9yZW1haW5pbmdCCwoJX2N1cnJlbmN5QhEKD193aW5kb3dfbWludXRlc0IUChJfcmVzZXRfZGVzY3JpcHRpb25CEAoOX21ldGVyX3Zpc2libGUivQEKG1Rva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0bxIcCg9hdmFpbGFibGVfY291bnQYASABKAVIAIgBARI3ChNuZXh0X2V4cGlyZXNfYXRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9leHBpcmF0aW9uc191dGMYAyADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhIKEF9hdmFpbGFibGVfY291bnQizwEKFlRva2VuTW9uaXRvclBlcmlvZHNEdG8SOgoFdG9kYXkYASABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SOgoFbW9udGgYAiABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SPQoIYWxsX3RpbWUYAyABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8iigQKFVRva2VuTW9uaXRvclBlcmlvZER0bxIUCgx0b3RhbF90b2tlbnMYASABKAMSEAoIY29zdF91c2QYAiABKAESHgoRY2FjaGVfcmVhZF90b2tlbnMYAyABKANIAIgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYBCABKANIAYgBARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSAKIAQESGQoMdGltZWRfdG9rZW5zGAYgASgDSAOIAQESIAoTdGltZWRfb3V0cHV0X3Rva2VucxgHIAEoA0gEiAEBEh4KEXRpbWVkX2R1cmF0aW9uX21zGAggASgDSAWIAQESTQoMY2FwYWJpbGl0aWVzGAkgASgLMjcuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEkIKB2NsaWVudHMYCiADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RDbGllbnREdG9CFAoSX2NhY2hlX3JlYWRfdG9rZW5zQhUKE19jYWNoZV93cml0ZV90b2tlbnNCEAoOX291dHB1dF90b2tlbnNCDwoNX3RpbWVkX3Rva2Vuc0IWChRfdGltZWRfb3V0cHV0X3Rva2Vuc0IUChJfdGltZWRfZHVyYXRpb25fbXMifwohVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEh0KEHRva2VuX2NvbXBvbmVudHMYASABKAhIAIgBARIXCgp0aHJvdWdocHV0GAIgASgISAGIAQFCEwoRX3Rva2VuX2NvbXBvbmVudHNCDQoLX3Rocm91Z2hwdXQiTwobVG9rZW5Nb25pdG9yUGVyaW9kQ2xpZW50RHRvEg4KBmNsaWVudBgBIAEoCRIOCgZ0b2tlbnMYAiABKAMSEAoIY29zdF91c2QYAyABKAEi2AIKElRva2VuVGhyb3VnaHB1dER0bxIfChdpbnB1dF90b2tlbnNfcGVyX21pbnV0ZRgBIAEoBRIgChhvdXRwdXRfdG9rZW5zX3Blcl9taW51dGUYAiABKAUSGgoSdG90YWxfaW5wdXRfdG9rZW5zGAMgASgDEhsKE3RvdGFsX291dHB1dF90b2tlbnMYBCABKAMSMAoMbGFzdF91cGRhdGVkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCh9yZWd1bGFyX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAYgASgFEiUKHWNhY2hlX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAcgASgFEiIKGnRvdGFsX3JlZ3VsYXJfaW5wdXRfdG9rZW5zGAggASgDEiAKGHRvdGFsX2NhY2hlX2lucHV0X3Rva2VucxgJIAEoAyKvAQoXVG9rZW5UaHJvdWdocHV0U25hcHNob3QSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxpbnB1dF90b2tlbnMYAiABKAUSFQoNb3V0cHV0X3Rva2VucxgDIAEoBRIcChRyZWd1bGFyX2lucHV0X3Rva2VucxgEIAEoBRIaChJjYWNoZV9pbnB1dF90b2tlbnMYBSABKAUi4AEKLEhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvEhUKDWNhbm9uaWNhbF9rZXkYASABKAkSEAoIbmFtZV9rZXkYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSMwoPdW5sb2NrZWRfYXRfdXRjGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5wcm9ncmVzc19hZnRlchgFIAEoBRIOCgZ0YXJnZXQYBiABKAUSFQoNcmV3YXJkX2Ftb3VudBgHIAEoAyK7AQopSGVyb0JhdHRsZVJlcG9ydFBlbmRpbmdBY2hpZXZlbWVudEhpbnREdG8SFQoNY2Fub25pY2FsX2tleRgBIAEoCRIQCghuYW1lX2tleRgCIAEoCRIRCglnb2FsX3R5cGUYAyABKAkSEAoIcHJvZ3Jlc3MYBCABKAUSDgoGdGFyZ2V0GAUgASgFEhcKD3JlbWFpbmluZ19jb3VudBgGIAEoBRIXCg9jb21wbGV0aW9uX3JhdGUYByABKAEivQIKJUhlcm9CYXR0bGVSZXBvcnRBY2hpZXZlbWVudFN1bW1hcnlEdG8SGAoQaGFzX2FyY2hpdmVfZGF0YRgBIAEoCBIXCg9jb21wbGV0ZWRfY291bnQYAiABKAUSEwoLdG90YWxfY291bnQYAyABKAUSFwoPY29tcGxldGlvbl9yYXRlGAQgASgBElsKD2xhdGVzdF91bmxvY2tlZBgFIAEoCzJCLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvElYKDXBlbmRpbmdfaGludHMYBiADKAsyPy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UGVuZGluZ0FjaGlldmVtZW50SGludER0byL0AgojSGVyb0JhdHRsZVJlcG9ydEhpZ2hsaWdodFNlc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRISCgV0aXRsZRgCIAEoCUgAiAEBEhkKDHNlc3Npb25fY29kZRgDIAEoCUgBiAEBEhkKDHNlc3Npb25fdHlwZRgEIAEoCUgCiAEBEhoKDXByb3Bvc2FsX25hbWUYBSABKAlIA4gBARIWCg5hY3Rpdml0eV9jb3VudBgGIAEoBRIiChpjb21wbGV0ZWRfYXNzaXN0YW5jZV9jb3VudBgHIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgIIAEoBRI4ChRsYXN0X2FjdGl2aXR5X2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX3RpdGxlQg8KDV9zZXNzaW9uX2NvZGVCDwoNX3Nlc3Npb25fdHlwZUIQCg5fcHJvcG9zYWxfbmFtZSKnAwoiSGVyb0JhdHRsZVJlcG9ydEFjdGl2aXR5U3VtbWFyeUR0bxIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYASABKAUSIgoaY2hhdF9zZXNzaW9uX2NyZWF0ZWRfY291bnQYAiABKAUSJgoecHJvcG9zYWxfc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgFEhYKDnByb3Bvc2FsX2NvdW50GAQgASgFEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgFIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgGIAEoBRIfChdwcm9wb3NhbF9hcmNoaXZlZF9jb3VudBgHIAEoBRIiChphc3Npc3RhbmNlX2NvbXBsZXRlZF9jb3VudBgIIAEoBRIfChdhc3Npc3RhbmNlX2ZhaWxlZF9jb3VudBgJIAEoBRJVChJoaWdobGlnaHRfc2Vzc2lvbnMYCiADKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGlnaGxpZ2h0U2Vzc2lvbkR0byJGCiNIZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxIQCghwcmV2aW91cxgBIAEoAxINCgVkZWx0YRgCIAEoAyK8BQodSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25EdG8SGAoQaGFzX3ByZXZpb3VzX2RheRgBIAEoCBIaCg1wcmV2aW91c19kYXRlGAIgASgJSACIAQESVAoRYWN0aXZlX2hlcm9fY291bnQYAyABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg9leGVjdXRpb25fY291bnQYBCABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg90b29sX2NhbGxfY291bnQYBSABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJPCgx0b3RhbF90b2tlbnMYBiABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJYChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYByABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJRCg5wcm9wb3NhbF9jb3VudBgIIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvElcKFGhhZ2lwb3dlcl9uZXRfY2hhbmdlGAkgASgLMjkuaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25NZXRyaWNEdG9CEAoOX3ByZXZpb3VzX2RhdGUixgEKG0hlcm9CYXR0bGVSZXBvcnRFeGVjdXRvckR0bxIVCg1leGVjdXRvcl90eXBlGAEgASgJEhIKCmhlcm9fY291bnQYAiABKAUSGQoRYWN0aXZlX2hlcm9fY291bnQYAyABKAUSFwoPZXhlY3V0aW9uX2NvdW50GAQgASgFEhcKD3Rvb2xfY2FsbF9jb3VudBgFIAEoBRIUCgx0b3RhbF90b2tlbnMYBiABKAMSGQoRdG90YWxfZHVyYXRpb25fbXMYByABKAMiuAEKIUhlcm9CYXR0bGVSZXBvcnRIYWdpcG93ZXJQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItwDChxIZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEjMKD3JhbmdlX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoNcmFuZ2VfZW5kX3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoOYnVja2V0X21pbnV0ZXMYAyABKAUSFwoPaGFzX2ZpbGxlZF9nYXBzGAQgASgIEhwKFGhhc19yZWNvcmRlZF9oaXN0b3J5GAUgASgIEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYBiABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAcgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgIIAEoAxISCgpuZXRfY2hhbmdlGAkgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEk4KDXB1YmxpY19zZXJpZXMYCyADKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyUG9pbnREdG8iiQQKF0hlcm9CYXR0bGVSZXBvcnRIZXJvRHRvEg8KB2hlcm9faWQYASABKAkSEQoJaGVyb19uYW1lGAIgASgJEhYKCWhlcm9faWNvbhgDIAEoCUgAiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBCABKAkSEgoFbW9kZWwYBSABKAlIAYgBARIYCgtkZXNjcmlwdGlvbhgGIAEoCUgCiAEBEgwKBHJhbmsYByABKAUSDgoGc3RhdHVzGAggASgJEg0KBWdyYWRlGAkgASgJEhQKDGJhdHRsZV9zY29yZRgKIAEoBRIXCg9leGVjdXRpb25fY291bnQYCyABKAUSFwoPdG9vbF9jYWxsX2NvdW50GAwgASgFEhQKDGlucHV0X3Rva2VucxgNIAEoAxIaChJjYWNoZV9pbnB1dF90b2tlbnMYDiABKAMSFQoNb3V0cHV0X3Rva2VucxgPIAEoAxIbChNjYWNoZV9vdXRwdXRfdG9rZW5zGBAgASgDEhQKDHRvdGFsX3Rva2VucxgRIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgSIAEoAxI5ChVsYXN0X2NvbXBsZXRlZF9hdF91dGMYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsQg4KDF9kZXNjcmlwdGlvbiKAAgoiSGVyb0JhdHRsZVJlcG9ydFByb2plY3RBY3Rpdml0eUR0bxISCgpwcm9qZWN0X2lkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIWCg5hY3Rpdml0eV9jb3VudBgDIAEoBRIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYBCABKAUSFgoOcHJvcG9zYWxfY291bnQYBSABKAUSIgoaYXNzaXN0YW5jZV9jb21wbGV0ZWRfY291bnQYBiABKAUSHwoXYXNzaXN0YW5jZV9mYWlsZWRfY291bnQYByABKAUSFgoOYWN0aXZpdHlfc2hhcmUYCCABKAFCBwoFX25hbWUi+gEKIUhlcm9CYXR0bGVSZXBvcnRQcm9qZWN0UHJvZmlsZUR0bxIQCghoYXNfZGF0YRgBIAEoCBIdChVwcm9qZWN0X2NyZWF0ZWRfY291bnQYAiABKAMSHQoVc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgDEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgEIAEoAxIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgFIAEoAxITCgt0b2tlbl90b3RhbBgGIAEoAxItCglhc19vZl91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIo0CChtIZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SGwoTdG90YWxfcHJvamVjdF9jb3VudBgBIAEoBRIcChRhY3RpdmVfcHJvamVjdF9jb3VudBgCIAEoBRIZChFuZXdfcHJvamVjdF9jb3VudBgDIAEoBRJOCgx0b3BfcHJvamVjdHMYBCADKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdEFjdGl2aXR5RHRvEkgKB3Byb2ZpbGUYBSABKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdFByb2ZpbGVEdG8irQIKFkhlcm9CYXR0bGVSZXBvcnRNdnBEdG8SDwoHaGVyb19pZBgBIAEoCRIRCgloZXJvX25hbWUYAiABKAkSFgoJaGVyb19pY29uGAMgASgJSACIAQESFQoNZXhlY3V0b3JfdHlwZRgEIAEoCRISCgVtb2RlbBgFIAEoCUgBiAEBEgwKBHJhbmsYBiABKAUSFAoMYmF0dGxlX3Njb3JlGAcgASgFEg0KBWdyYWRlGAggASgJEhcKD2V4ZWN1dGlvbl9jb3VudBgJIAEoBRIXCg90b29sX2NhbGxfY291bnQYCiABKAUSFAoMdG90YWxfdG9rZW5zGAsgASgDEhkKEXRvdGFsX2R1cmF0aW9uX21zGAwgASgDQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsItkCChpIZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxIYChB0b3RhbF9oZXJvX2NvdW50GAEgASgFEhkKEWFjdGl2ZV9oZXJvX2NvdW50GAIgASgFEhoKEnRvdGFsX2JhdHRsZV9zY29yZRgDIAEoBRIYChB0b3RhbF90b29sX2NhbGxzGAQgASgFEhQKDHRvdGFsX3Rva2VucxgFIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgGIAEoAxIUCgxpbnB1dF90b2tlbnMYByABKAMSGgoSY2FjaGVfaW5wdXRfdG9rZW5zGAggASgDEhUKDW91dHB1dF90b2tlbnMYCSABKAMSGwoTY2FjaGVfb3V0cHV0X3Rva2VucxgKIAEoAxI5CgNtdnAYCyABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0TXZwRHRvIqYGChNIZXJvQmF0dGxlUmVwb3J0RHRvEhMKC3JlcG9ydF9kYXRlGAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHRpbWVfem9uZV9pZBgDIAEoCRI1ChFjb3ZlcmVkX3N0YXJ0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoPY292ZXJlZF9lbmRfdXRjGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJFCgloYWdpcG93ZXIYBiABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEkEKB3N1bW1hcnkYByABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxJRCgxhY2hpZXZlbWVudHMYCCABKAsyOy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWNoaWV2ZW1lbnRTdW1tYXJ5RHRvElIKEGFjdGl2aXR5X3N1bW1hcnkYCSABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWN0aXZpdHlTdW1tYXJ5RHRvEkcKCmNvbXBhcmlzb24YCiABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbkR0bxJECglleGVjdXRvcnMYCyADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RXhlY3V0b3JEdG8SQwoIcHJvamVjdHMYDCABKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SPQoGaGVyb2VzGA0gAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydEhlcm9EdG8itQEKHkhhZ2lwb3dlclB1YmxpY0hpc3RvcnlQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItcBCh5IYWdpcG93ZXJTdGF0aXN0aWNzTWV0YWRhdGFEdG8SMwoPcmFuZ2Vfc3RhcnRfdXRjGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1yYW5nZV9lbmRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5idWNrZXRfbWludXRlcxgDIAEoBRIXCg9oYXNfZmlsbGVkX2dhcHMYBCABKAgSHAoUaGFzX3JlY29yZGVkX2hpc3RvcnkYBSABKAgi1gEKHUhhZ2lwb3dlclN0YXRpc3RpY3NTdW1tYXJ5RHRvEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYASABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAIgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgDIAEoAxISCgpuZXRfY2hhbmdlGAQgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIogCChxIYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvEg0KBXJhbmdlGAEgASgJEkYKCG1ldGFkYXRhGAIgASgLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyU3RhdGlzdGljc01ldGFkYXRhRHRvEkQKB3N1bW1hcnkYAyABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzU3VtbWFyeUR0bxJLCg1wdWJsaWNfc2VyaWVzGAQgAygLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyUHVibGljSGlzdG9yeVBvaW50RHRvIrsDChpIaXN0b3JpY2FsVGltZWxpbmVFdmVudER0bxIQCghldmVudF9pZBgBIAEoCRIzCg9vY2N1cnJlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDmNyZWF0ZWRfYXRfdXRjGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtlbnRpdHlfdHlwZRgEIAEoCRIRCgllbnRpdHlfaWQYBSABKAkSFwoKcHJvamVjdF9pZBgGIAEoCUgAiAEBEhcKCnNlc3Npb25faWQYByABKAlIAYgBARIMCgRjb2RlGAggASgJEigKCG1ldGFkYXRhGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhMKBnNvdXJjZRgKIAEoCUgCiAEBEhUKCGFjdG9yX2lkGAsgASgJSAOIAQESGwoOY29ycmVsYXRpb25faWQYDCABKAlIBIgBAUINCgtfcHJvamVjdF9pZEINCgtfc2Vzc2lvbl9pZEIJCgdfc291cmNlQgsKCV9hY3Rvcl9pZEIRCg9fY29ycmVsYXRpb25faWQiiAEKH0hpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8SEQoJcGFnZV9zaXplGAEgASgFEhYKDnJldHVybmVkX2NvdW50GAIgASgFEhAKCGhhc19tb3JlGAMgASgIEhgKC25leHRfY3Vyc29yGAQgASgJSACIAQFCDgoMX25leHRfY3Vyc29yIrABCiJIaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvEj8KBWl0ZW1zGAEgAygLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnREdG8SSQoKcGFnaW5hdGlvbhgCIAEoCzI1LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8imwMKIEhpc3RvcmljYWxUaW1lbGluZUV2ZW50U2FtcGxlRHRvEhMKC2VudGl0eV90eXBlGAEgASgJEgwKBGNvZGUYAiABKAkSGAoQc2FtcGxlX2VudGl0eV9pZBgDIAEoCRIeChFzYW1wbGVfcHJvamVjdF9pZBgEIAEoCUgAiAEBEh4KEXNhbXBsZV9zZXNzaW9uX2lkGAUgASgJSAGIAQESGgoNc2FtcGxlX3NvdXJjZRgGIAEoCUgCiAEBEhwKD3NhbXBsZV9hY3Rvcl9pZBgHIAEoCUgDiAEBEiIKFXNhbXBsZV9jb3JyZWxhdGlvbl9pZBgIIAEoCUgEiAEBEjAKEG1ldGFkYXRhX2V4YW1wbGUYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCFAoSX3NhbXBsZV9wcm9qZWN0X2lkQhQKEl9zYW1wbGVfc2Vzc2lvbl9pZEIQCg5fc2FtcGxlX3NvdXJjZUISChBfc2FtcGxlX2FjdG9yX2lkQhgKFl9zYW1wbGVfY29ycmVsYXRpb25faWQibQokSGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1Jlc3BvbnNlRHRvEkUKBWl0ZW1zGAEgAygLMjYuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnRTYW1wbGVEdG8y7QoKEVN0YXRpc3RpY3NTZXJ2aWNlEnQKEUdldEFnZ3JlZ2F0ZWREYXRhEi4uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXF1ZXN0Gi8uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXNwb25zZRJ9ChRHZXRUb2tlbk1vbml0b3JVc2FnZRIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVxdWVzdBoyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USgwEKFkdldFRva2VuTW9uaXRvckhpc3RvcnkSMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIaXN0b3J5UmVxdWVzdBo0LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRKPAQoaR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2USNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlcXVlc3QaOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEpUBChxHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5UaHJvdWdocHV0U3RhdGlzdGljc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USjAEKGUdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnkSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXNwb25zZRJ6ChNHZXRIZXJvQmF0dGxlUmVwb3J0EjAuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QaMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIZXJvQmF0dGxlUmVwb3J0UmVzcG9uc2USjAEKGUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnQSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIYWdpcG93ZXJIaXN0b3J5UmVwb3J0UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRKAAQoVR2V0SGlzdG9yaWNhbFRpbWVsaW5lEjIuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lUmVxdWVzdBozLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhpc3RvcmljYWxUaW1lbGluZVJlc3BvbnNlEpUBChxHZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VCKqoCJ1BDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5QbGF0Zm9ybS5WMWIGcHJvdG8z",[Ue,Ne,Mi]),wh=v(Ws,1),kh=We(Ws,0),de=oe("CiJoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25zLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIlUKFk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QSOwoEYm9keRgBIAEoCzItLmhhZ2ljb2RlLnNlc3Npb24udjEuQ3JlYXRlQ2hhdFNlc3Npb25SZXF1ZXN0IlIKF09wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIk0KEk9wZW5TZXNzaW9uUmVxdWVzdBI3CgRib2R5GAEgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdCJOChNPcGVuU2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIicKEUdldFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiTQoSR2V0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvImEKElNhdmVTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjcKBGJvZHkYAiABKAsyKS5oYWdpY29kZS5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25SZXF1ZXN0Ik4KE1NhdmVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8izAEKE0xpc3RTZXNzaW9uc1JlcXVlc3QSEQoEdHlwZRgBIAEoCUgAiAEBEhgKC2FjdGl2ZV9vbmx5GAIgASgISAGIAQESHQoQaW5jbHVkZV9hcmNoaXZlZBgDIAEoCEgCiAEBEhcKCnByb2plY3RfaWQYBCABKAlIA4gBARITCgtwcm9qZWN0X2lkcxgFIAMoCUIHCgVfdHlwZUIOCgxfYWN0aXZlX29ubHlCEwoRX2luY2x1ZGVfYXJjaGl2ZWRCDQoLX3Byb2plY3RfaWQiUwoUTGlzdFNlc3Npb25zUmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTGlzdFJlc3BvbnNlRHRvIkAKFERlbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSFAoMZGVsZXRlX2ZpbGVzGAIgASgIIlYKFURlbGV0ZVNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIvChlBcmNoaXZlQ2hhdFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWwoaQXJjaGl2ZUNoYXRTZXNzaW9uUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5TaW1wbGVNZXNzYWdlUmVzcG9uc2VEdG8idAoZU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEkMKBGJvZHkYAiABKAsyNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0IlUKGlN3aXRjaFN0b3BwZWRBZ2VudFJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIl4KG1N0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBI/CgRib2R5GAEgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVIYWdpVGFza1Nlc3Npb25SZXF1ZXN0IlcKHFN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iZAohU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXF1ZXN0Ej8KBGJvZHkYASABKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkNyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QiXQoiU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byLOAwoSQ2hhdEhlcm9TdW1tYXJ5RHRvEg8KB2hlcm9faWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhEKBGljb24YBCABKAlIAYgBARIVCg1leGVjdXRvcl90eXBlGAUgASgJEhkKDGFnZW50X2NsaV9pZBgGIAEoCUgCiAEBEhsKDmFnZW50X2NsaV9uYW1lGAcgASgJSAOIAQESGwoOYWdlbnRfY2xpX2ljb24YCCABKAlIBIgBARIVCghtb2RlbF9pZBgJIAEoCUgFiAEBEhcKCm1vZGVsX25hbWUYCiABKAlIBogBARIXCgptb2RlbF9pY29uGAsgASgJSAeIAQESIgoVc2Vjb25kYXJ5X21vZGVsX2xhYmVsGAwgASgJSAiIAQFCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQg8KDV9hZ2VudF9jbGlfaWRCEQoPX2FnZW50X2NsaV9uYW1lQhEKD19hZ2VudF9jbGlfaWNvbkILCglfbW9kZWxfaWRCDQoLX21vZGVsX25hbWVCDQoLX21vZGVsX2ljb25CGAoWX3NlY29uZGFyeV9tb2RlbF9sYWJlbCI4ChRPcGVuU3BlY1Rhc2tQcm9ncmVzcxIRCgljb21wbGV0ZWQYASABKAUSDQoFdG90YWwYAiABKAUi/gEKEE9wZW5TcGVjRmlsZUluZm8SEQoJZmlsZV9uYW1lGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhEKCWZpbGVfdHlwZRgEIAEoCRITCgtpc19yZXF1aXJlZBgFIAEoCBITCgtpc19hcmNoaXZlZBgGIAEoCBIxCg1hcmNoaXZlZF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJACg10YXNrX3Byb2dyZXNzGAggASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY1Rhc2tQcm9ncmVzcyJcChFPcGVuU3BlY0ZpbGVzSW5mbxIRCgliYXNlX3BhdGgYASABKAkSNAoFZmlsZXMYAiADKAsyJS5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TcGVjRmlsZUluZm8i3gIKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCBIWCglzY2hlZHVsZWQYByABKAhIAYgBARIuCgpkdWVfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIhChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgJIAEoCUgCiAEBQhcKFV9leGVjdXRpb25fbWVzc2FnZV9pZEIMCgpfc2NoZWR1bGVkQhcKFV9zY2hlZHVsZWRfbWVzc2FnZV9pZCKAAQoWU2Vzc2lvbk5vdGlmaWNhdGlvbkR0bxIMCgRraW5kGAEgASgJEi8KC29ic2VydmVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCgdwYXlsb2FkGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIu0BChZTZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhoKDXByb21wdF90b2tlbnMYASABKAVIAIgBARIhChRjYWNoZWRfcHJvbXB0X3Rva2VucxgCIAEoBUgBiAEBEh4KEWNvbXBsZXRpb25fdG9rZW5zGAMgASgFSAKIAQESMwoPbGFzdF91cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIQCg5fcHJvbXB0X3Rva2Vuc0IXChVfY2FjaGVkX3Byb21wdF90b2tlbnNCFAoSX2NvbXBsZXRpb25fdG9rZW5zIl8KFFN0YWdlRXhlY3V0b3JJbmZvRHRvEhUKDXByb3ZpZGVyX3R5cGUYASABKAkSMAoMbGFzdF91cGRhdGVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK8AgoVU3RhZ2VIZXJvU2VsZWN0aW9uRHRvEhEKCXN0YWdlX2tleRgBIAEoCRISCgpzY3JpcHRfa2V5GAIgASgJEhUKDXNjZW5hcmlvX25hbWUYAyABKAkSFAoHaGVyb19pZBgEIAEoCUgAiAEBEhYKCWhlcm9fbmFtZRgFIAEoCUgBiAEBEhYKCWhlcm9faWNvbhgGIAEoCUgCiAEBEhUKDWV4ZWN1dG9yX3R5cGUYByABKAkSFQoNdXNlZF9mYWxsYmFjaxgIIAEoCBIYChBzZWxlY3Rpb25fc291cmNlGAkgASgJEi8KC3NlbGVjdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfaGVyb19pZEIMCgpfaGVyb19uYW1lQgwKCl9oZXJvX2ljb24i9QwKElNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESHAoPY2hpZWZfY29tcGxhaW50GAQgASgJSAGIAQESDAoEY29kZRgFIAEoBRIMCgR0eXBlGAYgASgJEg4KBnN0YXR1cxgHIAEoCRIRCglpc19hY3RpdmUYCCABKAgSMgoObGFzdF9hY3RpdmVfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnByb2plY3RfaWQYCiABKAkSFAoMcHJvamVjdF9uYW1lGAsgASgJEhQKDHByb2plY3RfcGF0aBgMIAEoCRIaCg1wcm9wb3NhbF9uYW1lGA0gASgJSAKIAQESPwoPb3Blbl9zcGVjX2ZpbGVzGA4gASgLMiYuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSQwoOcXVldWVfbWVzc2FnZXMYECADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SHgoRd29ya2luZ19kaXJlY3RvcnkYESABKAlIA4gBARIVCghtZXRhZGF0YRgSIAEoCUgEiAEBEh8KEmNoYXRfZXhlY3V0b3JfdHlwZRgTIAEoCUgFiAEBEjoKCWNoYXRfaGVybxgUIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2hhdEhlcm9TdW1tYXJ5RHRvElkKEnN0YWdlX2V4ZWN1dG9yX21hcBgVIAMoCzI9LmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJkChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyQi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5TdGFnZUhlcm9TZWxlY3Rpb25NYXBFbnRyeRIgChNydW50aW1lX21vZGVsX2xhYmVsGBcgASgJSAaIAQESOQoVcHJvY2Vzc2luZ19zdGFydGVkX2F0GBggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJCCg1zZXNzaW9uX3VzYWdlGBkgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhwKD3ByZXZpb3VzX3N0YXR1cxgaIAEoCUgHiAEBEkIKDW5vdGlmaWNhdGlvbnMYGyADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8SRwoSc2NoZWR1bGVkX21lc3NhZ2VzGBwgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvElAKDXVzZXJfbWV0YWRhdGEYHSADKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5Vc2VyTWV0YWRhdGFFbnRyeRpiChVTdGFnZUV4ZWN1dG9yTWFwRW50cnkSCwoDa2V5GAEgASgJEjgKBXZhbHVlGAIgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaaAoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjkKBXZhbHVlGAIgASgLMiouaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUhlcm9TZWxlY3Rpb25EdG86AjgBGjMKEVVzZXJNZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMi+QEKGENyZWF0ZUNoYXRTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhgKEGlzX2RlZmF1bHRfdGl0bGUYAyABKAgSFAoHaGVyb19pZBgEIAEoCUgAiAEBEk0KCG1ldGFkYXRhGAUgAygLMjsuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVDaGF0U2Vzc2lvblJlcXVlc3QuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCgoIX2hlcm9faWQivgIKEFBhdGhSZWZlcmVuY2VEdG8SCgoCaWQYASABKAkSDgoGc291cmNlGAIgASgJEhUKDWRpc3BsYXlfdmFsdWUYAyABKAkSFQoNcGh5c2ljYWxfcGF0aBgEIAEoCRINCgVzdGFydBgFIAEoBRILCgNlbmQYBiABKAUSFgoJZW50aXR5X2lkGAcgASgJSACIAQESFwoKcHJvamVjdF9pZBgIIAEoCUgBiAEBEkUKCG1ldGFkYXRhGAkgAygLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9lbnRpdHlfaWRCDQoLX3Byb2plY3RfaWQi+wEKGVNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIQCghpbWFnZV9pZBgCIAEoCRIWCg5oYWdpX2ltYWdlX3VybBgDIAEoCRIYCgtwcmV2aWV3X3VybBgEIAEoCUgAiAEBEhYKCWZpbGVfbmFtZRgFIAEoCUgBiAEBEhkKDGNvbnRlbnRfdHlwZRgGIAEoCUgCiAEBEhYKCWZpbGVfc2l6ZRgHIAEoA0gDiAEBQg4KDF9wcmV2aWV3X3VybEIMCgpfZmlsZV9uYW1lQg8KDV9jb250ZW50X3R5cGVCDAoKX2ZpbGVfc2l6ZSJ+ChlUYXJnZXRQcm9qZWN0UmVmZXJlbmNlRHRvEhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhgKC2FjY2Vzc190eXBlGAQgASgJSACIAQFCDgoMX2FjY2Vzc190eXBlIocBChNUYXJnZXRSZXBvc2l0b3J5RHRvEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIZCgxkaXNwbGF5X25hbWUYAyABKAlIAIgBARIYCgthY2Nlc3NfdHlwZRgEIAEoCUgBiAEBQg8KDV9kaXNwbGF5X25hbWVCDgoMX2FjY2Vzc190eXBlIj0KGFRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxIMCgRtb2RlGAEgASgJEhMKC2FjY2Vzc190eXBlGAIgASgJIpEGChRDcmVhdGVTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRIcCg9jaGllZl9jb21wbGFpbnQYAiABKAlIAIgBARIlChhvcmlnaW5hbF9jaGllZl9jb21wbGFpbnQYAyABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAQgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhEKBHR5cGUYBSABKAlIAogBARISCgpwcm9qZWN0X2lkGAYgASgJEkUKE3RhcmdldF9yZXBvc2l0b3JpZXMYByADKAsyKC5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlEdG8STgoXdGFyZ2V0X3JlcG9zaXRvcnlfc2NvcGUYCCABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxJHCg90YXJnZXRfcHJvamVjdHMYCSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAogAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEhgKEGlzX2RlZmF1bHRfdGl0bGUYCyABKAgSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgMIAEoCUgDiAEBEkkKCG1ldGFkYXRhGA0gAygLMjcuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUISChBfY2hpZWZfY29tcGxhaW50QhsKGV9vcmlnaW5hbF9jaGllZl9jb21wbGFpbnRCBwoFX3R5cGVCHAoaX3Byb3Bvc2FsX2NvbnRlbnRfbGFuZ3VhZ2UikwEKFFVwZGF0ZVNlc3Npb25SZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESEwoGc3RhdHVzGAMgASgJSAGIAQESFQoIbWV0YWRhdGEYBCABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCQoHX3N0YXR1c0ILCglfbWV0YWRhdGEiUwoWU2Vzc2lvbkxpc3RSZXNwb25zZUR0bxI5CghzZXNzaW9ucxgBIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIisKGFNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJIjMKIFN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0Eg8KB2hlcm9faWQYASABKAki6wgKHENyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QSDQoFdGl0bGUYASABKAkSGAoQaXNfZGVmYXVsdF90aXRsZRgCIAEoCBISCgpwcm9qZWN0X2lkGAMgASgJEhYKCXByb21wdF9pZBgEIAEoCUgAiAEBEhQKB21lc3NhZ2UYBSABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAYgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhwKD3JlcG9zaXRvcnlfcGF0aBgHIAEoCUgCiAEBEhgKC3RhcmdldF90eXBlGAggASgJSAOIAQESFQoIdmF1bHRfaWQYCSABKAlIBIgBARIcCg9vdXRwdXRfdmF1bHRfaWQYCiABKAlIBYgBARIbChNyZWZlcmVuY2VfdmF1bHRfaWRzGAsgAygJEhoKEmVkaXRhYmxlX3ZhdWx0X2lkcxgMIAMoCRJHCg90YXJnZXRfcHJvamVjdHMYDSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SHwoScmVzZWFyY2hfZGlyZWN0aW9uGA4gASgJSAaIAQESGwoOcHJlc2V0X3Rhc2tfaWQYDyABKAlIB4gBARIfChJwcmVzZXRfdGFza19sb2NhbGUYECABKAlICIgBARIxChFwcmVzZXRfdGFza19pbnB1dBgRIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIXCg9yZXBvc2l0b3J5X3VybHMYEiADKAkSEwoLcHJvamVjdF9pZHMYEyADKAkSEQoJbmVlZF9wdXNoGBQgASgIEiQKF3B1bGxfcmViYXNlX2JlZm9yZV9wdXNoGBUgASgISAmIAQESHwoSdGFyZ2V0X2JyYW5jaF9tb2RlGBYgASgJSAqIAQESHwoSdGFyZ2V0X2JyYW5jaF9uYW1lGBcgASgJSAuIAQESFwoKc2NyaXB0X2tleRgYIAEoCUgMiAEBEhQKB2hlcm9faWQYGSABKAlIDYgBARIgChNoZXJvX3NlbGVjdGlvbl9tb2RlGBogASgJSA6IAQFCDAoKX3Byb21wdF9pZEIKCghfbWVzc2FnZUISChBfcmVwb3NpdG9yeV9wYXRoQg4KDF90YXJnZXRfdHlwZUILCglfdmF1bHRfaWRCEgoQX291dHB1dF92YXVsdF9pZEIVChNfcmVzZWFyY2hfZGlyZWN0aW9uQhEKD19wcmVzZXRfdGFza19pZEIVChNfcHJlc2V0X3Rhc2tfbG9jYWxlQhoKGF9wdWxsX3JlYmFzZV9iZWZvcmVfcHVzaEIVChNfdGFyZ2V0X2JyYW5jaF9tb2RlQhUKE190YXJnZXRfYnJhbmNoX25hbWVCDQoLX3NjcmlwdF9rZXlCCgoIX2hlcm9faWRCFgoUX2hlcm9fc2VsZWN0aW9uX21vZGUy6ggKD1Nlc3Npb25zU2VydmljZRJsCg9PcGVuQ2hhdFNlc3Npb24SKy5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QaLC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEmAKC09wZW5TZXNzaW9uEicuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU2Vzc2lvblJlcXVlc3QaKC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TZXNzaW9uUmVzcG9uc2USXQoKR2V0U2Vzc2lvbhImLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblJlcXVlc3QaJy5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25SZXNwb25zZRJgCgtTYXZlU2Vzc2lvbhInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2F2ZVNlc3Npb25SZXF1ZXN0GiguaGFnaWNvZGUuc2Vzc2lvbi52MS5TYXZlU2Vzc2lvblJlc3BvbnNlEmMKDExpc3RTZXNzaW9ucxIoLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVzcG9uc2USZgoNRGVsZXRlU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuRGVsZXRlU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkRlbGV0ZVNlc3Npb25SZXNwb25zZRJ1ChJBcmNoaXZlQ2hhdFNlc3Npb24SLi5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlc3BvbnNlEnUKElN3aXRjaFN0b3BwZWRBZ2VudBIuLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVzcG9uc2USewoUU3RhcnRIYWdpVGFza1Nlc3Npb24SMC5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBoxLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRIYWdpVGFza1Nlc3Npb25SZXNwb25zZRKNAQoaU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb24SNi5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0TGVnYWN5SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlNlc3Npb24uVjFiBnByb3RvMw",[Ue,Ne]),Uh=v(de,1),Jh=v(de,3),xh=v(de,5),Kh=v(de,7),zh=v(de,9),Lh=v(de,11),jh=v(de,13),Hh=v(de,17),Th=v(de,30),Qh=v(de,36),Mh=v(de,37),Oh=v(de,41),Dh=We(de,0),Qe=oe("CitoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fbWVzc2FnaW5nLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIr0BChlHZXRTZXNzaW9uTWVzc2FnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEQoEcGFnZRgCIAEoBUgAiAEBEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgBiAEBEhoKDWhpc3Rvcnlfc2NvcGUYBCABKAlIAogBARISCgVvcmRlchgFIAEoCUgDiAEBQgcKBV9wYWdlQgwKCl9wYWdlX3NpemVCEAoOX2hpc3Rvcnlfc2NvcGVCCAoGX29yZGVyIlkKGkdldFNlc3Npb25NZXNzYWdlc1Jlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUxpc3RSZXNwb25zZUR0byIqChRDYW5jZWxTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlYKFUNhbmNlbFNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZUR0byI3CiFHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJeCiJHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1Jlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvY2Vzc2luZ1N0YXR1c0R0byJGChtDYW5jZWxQZW5kaW5nTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBSJcChxDYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VEdG8iUQodQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgCIAEoCSJgCh5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvImQKE1N0ZWVyU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI5CgRib2R5GAIgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uU3RlZXJSZXF1ZXN0RHRvIlQKFFN0ZWVyU2Vzc2lvblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8ihQEKGVN0ZWVyUXVldWVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBRI/CgRib2R5GAMgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZWRNZXNzYWdlU3RlZXJSZXF1ZXN0RHRvImAKGlN0ZWVyUXVldWVkTWVzc2FnZVJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnNlc3Npb24udjEuUXVldWVkTWVzc2FnZVN0ZWVyUmVzcG9uc2VEdG8iZgoZUG9zdFNlc3Npb25NZXNzYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjUKBGJvZHkYAiABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVxdWVzdCJZChpQb3N0U2Vzc2lvbk1lc3NhZ2VSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVzcG9uc2VEdG8iYAoqR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEwoGbG9jYWxlGAIgASgJSACIAQFCCQoHX2xvY2FsZSJ/CitHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlElAKBnJlc3VsdBgBIAEoCzJALmhhZ2ljb2RlLnNlc3Npb24udjEuQ29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXNwb25zZUR0byJxCh9TdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSOgoEYm9keRgCIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8iaAogU3VibWl0U2Vzc2lvbkFubm90YXRpb25zUmVzcG9uc2USRAoGcmVzdWx0GAEgASgLMjQuaGFnaWNvZGUuc2Vzc2lvbi52MS5Bbm5vdGF0aW9uU3VibWlzc2lvblJlc3BvbnNlRHRvIvoBChZNZXNzYWdlSGVyb1NuYXBzaG90RHRvEhQKB2hlcm9faWQYASABKAlIAIgBARIWCgloZXJvX25hbWUYAiABKAlIAYgBARIWCgloZXJvX2ljb24YAyABKAlIAogBARIaCg1leGVjdXRvcl90eXBlGAQgASgJSAOIAQESEwoGc291cmNlGAUgASgJSASIAQESFgoJc3RhZ2Vfa2V5GAYgASgJSAWIAQFCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uQhAKDl9leGVjdXRvcl90eXBlQgkKB19zb3VyY2VCDAoKX3N0YWdlX2tleSJSChxNZXNzYWdlVXNlclF1ZXN0aW9uQW5zd2VyRHRvEhAKCHF1ZXN0aW9uGAEgASgJEg4KBnZhbHVlcxgCIAMoCRIQCghyZWplY3RlZBgDIAEoCCJCChxNZXNzYWdlVXNlclF1ZXN0aW9uT3B0aW9uRHRvEg0KBWxhYmVsGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIsgBChpNZXNzYWdlVXNlclF1ZXN0aW9uSXRlbUR0bxIQCghxdWVzdGlvbhgBIAEoCRIOCgZoZWFkZXIYAiABKAkSFAoMbXVsdGlfc2VsZWN0GAMgASgIEkIKB29wdGlvbnMYBCADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25PcHRpb25EdG8SGwoTYWxsb3dfY3VzdG9tX2Fuc3dlchgFIAEoCBIRCglpc19zZWNyZXQYBiABKAgiWgocTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0bxIZChFtYXhfYW5zd2VyX2xlbmd0aBgBIAEoBRIfChdtYXhfdmFsdWVzX3Blcl9xdWVzdGlvbhgCIAEoBSLYAgoWTWVzc2FnZVVzZXJRdWVzdGlvbkR0bxITCgtxdWVzdGlvbl9pZBgBIAEoCRITCgZydW5faWQYAiABKAlIAIgBARINCgVzdGF0ZRgDIAEoCRJCCglxdWVzdGlvbnMYBCADKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25JdGVtRHRvEkIKB2Fuc3dlcnMYBSADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25BbnN3ZXJEdG8SLwoLYW5zd2VyZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKBmxpbWl0cxgHIAEoCzIxLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0b0IJCgdfcnVuX2lkIo4EChJNZXNzYWdlUmVzcG9uc2VEdG8SCgoCaWQYASABKAkSEgoKc2Vzc2lvbl9pZBgCIAEoCRIMCgR0eXBlGAMgASgJEgwKBG1vZGUYBCABKAkSLQoJdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1jcmVhdGlvbl90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCg5jb250ZW50X2Jsb2NrcxgHIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRISCgVtb2RlbBgIIAEoCUgAiAEBEhUKCHByb3ZpZGVyGAkgASgJSAGIAQESQgoNaGVyb19zbmFwc2hvdBgKIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUhlcm9TbmFwc2hvdER0bxJCCg11c2VyX3F1ZXN0aW9uGAsgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlVXNlclF1ZXN0aW9uRHRvEhgKC3N0ZWVyX3N0YXRlGAwgASgJSAKIAQESHwoScGFyZW50X3Rvb2xfdXNlX2lkGA0gASgJSAOIAQFCCAoGX21vZGVsQgsKCV9wcm92aWRlckIOCgxfc3RlZXJfc3RhdGVCFQoTX3BhcmVudF90b29sX3VzZV9pZCKyAQoWTWVzc2FnZUxpc3RSZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHBhZ2UYAiABKAUSEQoJcGFnZV9zaXplGAMgASgFEhMKC3RvdGFsX2NvdW50GAQgASgFEhMKC3RvdGFsX3BhZ2VzGAUgASgFEjkKCG1lc3NhZ2VzGAYgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlUmVzcG9uc2VEdG8ikAEKGENhbmNlbFNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIwCgxjYW5jZWxsZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBnJ1bl9pZBgEIAEoCUgAiAEBQgkKB19ydW5faWQiyAIKE1Byb2Nlc3NpbmdTdGF0dXNEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIVCg1pc19wcm9jZXNzaW5nGAIgASgIEhwKFHF1ZXVlZF9tZXNzYWdlX2NvdW50GAMgASgFEkMKDnF1ZXVlX21lc3NhZ2VzGAQgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEjkKFXByb2Nlc3Npbmdfc3RhcnRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRwoSc2NoZWR1bGVkX21lc3NhZ2VzGAYgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEh8KF3NjaGVkdWxlZF9tZXNzYWdlX2NvdW50GAcgASgFIj0KFENhbmNlbGxlZE1lc3NhZ2VJbmZvEgwKBG1vZGUYASABKAkSFwoPY29udGVudF9wcmV2aWV3GAIgASgJIpIBChlDYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgDIAEoCRIhChlyZW1haW5pbmdfc2NoZWR1bGVkX2NvdW50GAQgASgFEg8KB21lc3NhZ2UYBSABKAkiwwEKF0NhbmNlbFBlbmRpbmdNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBITCgtxdWV1ZV9pbmRleBgDIAEoBRIXCg9yZW1haW5pbmdfY291bnQYBCABKAUSDwoHbWVzc2FnZRgFIAEoCRJEChFjYW5jZWxsZWRfbWVzc2FnZRgGIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsbGVkTWVzc2FnZUluZm8iUgoXU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRIXCgptZXNzYWdlX2lkGAIgASgJSACIAQFCDQoLX21lc3NhZ2VfaWQiKQoWU2Vzc2lvblN0ZWVyUmVxdWVzdER0bxIPCgdjb250ZW50GAEgASgJIjAKHVF1ZXVlZE1lc3NhZ2VTdGVlclJlc3BvbnNlRHRvEg8KB291dGNvbWUYASABKAkiPAocUXVldWVkTWVzc2FnZVN0ZWVyUmVxdWVzdER0bxIcChRleGVjdXRpb25fbWVzc2FnZV9pZBgBIAEoCSKVAQoWUG9zdE1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJEiEKFHNjaGVkdWxlZF9tZXNzYWdlX2lkGAIgASgJSACIAQESLgoKZHVlX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFwoVX3NjaGVkdWxlZF9tZXNzYWdlX2lkIu0BChJQb3N0TWVzc2FnZVJlcXVlc3QSDwoHY29udGVudBgBIAEoCRIMCgRtb2RlGAIgASgJEkIKCmltYWdlX3JlZnMYAyADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAQgAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEjQKEHNjaGVkdWxlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIl4KK0NvbnZlcnRUb1Byb3Bvc2FsSGFnaVNraWxsUHJvbXB0UmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRITCgZwcm9tcHQYAiABKAlIAIgBAUIJCgdfcHJvbXB0ImAKH0Fubm90YXRpb25TdWJtaXNzaW9uUmVzcG9uc2VEdG8SDwoHbWVzc2FnZRgBIAEoCRIYChBhbm5vdGF0aW9uX2NvdW50GAIgASgFEhIKCmZpbGVfY291bnQYAyABKAUiygEKEkJsb2NrQW5ub3RhdGlvbkR0bxIZChFzdGFydF9saW5lX251bWJlchgBIAEoBRIXCg9lbmRfbGluZV9udW1iZXIYAiABKAUSGAoQb3JpZ2luYWxfY29udGVudBgDIAEoCRISCgpibG9ja190eXBlGAQgASgJEhcKD2Fubm90YXRpb25fdGV4dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgoKAmlkGAcgASgJIq8BChFGaWxlQW5ub3RhdGlvbkR0bxIRCglmaWxlX25hbWUYASABKAkSEQoJZmlsZV9wYXRoGAIgASgJEkIKEWJsb2NrX2Fubm90YXRpb25zGAMgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5CbG9ja0Fubm90YXRpb25EdG8SHAoPZmlsZV9hbm5vdGF0aW9uGAQgASgJSACIAQFCEgoQX2ZpbGVfYW5ub3RhdGlvbiLfAQoXQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRI1CgVmaWxlcxgCIAMoCzImLmhhZ2ljb2RlLnNlc3Npb24udjEuRmlsZUFubm90YXRpb25EdG8SGQoRdG90YWxfYW5ub3RhdGlvbnMYAyABKAUSMAoMc3VibWl0dGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaCg1nbG9iYWxfcHJvbXB0GAUgASgJSACIAQFCEAoOX2dsb2JhbF9wcm9tcHQykQoKF1Nlc3Npb25NZXNzYWdpbmdTZXJ2aWNlEnUKEkdldFNlc3Npb25NZXNzYWdlcxIuLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVzcG9uc2USZgoNQ2FuY2VsU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZRKNAQoaR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXMSNi5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25Qcm9jZXNzaW5nU3RhdHVzUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXNSZXNwb25zZRJ7ChRDYW5jZWxQZW5kaW5nTWVzc2FnZRIwLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEoEBChZDYW5jZWxTY2hlZHVsZWRNZXNzYWdlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlc3BvbnNlEmMKDFN0ZWVyU2Vzc2lvbhIoLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVzcG9uc2USdQoSU3RlZXJRdWV1ZWRNZXNzYWdlEi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXF1ZXN0Gi8uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXNwb25zZRJ1ChJQb3N0U2Vzc2lvbk1lc3NhZ2USLi5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlc3BvbnNlEqgBCiNHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdBI/LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0GkAuaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlEocBChhTdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnMSNC5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1JlcXVlc3QaNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1Jlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuU2Vzc2lvbi5WMWIGcHJvdG8z",[Ue,Ne,de]),_h=v(Qe,1),$h=v(Qe,11),Ph=v(Qe,15),qh=v(Qe,19),eb=v(Qe,34),tb=v(Qe,38),nb=v(Qe,43),ob=We(Qe,0),Ie=oe("CipoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fcHJvcG9zYWwucHJvdG8SE2hhZ2ljb2RlLnNlc3Npb24udjEiOAoiTGlzdFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInIKI0xpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEksKBnJlc3VsdBgBIAEoCzI7LmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZXNMaXN0UmVzcG9uc2VEdG8ijQIKGVVubGlua2VkT3BlblNwZWNDaGFuZ2VEdG8SDAoEbmFtZRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEhwKD3Rhc2tzX2NvbXBsZXRlZBgEIAEoBUgAiAEBEhgKC3Rhc2tzX3RvdGFsGAUgASgFSAGIAQESGQoRaGFzX3Byb3Bvc2FsX2ZpbGUYBiABKAgSDQoFZmlsZXMYByADKAkSIgoVbm90X2ltcG9ydGFibGVfcmVhc29uGAggASgJSAKIAQFCEgoQX3Rhc2tzX2NvbXBsZXRlZEIOCgxfdGFza3NfdG90YWxCGAoWX25vdF9pbXBvcnRhYmxlX3JlYXNvbiJpCiZVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc0xpc3RSZXNwb25zZUR0bxI/CgdjaGFuZ2VzGAEgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5VbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRHRvIjkKI0NvdW50VW5saW5rZWRPcGVuU3BlY0NoYW5nZXNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiawokQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEkMKBnJlc3VsdBgBIAEoCzIzLmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZUNvdW50RHRvIi8KHlVubGlua2VkT3BlblNwZWNDaGFuZ2VDb3VudER0bxINCgVjb3VudBgBIAEoBSJiCiRHZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtjaGFuZ2VfbmFtZRgCIAEoCRIRCglmaWxlX3BhdGgYAyABKAkiawolR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5zZXNzaW9uLnYxLlVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvIkMKHVVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvEhEKCWZpbGVfcGF0aBgBIAEoCRIPCgdjb250ZW50GAIgASgJIkgKHEltcG9ydE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFuZ2VfbmFtZXMYAiADKAkiZAodSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5JbXBvcnRPcGVuU3BlY0NoYW5nZXNSZXN1bHREdG8iZAoeSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzdWx0RHRvEkIKB3Jlc3VsdHMYASADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8imAEKHEltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8SDAoEbmFtZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSOAoHc2Vzc2lvbhgDIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvEhQKB21lc3NhZ2UYBCABKAlIAIgBAUIKCghfbWVzc2FnZSJwCh5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI6CgRib2R5GAIgASgLMiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVByb3Bvc2FsUmVxdWVzdCJtCh9PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0byJsChdHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEj0KBGJvZHkYAiABKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXF1ZXN0RHRvIlkKGEdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byJoChVBcmNoaXZlU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI7CgRib2R5GAIgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8iUQoWQXJjaGl2ZVNlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byJqChZFeGVjdXRlUHJvcG9zYWxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSPAoEYm9keRgCIAEoCzIuLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdER0byJYChdFeGVjdXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIsChZDb21wbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiUgoXQ29tcGxldGVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iMwodVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJaCh5WYWxpZGF0ZVNlc3Npb25FeGVjdXRlUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjEKG1ZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlgKHFZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjMKHVZhbGlkYXRlU2Vzc2lvbkFyY2hpdmVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWgoeVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblJlc3VsdER0byJyCiFQcm9wb3NhbE9wdGltaXphdGlvbkRpYWdub3N0aWNEdG8SDAoEY29kZRgBIAEoCRIQCghzZXZlcml0eRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhIKBWZpZWxkGAQgASgJSACIAQFCCAoGX2ZpZWxkIo4BCi1Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SEAoIaXNfdmFsaWQYASABKAgSSwoLZGlhZ25vc3RpY3MYAiADKAsyNi5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uRGlhZ25vc3RpY0R0byLcAwonUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvEhcKCnNjcmlwdF9rZXkYASABKAlIAIgBARIdChBzZWxlY3RlZF9oZXJvX2lkGAIgASgJSAGIAQESHAoPY2FwdGFpbl9oZXJvX2lkGAMgASgJSAKIAQESFgoJcm9zdGVyX2lkGAQgASgJSAOIAQESawoQZXh0ZW5zaW9uX2ZpZWxkcxgFIAMoCzJRLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvLkV4dGVuc2lvbkZpZWxkc0VudHJ5EhYKCXN0YWdlX2tleRgGIAEoCUgEiAEBEh0KEHNlbGVjdGlvbl9zb3VyY2UYByABKAlIBYgBARo2ChRFeHRlbnNpb25GaWVsZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19zY3JpcHRfa2V5QhMKEV9zZWxlY3RlZF9oZXJvX2lkQhIKEF9jYXB0YWluX2hlcm9faWRCDAoKX3Jvc3Rlcl9pZEIMCgpfc3RhZ2Vfa2V5QhMKEV9zZWxlY3Rpb25fc291cmNlIr4DCiNQcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVJlc3VsdER0bxIcCg9vcHRpbWl6ZWRfdGl0bGUYASABKAlIAIgBARIoChtvcHRpbWl6ZWRfcHJvcG9zYWxfbWFya2Rvd24YAiABKAlIAYgBARIfChdvcHRpbWl6ZWRfcHJvcG9zYWxfbmFtZRgDIAEoCRIdChVvcHRpbWl6ZWRfZGVzY3JpcHRpb24YBCABKAkSVwoRc2NlbmFyaW9fc2V0dGluZ3MYBSABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0bxJWCgp2YWxpZGF0aW9uGAYgASgLMkIuaGFnaWNvZGUuc2Vzc2lvbi52MS5Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SGQoMcmF3X3Jlc3BvbnNlGAcgASgJSAKIAQFCEgoQX29wdGltaXplZF90aXRsZUIeChxfb3B0aW1pemVkX3Byb3Bvc2FsX21hcmtkb3duQg8KDV9yYXdfcmVzcG9uc2Ui0ggKJFByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIbChNyZXF1ZXN0X2ZpbmdlcnByaW50GAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgDIAEoCRIVCg1hcHBsaWVkX3RpdGxlGAQgASgJEh0KFWFwcGxpZWRfcHJvcG9zYWxfbmFtZRgFIAEoCRIgChhwcm9wb3NhbF9kcmFmdF9hdmFpbGFibGUYBiABKAgSIAoYc2NlbmFyaW9fc2V0dGluZ3Nfc3RhdHVzGAcgASgJEhoKEmFwcGxpZWRfdGl0bGVfbW9kZRgIIAEoCRIQCghpc192YWxpZBgJIAEoCBJLCgtkaWFnbm9zdGljcxgKIAMoCzI2LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25EaWFnbm9zdGljRHRvEiYKGW9wdGltaXplZF90aXRsZV9jYW5kaWRhdGUYCyABKAlIAIgBARIjChZwcm9wb3NhbF9kcmFmdF9wcmV2aWV3GAwgASgJSAGIAQESGgoNYXJ0aWZhY3RfcGF0aBgNIAEoCUgCiAEBEhsKDmNvcnJlbGF0aW9uX2lkGA4gASgJSAOIAQESHQoQcmVzb2x2ZWRfaGVyb19pZBgPIAEoCUgEiAEBEh8KEnJlc29sdmVkX2hlcm9fbmFtZRgQIAEoCUgFiAEBEh8KEnJlc29sdmVkX2hlcm9faWNvbhgRIAEoCUgGiAEBEigKG3Jlc29sdmVkX2hlcm9fZXhlY3V0b3JfdHlwZRgSIAEoCUgHiAEBEiIKFWhlcm9fc2VsZWN0aW9uX3NvdXJjZRgTIAEoCUgIiAEBEiMKFmhlcm9fcm91dGluZ19zdGFnZV9rZXkYFCABKAlICYgBARIkChdoZXJvX3JvdXRpbmdfc2NyaXB0X2tleRgVIAEoCUgKiAEBEiQKF29wdGltaXphdGlvbl9jZXNzaW9uX2lkGBYgASgJSAuIAQFCHAoaX29wdGltaXplZF90aXRsZV9jYW5kaWRhdGVCGQoXX3Byb3Bvc2FsX2RyYWZ0X3ByZXZpZXdCEAoOX2FydGlmYWN0X3BhdGhCEQoPX2NvcnJlbGF0aW9uX2lkQhMKEV9yZXNvbHZlZF9oZXJvX2lkQhUKE19yZXNvbHZlZF9oZXJvX25hbWVCFQoTX3Jlc29sdmVkX2hlcm9faWNvbkIeChxfcmVzb2x2ZWRfaGVyb19leGVjdXRvcl90eXBlQhgKFl9oZXJvX3NlbGVjdGlvbl9zb3VyY2VCGQoXX2hlcm9fcm91dGluZ19zdGFnZV9rZXlCGgoYX2hlcm9fcm91dGluZ19zY3JpcHRfa2V5QhoKGF9vcHRpbWl6YXRpb25fY2Vzc2lvbl9pZCLVAQolUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0bxJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlUmVzdWx0RHRvEkoKB3N1bW1hcnkYAiABKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgDIAEoCSKJAwoXT3B0aW1pemVQcm9wb3NhbFJlcXVlc3QSEwoLZGVzY3JpcHRpb24YASABKAkSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgCIAEoCUgAiAEBEiMKFm9wdGltaXphdGlvbl9kaXJlY3Rpb24YAyABKAlIAYgBARISCgV0aXRsZRgEIAEoCUgCiAEBEhgKEGlzX2RlZmF1bHRfdGl0bGUYBSABKAgSJQoYb3JpZ2luYWxfY2hpZWZfY29tcGxhaW50GAYgASgJSAOIAQESVwoRc2NlbmFyaW9fc2V0dGluZ3MYByABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0b0IcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIZChdfb3B0aW1pemF0aW9uX2RpcmVjdGlvbkIICgZfdGl0bGVCGwoZX29yaWdpbmFsX2NoaWVmX2NvbXBsYWludCJFChpQbGFubmluZ0RpcmVjdGlvbk9wdGlvbkR0bxIPCgJpZBgBIAEoCUgAiAEBEg8KB2VuYWJsZWQYAiABKAhCBQoDX2lkIowCChpHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdER0bxIgChNlbmFibGVfZXhwbG9yZV9tb2RlGAEgASgISACIAQESTAoTcGxhbm5pbmdfZGlyZWN0aW9ucxgCIAMoCzIvLmhhZ2ljb2RlLnNlc3Npb24udjEuUGxhbm5pbmdEaXJlY3Rpb25PcHRpb25EdG8SJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgDIAEoCUgBiAEBEhQKB2hlcm9faWQYBCABKAlIAogBAUIWChRfZW5hYmxlX2V4cGxvcmVfbW9kZUIcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIKCghfaGVyb19pZCI8ChhBcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIj0KGUV4ZWN1dGVQcm9wb3NhbFJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIlcKC0NvbmZsaWN0RHRvEgwKBHR5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhIKCnJlc29sdXRpb24YBCABKAkiawoSVmFsaWRhdGlvbklzc3VlRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIQCghzZXZlcml0eRgDIAEoCRIWCgllbnRpdHlfaWQYBCABKAlIAIgBAUIMCgpfZW50aXR5X2lkIoUBChRWYWxpZGF0aW9uU3VtbWFyeUR0bxIVCg1wcm9qZWN0X2NvdW50GAEgASgFEhUKDXNlc3Npb25fY291bnQYAiABKAUSHwoXZHVwbGljYXRlX3Byb2plY3RfY291bnQYAyABKAUSHgoWb3JwaGFuZWRfc2Vzc2lvbl9jb3VudBgEIAEoBSKMAgoTVmFsaWRhdGlvblJlc3VsdER0bxIQCghpc192YWxpZBgBIAEoCBI5Cgh3YXJuaW5ncxgCIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjcKBmVycm9ycxgDIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjMKCWNvbmZsaWN0cxgEIAMoCzIgLmhhZ2ljb2RlLnNlc3Npb24udjEuQ29uZmxpY3REdG8SOgoHc3VtbWFyeRgFIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblN1bW1hcnlEdG8yngwKFlNlc3Npb25Qcm9wb3NhbFNlcnZpY2UShAEKF09wdGltaXplU2Vzc2lvblByb3Bvc2FsEjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QaNC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wdGltaXplU2Vzc2lvblByb3Bvc2FsUmVzcG9uc2USbwoQR2VuZXJhdGVQcm9wb3NhbBIsLmhhZ2ljb2RlLnNlc3Npb24udjEuR2VuZXJhdGVQcm9wb3NhbFJlcXVlc3QaLS5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRJpCg5BcmNoaXZlU2Vzc2lvbhIqLmhhZ2ljb2RlLnNlc3Npb24udjEuQXJjaGl2ZVNlc3Npb25SZXF1ZXN0GisuaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlc3BvbnNlEmwKD0V4ZWN1dGVQcm9wb3NhbBIrLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdBosLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVzcG9uc2USbAoPQ29tcGxldGVTZXNzaW9uEisuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXF1ZXN0GiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXNwb25zZRKBAQoWVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZRIyLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QaMy5oYWdpY29kZS5zZXNzaW9uLnYxLlZhbGlkYXRlU2Vzc2lvbkV4ZWN1dGVSZXNwb25zZRJ7ChRWYWxpZGF0ZVNlc3Npb25TdGFydBIwLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uU3RhcnRSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25TdGFydFJlc3BvbnNlEoEBChZWYWxpZGF0ZVNlc3Npb25BcmNoaXZlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25BcmNoaXZlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEpABChtMaXN0VW5saW5rZWRPcGVuU3BlY0NoYW5nZXMSNy5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QaOC5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpMBChxDb3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzEjguaGFnaWNvZGUuc2Vzc2lvbi52MS5Db3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBo5LmhhZ2ljb2RlLnNlc3Npb24udjEuQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpYBCh1HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZRI5LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXF1ZXN0GjouaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlc3BvbnNlEn4KFUltcG9ydE9wZW5TcGVjQ2hhbmdlcxIxLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVxdWVzdBoyLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2VCKaoCJlBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5TZXNzaW9uLlYxYgZwcm90bzM",[Ne,de]),ab=v(Ie,15),rb=v(Ie,17),ib=v(Ie,19),sb=v(Ie,21),lb=v(Ie,23),cb=v(Ie,36),db=v(Ie,38),ub=v(Ie,39),mb=v(Ie,40),hb=We(Ie,0),bb=oe("CixoYWdpY29kZS9jb29yZGluYXRpb24vdjEvcmVzb3VyY2VfbG9jay5wcm90bxIYaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxIuMFCgpMb2NrU3RhdHVzEg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEhAKCHBvc2l0aW9uGAQgASgFEg0KBWVwb2NoGAUgASgDEjQKEGxlYXNlX2V4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKE21heF9ob2xkX2V4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2hvbGRlcl9vd25lcl9pZBgIIAEoCRIUCgxob2xkZXJfbGFiZWwYCSABKAkSFAoMcXVldWVfbGVuZ3RoGAogASgFEiIKGnN1Z2dlc3RlZF9wb2xsX2ludGVydmFsX21zGAsgASgFEicKH3N1Z2dlc3RlZF9oZWFydGJlYXRfaW50ZXJ2YWxfbXMYDCABKAUSLwoLc2VydmVyX3RpbWUYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiEKGXJlcXVpc2l0aW9uZWRfYnlfb3duZXJfaWQYDiABKAkSGgoScmVxdWlzaXRpb25fcmVhc29uGA8gASgJEjQKEHJlcXVpc2l0aW9uZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKFGNoZWNrX2luX2VhcmxpZXN0X2F0GBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChJjaGVja19pbl9sYXRlc3RfYXQYEiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKEHR1cm5fZWFybGllc3RfYXQYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDnR1cm5fbGF0ZXN0X2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKrAQoSQWNxdWlyZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGgoNbGVhc2Vfc2Vjb25kcxgDIAEoBUgAiAEBEhIKBWxhYmVsGAQgASgJSAGIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgCiAEBQhAKDl9sZWFzZV9zZWNvbmRzQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJLChNBY3F1aXJlTG9ja1Jlc3BvbnNlEjQKBnJlc3VsdBgBIAEoCzIkLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5Mb2NrU3RhdHVzImUKFEdldExvY2tTdGF0dXNSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGQoMd2FpdF9zZWNvbmRzGAMgASgFSACIAQFCDwoNX3dhaXRfc2Vjb25kcyJNChVHZXRMb2NrU3RhdHVzUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMigQEKEFJlbmV3TG9ja1JlcXVlc3QSDwoHbG9ja19pZBgBIAEoCRIQCghvd25lcl9pZBgCIAEoCRIaCg1sZWFzZV9zZWNvbmRzGAMgASgFSACIAQESEgoFZXBvY2gYBCABKANIAYgBAUIQCg5fbGVhc2Vfc2Vjb25kc0IICgZfZXBvY2giSQoRUmVuZXdMb2NrUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMiVQoSUmVsZWFzZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSEgoFZXBvY2gYAyABKANIAIgBAUIICgZfZXBvY2giWQoTUmVsZWFzZUxvY2tSZXNwb25zZRIQCghyZWxlYXNlZBgBIAEoCBIXCg9wcmV2aW91c19zdGF0dXMYAiABKAkSFwoPaG9sZGVyX293bmVyX2lkGAMgASgJIpEBChZSZXF1aXNpdGlvbkxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGcmVhc29uGAMgASgJEhIKBWxhYmVsGAQgASgJSACIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgBiAEBQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJPChdSZXF1aXNpdGlvbkxvY2tSZXNwb25zZRI0CgZyZXN1bHQYASABKAsyJC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N0YXR1cyIyChBMaXN0TG9ja3NSZXF1ZXN0EhMKBnByZWZpeBgBIAEoCUgAiAEBQgkKB19wcmVmaXgiSQoRTGlzdExvY2tzUmVzcG9uc2USNAoFbG9ja3MYASADKAsyJS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N1bW1hcnki3QEKC0xvY2tTdW1tYXJ5Eg8KB2xvY2tfaWQYASABKAkSFwoPaG9sZGVyX293bmVyX2lkGAIgASgJEhQKDGhvbGRlcl9sYWJlbBgDIAEoCRINCgVlcG9jaBgEIAEoAxI0ChBsZWFzZV9leHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9ob2xkX3N0YXJ0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHF1ZXVlX2xlbmd0aBgHIAEoBTKjBQoTUmVzb3VyY2VMb2NrU2VydmljZRJqCgtBY3F1aXJlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5BY3F1aXJlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuQWNxdWlyZUxvY2tSZXNwb25zZRJwCg1HZXRMb2NrU3RhdHVzEi4uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXF1ZXN0Gi8uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXNwb25zZRJkCglSZW5ld0xvY2sSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVuZXdMb2NrUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZW5ld0xvY2tSZXNwb25zZRJqCgtSZWxlYXNlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZWxlYXNlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVsZWFzZUxvY2tSZXNwb25zZRJ2Cg9SZXF1aXNpdGlvbkxvY2sSMC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVxdWlzaXRpb25Mb2NrUmVxdWVzdBoxLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZXF1aXNpdGlvbkxvY2tSZXNwb25zZRJkCglMaXN0TG9ja3MSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTGlzdExvY2tzUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5MaXN0TG9ja3NSZXNwb25zZUIuqgIrUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvb3JkaW5hdGlvbi5WMWIGcHJvdG8z",[Ne]),gb=We(bb,0),zn=new Set([b.INT64,b.UINT64,b.SINT64,b.FIXED64,b.SFIXED64]),ys=e=>e.typeName.startsWith("google.protobuf.");function Ln(e){if(typeof e!="string")return e;const t=Number(e);return Number.isSafeInteger(t)?t:e}function dn(e,t){if(t==null||typeof t!="object"||Array.isArray(t)||ys(e))return t;const n=t;for(const o of e.fields){const a=n[o.jsonName];a!==void 0&&(n[o.jsonName]=pb(o,a))}return n}function pb(e,t){switch(e.fieldKind){case"scalar":return zn.has(e.scalar)?Ln(t):t;case"message":return dn(e.message,t);case"list":return Array.isArray(t)?e.listKind==="scalar"?zn.has(e.scalar)?t.map(Ln):t:e.listKind==="message"?t.map(n=>dn(e.message,n)):t:t;case"map":{if(t===null||typeof t!="object"||Array.isArray(t))return t;const n=t;for(const o of Object.keys(n))e.mapKind==="scalar"&&zn.has(e.scalar)?n[o]=Ln(n[o]):e.mapKind==="message"&&(n[o]=dn(e.message,n[o]));return n}default:return t}}function Ab(e,t){return dn(e,$i(e,t,{alwaysEmitImplicit:!0}))}function fb(e,t){return Ab(e,t).result}function un(e,t,n=0){if(t===null||typeof t!="object"||Array.isArray(t)||ys(e)||n>8)return t;const o=t;for(const a of e.fields){const r=o[a.jsonName];if(!(r===null||typeof r!="object")){if(a.fieldKind==="message")un(a.message,r,n+1);else if(a.fieldKind==="list"&&a.listKind==="message"&&Array.isArray(r))r.forEach(i=>un(a.message,i,n+1));else if(a.fieldKind==="map"&&!Array.isArray(r)){const i=r;for(const s of Object.keys(i)){const l=i[s];a.mapKind==="scalar"&&a.scalar===b.STRING?l===null?delete i[s]:(typeof l=="number"||typeof l=="boolean")&&(i[s]=String(l)):a.mapKind==="message"&&un(a.message,l,n+1)}}}}return t}function D(e,t){return os(e,t===void 0?t:un(e,JSON.parse(JSON.stringify(t))),{ignoreUnknownFields:!0})}function Yr(e,t){const n=ps(e);if(n)throw t.forEach((o,a)=>{n.metadata.append(a,o)}),n;if(!t.has("Grpc-Status")&&!e.has("Grpc-Status"))throw new F("protocol error: missing status",E.Internal)}function Zb(e,t,n,o){var a,r;const i=new Headers(n??{});i.set(sm,e?bm:gm),i.set(hm,"1");const s=(r=(a=i.get("User-Agent"))!==null&&a!==void 0?a:i.get("X-User-Agent"))!==null&&r!==void 0?r:"connect-es/2.2.0";return i.set(mm,s),o&&i.set(um,s),t!==void 0&&i.set(cm,`${t}m`),i}function Xr(e,t,n,o,a,r){const i=Zb(e,t,n,r);return a!=null&&i.set(bs,a.name),o.length>0&&i.set(lm,o.map(s=>s.name).join(",")),i}function Rb(e){switch(e){case 400:return E.Internal;case 401:return E.Unauthenticated;case 403:return E.PermissionDenied;case 404:return E.Unimplemented;case 429:return E.Unavailable;case 502:return E.Unavailable;case 503:return E.Unavailable;case 504:return E.Unavailable;default:return E.Unknown}}function Eb(e,t){var n;if(e>=200&&e<300)return{foundStatus:t.has(gs),headerError:ps(t)};throw new F(decodeURIComponent((n=t.get("Grpc-Message"))!==null&&n!==void 0?n:`HTTP ${e}`),Rb(e),t)}function Br(e,t,n){const{foundStatus:o,headerError:a}=Eb(t,n);let r;const i=n.get(bs);if(i!==null&&i.toLowerCase()!=="identity"&&(r=e.find(s=>s.name===i),!r))throw new F(`unsupported response encoding "${i}"`,E.Internal,n);return{foundStatus:o,compression:r,headerError:a}}var Cr=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(r){n[r]=e[r]&&function(i){return new Promise(function(s,l){i=e[r](i),a(s,l,i.done,i.value)})}}function a(r,i,s,l){Promise.resolve(l).then(function(c){r({value:c,done:s})},i)}},ze=function(e){return this instanceof ze?(this.v=e,this):new ze(e)},Vb=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),a,r=[];return a=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),a[Symbol.asyncIterator]=function(){return this},a;function i(Z){return function(G){return Promise.resolve(G).then(Z,h)}}function s(Z,G){o[Z]&&(a[Z]=function(S){return new Promise(function(X,y){r.push([Z,S,X,y])>1||l(Z,S)})},G&&(a[Z]=G(a[Z])))}function l(Z,G){try{c(o[Z](G))}catch(S){f(r[0][3],S)}}function c(Z){Z.value instanceof ze?Promise.resolve(Z.value.v).then(u,h):f(r[0][2],Z)}function u(Z){l("next",Z)}function h(Z){l("throw",Z)}function f(Z,G){Z(G),r.shift(),r.length&&l(r[0][0],r[0][1])}};function Gb(e){return{async unary(t,n,o,a,r,i){const s=Sr(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,await Rm({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!1,service:t.parent,method:t,requestMethod:"POST",url:Gr(e.baseUrl,t),header:Xr(e.useBinaryFormat,o,a,e.acceptCompression,e.sendCompression,!0),contextValues:i??Er(),message:r},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:cn(us([l.message]),gr(s.getI(e.useBinaryFormat)),Ar(e.sendCompression,e.compressMinBytes),Zr(),{propagateDownStreamError:!0})}),{compression:u,headerError:h}=Br(e.acceptCompression,c.status,c.header),{trailer:f,message:Z}=await Ou(c.body,Rr(e.readMaxBytes),fr(u??null,e.readMaxBytes),pr(s.getO(e.useBinaryFormat),128,Vr()),async G=>{var S,X,y,d;let m,p;try{for(var g=!0,A=Cr(G),V;V=await A.next(),S=V.done,!S;g=!0){d=V.value,g=!1;const C=d;if(C.end){if(p!==void 0)throw new F("protocol error: received extra trailer",E.Unimplemented);p=C.value}else{if(m!==void 0)throw new F("protocol error: received extra output message for unary method",E.Unimplemented);m=C.value}}}catch(C){X={error:C}}finally{try{!g&&!S&&(y=A.return)&&await y.call(A)}finally{if(X)throw X.error}}return{trailer:p,message:m}},{propagateDownStreamError:!1});if(f===void 0)throw h??new F("protocol error: missing trailer",c.header.has("Grpc-Status")?E.Unimplemented:E.Unknown);if(Yr(f,c.header),Z===void 0)throw new F("protocol error: missing output message for unary method",f.has("Grpc-Status")?E.Unimplemented:E.Unknown);return{stream:!1,service:t.parent,method:t,header:c.header,message:Z,trailer:f}}})},async stream(t,n,o,a,r,i){const s=Sr(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,Em({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!0,service:t.parent,method:t,requestMethod:"POST",url:Gr(e.baseUrl,t),header:Xr(e.useBinaryFormat,o,a,e.acceptCompression,e.sendCompression,!0),contextValues:i??Er(),message:r},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:cn(l.message,gr(s.getI(e.useBinaryFormat)),Ar(e.sendCompression,e.compressMinBytes),Zr(),{propagateDownStreamError:!0})}),{compression:u,foundStatus:h,headerError:f}=Br(e.acceptCompression,c.status,c.header);if(f)throw f;const Z=Object.assign(Object.assign({},l),{header:c.header,trailer:new Headers,message:cn(c.body,Rr(e.readMaxBytes),fr(u??null,e.readMaxBytes),pr(s.getO(e.useBinaryFormat),128,Vr()),function(G){return Vb(this,arguments,function*(){var S,X,y,d;if(h){if((yield ze(G[Symbol.asyncIterator]().next())).done!==!0)throw new F("protocol error: extra data for trailers-only",E.InvalidArgument);return yield ze(void 0)}let m=!1;try{for(var p=!0,g=Cr(G),A;A=yield ze(g.next()),S=A.done,!S;p=!0){d=A.value,p=!1;const V=d;if(V.end){if(m)throw new F("protocol error: received extra trailer",E.InvalidArgument);m=!0,Yr(V.value,c.header),V.value.forEach((C,K)=>Z.trailer.set(K,C));continue}if(m)throw new F("protocol error: received extra message after trailer",E.InvalidArgument);yield yield ze(V.value)}}catch(V){X={error:V}}finally{try{!p&&!S&&(y=g.return)&&(yield ze(y.call(g)))}finally{if(X)throw X.error}}if(!m)throw new F("protocol error: missing trailer",E.Internal)})},{propagateDownStreamError:!0})});return Z}})}}}function vn(e){let t=E.Internal;const n=Do(e).map(Wn);n.some(a=>a.code=="ERR_STREAM_WRITE_AFTER_END")||n.some(a=>a.code=="ERR_STREAM_DESTROYED"||a.code=="ERR_HTTP2_INVALID_STREAM"||a.code=="ECONNRESET")?t=E.Aborted:n.some(a=>a.code=="ETIMEDOUT"||a.code=="ENOTFOUND"||a.code=="EAI_AGAIN"||a.code=="ECONNREFUSED")&&(t=E.Unavailable);const o=F.from(e,t);return o!==e&&(o.cause=e),o}function Do(e){const t=[];for(;!(!(e instanceof Error)||t.includes(e)||(t.push(e),!("cause"in e)));)e=e.cause;return t}function Wn(e){const t={};return e instanceof Error&&("code"in e&&typeof e.code=="string"&&(t.code=e.code),"syscall"in e&&typeof e.syscall=="string"&&(t.syscall=e.syscall)),t}function Sb(e){switch(e){case $.PROTOCOL_ERROR:case $.INTERNAL_ERROR:case $.FLOW_CONTROL_ERROR:case $.SETTINGS_TIMEOUT:case $.FRAME_SIZE_ERROR:case $.COMPRESSION_ERROR:case $.CONNECT_ERROR:return new F(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.Internal);case $.REFUSED_STREAM:return new F(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.Unavailable);case $.CANCEL:return new F(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.Canceled);case $.ENHANCE_YOUR_CALM:return new F(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.ResourceExhausted);case $.INADEQUATE_SECURITY:return new F(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.PermissionDenied);case $.HTTP_1_1_REQUIRED:return new F(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.PermissionDenied);default:break}}var $;(function(e){e[e.PROTOCOL_ERROR=1]="PROTOCOL_ERROR",e[e.INTERNAL_ERROR=2]="INTERNAL_ERROR",e[e.FLOW_CONTROL_ERROR=3]="FLOW_CONTROL_ERROR",e[e.SETTINGS_TIMEOUT=4]="SETTINGS_TIMEOUT",e[e.STREAM_CLOSED=5]="STREAM_CLOSED",e[e.FRAME_SIZE_ERROR=6]="FRAME_SIZE_ERROR",e[e.REFUSED_STREAM=7]="REFUSED_STREAM",e[e.CANCEL=8]="CANCEL",e[e.COMPRESSION_ERROR=9]="COMPRESSION_ERROR",e[e.CONNECT_ERROR=10]="CONNECT_ERROR",e[e.ENHANCE_YOUR_CALM=11]="ENHANCE_YOUR_CALM",e[e.INADEQUATE_SECURITY=12]="INADEQUATE_SECURITY",e[e.HTTP_1_1_REQUIRED=13]="HTTP_1_1_REQUIRED"})($||($={}));var Nb=(0,fn.promisify)(gt.gzip),vb=(0,fn.promisify)(gt.gunzip),Wb=(0,fn.promisify)(gt.brotliCompress),yb=(0,fn.promisify)(gt.brotliDecompress),Ib={name:"gzip",compress(e){return bn(Nb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):bn(Is(vb(e,{maxOutputLength:t}),t))}},Yb={name:"br",compress(e){return bn(Wb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):bn(Is(yb(e,{maxOutputLength:t}),t))}};function bn(e){return e.then(t=>t.buffer instanceof ArrayBuffer?t:new Uint8Array(t))}function Is(e,t){return e.catch(n=>{var o;const a=Wn(n);let r=E.Internal,i="decompression failed";switch(a.code){case"ERR_BUFFER_TOO_LARGE":r=E.ResourceExhausted,i=`message is larger than configured readMaxBytes ${t} after decompression`;break;case"Z_DATA_ERROR":case"ERR_PADDING_2":r=E.InvalidArgument;break;default:!((o=a.code)===null||o===void 0)&&o.startsWith("ERR__ERROR_FORMAT_")&&(r=E.InvalidArgument);break}return Promise.reject(new F(i,r,void 0,void 0,n))})}function yn(e){const t=new Headers;for(const[n,o]of Object.entries(e))if(!n.startsWith(":")&&o!==void 0)if(typeof o=="string")t.append(n,o);else if(typeof o=="number")t.append(n,String(o));else for(const a of o)t.append(n,a);return t}function Ys(e,t){if(e===void 0&&t===void 0)return;const n=Object.create(null);if(t!==void 0)if(Array.isArray(t))for(let o=0;o+1<t.length;o+=2){const a=t[o],r=t[o+1];Array.isArray(n[a])?n[a].push(r):typeof n[a]=="string"?n[a]=[n[a],r]:n[a]=r}else for(const[o,a]of Object.entries(t))Array.isArray(a)?n[o]=a.concat():a!==void 0&&(n[o]=a);if(e!==void 0)if(Array.isArray(e))for(const[o,a]of e)jn(n,o,a);else if("forEach"in e)typeof e.forEach=="function"&&e.forEach((o,a)=>{jn(n,a,o)});else for(const[o,a]of Object.entries(e))jn(n,o,a);return n}function jn(e,t,n){t=t.toLowerCase();const o=e[t];Array.isArray(o)?o.push(n):o===void 0?e[t]=n:e[t]=[o.toString(),n]}var Xs=class{state(){return this.s.t=="ready"?this.verifying!==void 0?"verifying":this.s.streamCount()>0?"open":"idle":this.s.t}error(){if(this.s.t=="error")return this.s.reason}constructor(e,t,n){var o,a,r,i;this.s=io(),this.shuttingDown=[],this.authority=new URL(e).origin,this.http2SessionOptions=n,this.options={pingIntervalMs:(o=t?.pingIntervalMs)!==null&&o!==void 0?o:Number.POSITIVE_INFINITY,pingTimeoutMs:(a=t?.pingTimeoutMs)!==null&&a!==void 0?a:1e3*15,pingIdleConnection:(r=t?.pingIdleConnection)!==null&&r!==void 0?r:!1,idleConnectionTimeoutMs:(i=t?.idleConnectionTimeoutMs)!==null&&i!==void 0?i:1e3*60*15}}async connect(){try{return(await this.gotoReady()).streamCount()>0?"open":"idle"}catch{return"error"}}async request(e,t,n,o){for(;;){const a=await this.gotoReady();try{const r=a.conn.request(Object.assign(Object.assign({},n),{":method":e,":path":t}),o);return a.registerRequest(r),r}catch(r){if(a.conn.closed||a.conn.destroyed)continue;throw r}}}notifyResponseByteRead(e){this.s.t=="ready"&&this.s.responseByteRead(e);for(const t of this.shuttingDown)t.responseByteRead(e)}abort(e){var t,n,o;const a=e??new F("connection aborted",E.Canceled);(n=(t=this.s).abort)===null||n===void 0||n.call(t,a);for(const r of this.shuttingDown)(o=r.abort)===null||o===void 0||o.call(r,a);this.setState(qt(a))}async gotoReady(){for(this.s.t=="ready"?this.s.isShuttingDown()||this.s.conn.closed||this.s.conn.destroyed?this.setState(Hn(this.authority,this.http2SessionOptions)):this.s.requiresVerify()&&await this.verify(this.s):(this.s.t=="closed"||this.s.t=="error")&&this.setState(Hn(this.authority,this.http2SessionOptions));this.s.t!=="ready";){if(this.s.t==="error")throw this.s.reason;this.s.t==="connecting"&&await this.s.conn}return this.s}setState(e){var t,n;if((n=(t=this.s).onExitState)===null||n===void 0||n.call(t),this.s.t=="ready"&&this.s.isShuttingDown()){const o=this.s;this.shuttingDown.push(o),o.onClose=o.onError=()=>{const a=this.shuttingDown.indexOf(o);a!==-1&&this.shuttingDown.splice(a,1)}}switch(e.t){case"connecting":e.conn.then(o=>{this.setState(Bb(o,this.options))},o=>{this.setState(qt(o))});break;case"ready":e.onClose=()=>this.setState(io()),e.onError=o=>this.setState(qt(o));break;case"closed":break;case"error":break}this.s=e}verify(e){return this.verifying!==void 0?this.verifying:(this.verifying=e.verify().then(t=>{t||this.setState(Hn(this.authority,this.http2SessionOptions))},t=>{this.setState(qt(t))}).finally(()=>{this.verifying=void 0}),this.verifying)}};function io(){return{t:"closed"}}function Xb(e){return{t:"error",reason:e}}function qt(e){return e instanceof F&&F.from(e).code==E.Canceled?io():Xb(e)}function Hn(e,t){let n,o;const a=new Promise((c,u)=>{n=c,o=u}),r=Re.connect(e,t);r.on("connect",i),r.on("error",s);function i(){n?.(r),l()}function s(c){o?.(vn(c)),l()}function l(){r.off("connect",i),r.off("error",s)}return{t:"connecting",conn:a,abort(c){r.destroyed||r.destroy(void 0,Re.constants.NGHTTP2_CANCEL),o?.(c)},onExitState(){l()}}}function Bb(e,t){Cb(e),e.unref();let n=Date.now(),o=0,a,r,i=!1,s=!1,l;S();const c={t:"ready",conn:e,streamCount(){return o},requiresVerify(){return Date.now()-n>t.pingIntervalMs},isShuttingDown(){return i},onClose:void 0,onError:void 0,registerRequest(g){o++,o==1&&(e.ref(),u(),G()),g.once("response",()=>{n=Date.now(),u()}),g.once("close",()=>{o--,o==0&&(e.unref(),u(),S())})},responseByteRead(g){g.session===e&&(e.closed||e.destroyed||o<=0||(n=Date.now(),u()))},verify(){return e.ref(),new Promise(g=>{const A=()=>{g(!1)};Z(()=>{o==0&&e.unref(),e.off("error",A),e.off("close",A),g(!0)}),e.once("error",A),e.once("close",A)})},abort(g){e.destroyed||(e.once("error",()=>{}),e.destroy(g,Re.constants.NGHTTP2_CANCEL))},onExitState(){c.isShuttingDown()||(p(),this.onError=void 0,this.onClose=void 0)}};function u(){h(),(o>0||t.pingIdleConnection)&&(a=Tn(f,t.pingIntervalMs))}function h(){clearTimeout(a),clearTimeout(r)}function f(){Z(u)}function Z(g){clearTimeout(r),r=Tn(()=>{e.destroy(new F("PING timed out",E.Unavailable),Re.constants.NGHTTP2_CANCEL)},t.pingTimeoutMs),e.ping((A,V)=>{if(clearTimeout(r),A===null){if(V>t.pingTimeoutMs){e.destroy(new F("PING timed out",E.Unavailable),Re.constants.NGHTTP2_CANCEL);return}n=Date.now(),g()}})}function G(){clearTimeout(l)}function S(){l=Tn(X,t.idleConnectionTimeoutMs)}function X(){e.close(),d()}function y(g,A,V){if(g===Re.constants.NGHTTP2_NO_ERROR&&o===0){e.destroy(new F("received GOAWAY without any open streams",E.Canceled),Re.constants.NGHTTP2_NO_ERROR);return}i=!0;const C=Buffer.from("too_many_pings","ascii");V?.equals(C)&&(t.pingIntervalMs=t.pingIntervalMs*2,s=!0)}function d(){var g;p(),(g=c.onClose)===null||g===void 0||g.call(c)}function m(g){var A,V;if(p(),s){const C=new F(`http/2 connection closed with error code ENHANCE_YOUR_CALM (0x${Re.constants.NGHTTP2_ENHANCE_YOUR_CALM.toString(16)}), too_many_pings, doubled the interval`,E.ResourceExhausted);(A=c.onError)===null||A===void 0||A.call(c,C)}else(V=c.onError)===null||V===void 0||V.call(c,vn(g))}function p(){h(),G(),e.off("error",m),e.off("close",d),e.off("goaway",y)}return e.on("error",m),e.on("close",d),e.on("goaway",y),c}function Tn(e,t){if(!(t>2147483647))return setTimeout(e,t).unref()}function Cb(e){if(e.connecting)throw new F("expected open session, but it is connecting",E.Internal);if(e.destroyed)throw new F("expected open session, but it is destroyed",E.Internal);if(e.closed)throw new F("expected open session, but it is closed",E.Internal)}function Fr(e){var t;return e.httpVersion=="1.1"?Fb(e.nodeOptions):wb((t=e.sessionProvider)!==null&&t!==void 0?t:(n=>new Xs(n)))}function Fb(e){return async function(n){const o=Cs(n.signal);return new Promise((a,r)=>{o.onError(i=>{r(i)}),kb(o,n.url,Object.assign(Object.assign({},e),{headers:Ys(n.header,e?.headers),method:n.method}),i=>{Bs(n,i,o),i.on("response",s=>{var l;s.on("error",o.error),o.onError(u=>s.destroy(u));const c=new Headers;a({status:(l=s.statusCode)!==null&&l!==void 0?l:0,header:yn(s.headers),body:Ub(o,s,c),trailer:c})})})})}}function wb(e){return function(n){const o=Cs(n.signal),a=e(n.url);return new Promise((r,i)=>{o.onError(s=>{i(s)}),Jb(o,a,n.url,n.method,Ys(n.header),{},s=>{Bs(n,s,o),s.on("response",l=>{var c;r({status:(c=l[":status"])!==null&&c!==void 0?c:0,header:yn(l),body:Kb(o,s,a),trailer:xb(s)})})})})}}function kb(e,t,n,o){let a;new URL(t).protocol.startsWith("https")?a=_n.request(t,n):a=Dn.request(t,n),e.onError(r=>a.destroy(r)),a.flushHeaders(),a.on("error",e.error),a.on("socket",function(i){function s(){i.off("connect",s),o(a)}i.readyState==="open"?o(a):i.on("connect",s)})}function Ub(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const a=await e.race(o.next());return a.done===!0&&(yn(t.trailers).forEach((r,i)=>{n.set(i,r)}),e.close()),a},throw(a){throw e.error(a),a}}}}}function Jb(e,t,n,o,a,r,i){const s=new URL(n);if(s.origin!==t.authority){const l=`cannot make a request to ${s.origin}: the http2 session is connected to ${t.authority}`;e.error(new F(l,E.Internal));return}t.request(o,s.pathname+s.search,a,{}).then(l=>{e.onError(c=>{if(l.closed)return;const u=c.code==E.Canceled?$.CANCEL:$.INTERNAL_ERROR;return new Promise(h=>l.close(u,h))}),l.on("error",function(u){l.writableEnded&&Do(u).map(Wn).some(h=>h.code=="ERR_STREAM_WRITE_AFTER_END")||e.error(u)}),l.on("close",function(){const u=Sb(l.rstCode);u&&e.error(u)}),i(l)},l=>{e.error(l)})}function xb(e){const t=new Headers;return e.on("trailers",n=>{yn(n).forEach((o,a)=>{t.set(a,o)})}),t}function Kb(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const a=await e.race(o.next());return a.done===!0&&e.close(),n?.notifyResponseByteRead(t),a},throw(a){throw e.error(a),a}}}}}async function Bs(e,t,n){if(e.body===void 0){await new Promise(a=>t.end(a));return}const o=e.body[Symbol.asyncIterator]();return new Promise(a=>{r();function r(){n.isClosed()||o.next().then(i=>{if(i.done===!0){t.end(a);return}t.write(i.value,"binary",s=>{if(s==null){r();return}o.throw!==void 0&&o.throw(vn(s)).catch(()=>{}),!(t.writableEnded&&Do(s).map(Wn).some(l=>l.code=="ERR_STREAM_WRITE_AFTER_END"))&&n.error(s)})},i=>{n.error(i)})}})}function Cs(e){let t,n=!1,o,a=[];const r={error(l){if(!n){n=!0,o=l instanceof F?l:vn(l),t?.(o);for(const c of a)c(o);i()}},close(){n||(n=!0,t&&t(new F("sentinel completed early",E.Internal)),i())},isClosed(){return n},onError(l){n?o!==void 0&&l(o):a.push(l)},race(l){let c;const u=new Promise((h,f)=>{c=h,t=f});return l.then(h=>{c?.(h)},h=>{t?.(h)}),n&&t?.(o??new F("sentinel completed early",E.Internal)),u}};function i(){e&&e.removeEventListener("abort",s),a=[],t=void 0}function s(){r.error(jt(this))}return e&&(e.addEventListener("abort",s),e.aborted&&r.error(jt(e))),r}function zb(e){var t,n,o,a;let r;if(e.httpVersion=="2"){let i;e.sessionManager?i=e.sessionManager:i=new Xs(e.baseUrl,{pingIntervalMs:e.pingIntervalMs,pingIdleConnection:e.pingIdleConnection,pingTimeoutMs:e.pingTimeoutMs,idleConnectionTimeoutMs:e.idleConnectionTimeoutMs},e.nodeOptions),r=Fr({httpVersion:"2",sessionProvider:()=>i})}else r=Fr({httpVersion:"1.1",nodeOptions:e.nodeOptions});return Object.assign(Object.assign(Object.assign({},e),{httpClient:r,useBinaryFormat:(t=e.useBinaryFormat)!==null&&t!==void 0?t:!0,interceptors:(n=e.interceptors)!==null&&n!==void 0?n:[],sendCompression:(o=e.sendCompression)!==null&&o!==void 0?o:null,acceptCompression:(a=e.acceptCompression)!==null&&a!==void 0?a:[Ib,Yb]}),Ku(e.readMaxBytes,e.writeMaxBytes,e.compressMinBytes))}function Lb(e){return Gb(zb(e))}function jb(e){return`cli/${e??"unknown"}`}var Hb=jb("0.1.0-dev.49.1.aa038f5"),Tb="/grpc";function Qb(e){return`${e.replace(/\/+$/,"")}${Tb}`}var Mb=e=>async t=>{const{token:n,lang:o}=vs();return t.header.set("X-Hagi-Client",Hb),n&&t.header.set("Authorization",`Bearer ${n}`),o&&t.header.set("Accept-Language",o),e(t)},en;function Ye(){const e=Qb(vs().baseUrl);return(!en||en.baseUrl!==e)&&(en={baseUrl:e,transport:Lb({baseUrl:e,httpVersion:"1.1",useBinaryFormat:!0,interceptors:[Mb]})}),en.transport}function Le(e){return e?Yd(e).toISOString():null}function gn(e){return e.length>0?e:null}function wr(e,t){const n={earliestAt:Le(e),latestAt:Le(t)};return n.earliestAt||n.latestAt?n:null}function tn(e){return{lockId:e.lockId,ownerId:e.ownerId,status:e.status,myTurn:e.status==="Holding",position:e.position,epoch:Number(e.epoch),leaseExpiresAt:Le(e.leaseExpiresAt),maxHoldExpiresAt:Le(e.maxHoldExpiresAt),holder:e.holderOwnerId.length>0?{ownerId:e.holderOwnerId,label:gn(e.holderLabel)}:null,queueLength:e.queueLength,suggestedPollIntervalMs:e.suggestedPollIntervalMs,suggestedHeartbeatIntervalMs:e.suggestedHeartbeatIntervalMs,serverTime:Le(e.serverTime),requisition:e.requisitionedByOwnerId.length>0?{byOwnerId:e.requisitionedByOwnerId,reason:e.requisitionReason,at:Le(e.requisitionedAt)}:null,checkInWindow:wr(e.checkInEarliestAt,e.checkInLatestAt),turnWindow:wr(e.turnEarliestAt,e.turnLatestAt)}}function Ob(e){return{lockId:e.lockId,holderOwnerId:gn(e.holderOwnerId),holderLabel:gn(e.holderLabel),epoch:Number(e.epoch),leaseExpiresAt:Le(e.leaseExpiresAt),holdStartedAt:Le(e.holdStartedAt),queueLength:e.queueLength}}function Db(e){return e.locks.map(Ob)}var Ze=()=>ve($m,Ye()),lt=()=>ve(ih,Ye()),Me=()=>ve(hh,Ye()),kr=()=>ve(Ah,Ye()),he=()=>ve(Fh,Ye()),_b=()=>ve(kh,Ye()),xe=()=>ve(Dh,Ye()),nn=()=>ve(ob,Ye()),Ct=()=>ve(hb,Ye()),ct=()=>ve(gb,Ye());async function k(e,t){return fb(e,await t)}function $b(){return{listSessions:async e=>k(zh,xe().listSessions({type:e.type,activeOnly:e.activeOnly,includeArchived:e.includeArchived,projectId:e.projectId,projectIds:e.projectIds??[]})),getSession:async e=>k(xh,xe().getSession({sessionId:e})),getSessionMessages:async(e,t={})=>k(_h,nn().getSessionMessages({sessionId:e,page:t.page,pageSize:t.pageSize,historyScope:t.historyScope,order:t.order})),createProposalSession:async e=>k(Jh,xe().openSession({body:D(Qh,e)})),createChatSession:async e=>k(Uh,xe().openChatSession({body:D(Th,e)})),createHagiTaskSession:async e=>k(Hh,xe().startHagiTaskSession({body:D(Oh,e)})),listHagiTaskSchemas:async()=>k(gh,kr().listPresetTaskSchemas({})),getHagiTaskSchema:async e=>k(ph,kr().getPresetTaskSchema({presetTaskId:e})),updateSession:async(e,t)=>k(Kh,xe().saveSession({sessionId:e,body:D(Mh,t)})),deleteSession:async(e,t)=>k(Lh,xe().deleteSession({sessionId:e,deleteFiles:t??!1})),sendMessage:async(e,t)=>k(Ph,nn().postSessionMessage({sessionId:e,body:D(tb,t)})),steerSession:async(e,t)=>k($h,nn().steerSession({sessionId:e,body:D(eb,t)})),optimizeProposal:async(e,t)=>k(ab,Ct().optimizeSessionProposal({sessionId:e,body:D(cb,t)})),generateProposal:async(e,t)=>k(rb,Ct().generateProposal({sessionId:e,body:D(db,t)})),executeProposal:async(e,t)=>k(sb,Ct().executeProposal({sessionId:e,body:D(mb,t??{})})),archiveProposal:async(e,t)=>k(ib,Ct().archiveSession({sessionId:e,body:D(ub,t??{})})),completeProposal:async e=>k(lb,Ct().completeSession({sessionId:e})),submitAnnotations:async(e,t)=>k(qh,nn().submitSessionAnnotations({sessionId:e,body:D(nb,t)})),listProjects:async()=>k(wh,_b().getAggregatedData({forceRefresh:!1})),createProject:async e=>k(Um,Ze().createProject({body:D(Qm,e)})),updateProject:async(e,t)=>k(Jm,Ze().updateProject({id:e,body:D(Mm,t)})),deleteProject:async e=>{await Ze().deleteProject({id:e})},getMonoSpecsManagement:async e=>k(xm,Ze().getMonoSpecsManagement({projectId:e})),saveMonoSpecsManagement:async(e,t)=>k(Hm,Ze().updateMonoSpecsManagement({projectId:e,body:D(Dm,t)})),initializeMonoSpecsManagement:async e=>k(jm,Ze().initializeMonoSpecs({projectId:e})),reloadMonoSpecsManagement:async e=>k(Km,Ze().reloadMonoSpecs({projectId:e})),validateMonoSpecs:async e=>k(Tm,Ze().validateMonoSpecsConfig({body:D(_m,e)})),cloneMonoSpecsRepositories:async(e,t)=>k(zm,Ze().cloneMonoSpecsRepositories({projectId:e,body:D(Om,t)})),removeMonoSpecsRepositoryCheckout:async(e,t,n)=>k(Lm,Ze().removeMonoSpecsRepositoryCheckout({projectId:e,path:t,force:n})),listPlans:async()=>k(sh,Me().listScheduledPlans({})),getPlan:async e=>k(lh,Me().getScheduledPlan({id:e})),createPlan:async e=>k(ch,Me().createScheduledPlan({body:D(Ir,e)})),updatePlan:async(e,t)=>k(dh,Me().updateScheduledPlan({id:e,body:D(Ir,t)})),deletePlan:async e=>{await Me().deleteScheduledPlan({id:e})},runPlan:async e=>k(uh,Me().runScheduledPlan({id:e})),startPlan:async e=>k(mh,Me().startScheduledPlan({id:e})),listVaults:async()=>k(Pm,lt().listVaults({})),createVault:async e=>k(qm,lt().createVault({body:D(ah,e)})),updateVault:async(e,t)=>k(eh,lt().updateVault({id:e,body:D(rh,t)})),deleteVault:async(e,t)=>k(th,lt().deleteVault({id:e,deleteLocalFiles:t??!1})),listVaultFiles:async(e,t)=>k(nh,lt().getVaultFiles({id:e,path:t})),previewVaultFile:async(e,t)=>k(oh,lt().getVaultFilePreview({id:e,path:t})),archiveChat:async e=>k(jh,xe().archiveChatSession({sessionId:e})),listLocalSkills:async()=>k(fh,he().getLocalSkills({})),uninstallLocalSkill:async e=>k(Zh,he().uninstallLocalSkill({body:D(Ih,e)})),setBuiltInSkillAvailability:async e=>k(Rh,he().setBuiltInSkillAvailability({body:D(Yh,e)})),searchSkillGallery:async e=>k(Eh,he().getSkillGallery({query:e})),getSkillGalleryDetail:async(e,t)=>k(Vh,he().getSkillGalleryDetail({id:e,source:t})),getSkillGalleryAudit:async(e,t)=>k(Gh,he().getSkillGalleryAudit({id:e,source:t})),installGallerySkill:async e=>k(yh,he().installSkill({body:D(Ch,e)})),listTrustedSkillProviders:async()=>k(Sh,he().getTrustedSkillProviders({})),upsertTrustedSkillProvider:async e=>k(Nh,he().upsertTrustedSkillProvider({body:D(Xh,e)})),deleteTrustedSkillProvider:async e=>k(vh,he().deleteTrustedSkillProvider({body:D(Bh,e)})),resetTrustedSkillProviders:async()=>k(Wh,he().resetTrustedSkillProviders({})),acquireLock:async e=>tn((await ct().acquireLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,label:e.label,sessionId:e.sessionId})).result),getLockStatus:async(e,t)=>tn((await ct().getLockStatus({lockId:e.lockId,ownerId:e.ownerId,waitSeconds:e.waitSeconds},{signal:t})).result),renewLock:async(e,t)=>tn((await ct().renewLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,epoch:e.epoch===void 0?void 0:BigInt(e.epoch)},{signal:t})).result),releaseLock:async e=>{const t=await ct().releaseLock({lockId:e.lockId,ownerId:e.ownerId,epoch:e.epoch===void 0?void 0:BigInt(e.epoch)});return{lockId:e.lockId,ownerId:e.ownerId,released:t.released,previousStatus:t.previousStatus,holderOwnerId:gn(t.holderOwnerId)}},requisitionLock:async e=>tn((await ct().requisitionLock({lockId:e.lockId,ownerId:e.ownerId,reason:e.reason,label:e.label,sessionId:e.sessionId})).result),listLocks:async e=>Db(await ct().listLocks({prefix:e}))}}function Fs(e){return process.on("SIGINT",e),process.on("SIGTERM",e),()=>{process.off("SIGINT",e),process.off("SIGTERM",e)}}function _o(e){return new Promise(t=>{setTimeout(t,e)})}function U(e){const t=e?.trim();return t||void 0}function J(e,t){const n=U(e);if(!n)throw new N(`${t} is required.`);return n}function so(e){const t=e?.map(n=>U(n)).filter(Boolean);return t&&t.length>0?t:void 0}function ws(e=process.env,t={stdout:n=>{process.stdout.write(n)},stderr:n=>{process.stderr.write(n)}}){return{api:$b(),env:e,io:t,sleep:_o}}function Pb(e){return e.option("--base-url <url>",'Backend API base URL. Overrides HAGI_API_BASE_URL and the "baseUrl" config file entry.').option("--token <token>","Bearer token for backend API calls. Overrides HAGI_API_TOKEN.").option("--lang <lang>","Accept-Language value for backend API calls. Overrides HAGI_API_LANG.")}function I(e){return e.option("--json","Emit deterministic JSON instead of human-readable text.")}function Y(e,t){const n=e.optsWithGlobals();return{api:t.api,env:t.env,io:t.io,outputJson:n.json===!0,runtime:wm({baseUrl:n.baseUrl,token:n.token,lang:n.lang},t.env)}}var qb=5e3,eg=1e3,tg=1e4;function ks(e){return Math.min(eg*2**Math.max(0,e-1),tg)}async function lo(e,t,n){if(!n){await e.sleep(t);return}if(n.aborted)return;let o=()=>{};const a=new Promise(r=>{o=r,n.addEventListener("abort",o,{once:!0})});try{await Promise.race([e.sleep(t),a])}finally{n.removeEventListener("abort",o)}}function ng(e,t){return e.position!==t.position||e.holder?.ownerId!==t.holder?.ownerId}async function og(e){const{read:t,clock:n,signal:o}=e,a=n.now(),r=e.timeoutSeconds*1e3;let i=e.initial,s=0,l=0;const c=u=>({outcome:u,status:i,polls:s,elapsedSeconds:Math.round((n.now()-a)/100)/10});for(;;){if(o?.aborted)return c("cancelled");const u=r-(n.now()-a);if(u<=0)return c("timeout");const h=Math.min(20,Math.max(1,Math.ceil(u/1e3))),f=n.now();let Z;try{Z=await t(h,o)}catch(X){if(o?.aborted)return c("cancelled");if(!Vs(X))throw X;l+=1,await lo(n,Math.min(ks(l),u),o);continue}l=0,s+=1;const G=i;if(i=Z,Z.status==="Holding")return c("holding");if(Z.status!=="Queued")return c("lost");const S=ng(G,Z);if(S&&e.onChange?.(Z),!S&&n.now()-f<1e3){const X=Z.suggestedPollIntervalMs>0?Z.suggestedPollIntervalMs:qb;await lo(n,Math.min(X,Math.max(0,r-(n.now()-a))),o)}}}var ag="HAGI_LOCK_OWNER",rg="HAGI_SESSION_ID";function bt(e){const t=e?.trim();return t||void 0}function ig(e,t){const n=bt(e)??bt(t.HAGI_LOCK_OWNER)??bt(t.HAGI_SESSION_ID);if(!n)throw new N(`No lock owner. Pass your own session ID as --owner <session-id>, or set ${ag} (or ${rg}). The CLI does not invent an owner ID.`);return n}function sg(e){const t=bt(e.lockId),n=bt(e.server),o=bt(e.game);if(t&&(n||o))throw new N("Use either --lock-id or the pair --server and --game, not both.");if(t)return t;if(n&&o)return`${n}/${o}`;throw n||o?new N("--server and --game must be given together."):new N("A lock is required: pass --lock-id <id>, or --server <name> and --game <name>.")}function St(e){return e.option("--lock-id <id>","Lock to use, for example eu-1/duckov. Alternative to --server and --game.").option("--server <name>","Server name; with --game, the lock is <server>/<game>.").option("--game <name>","Game name; with --server, the lock is <server>/<game>.").option("--owner <id>","Owner ID: your own session ID. Defaults to HAGI_LOCK_OWNER, then HAGI_SESSION_ID.")}function Nt(e,t){return{lockId:sg(e),ownerId:ig(e.owner,t)}}function Vt(e,t,n){if(e===void 0)return;const o=e.trim();if(!/^\d+$/.test(o))throw new N(`${t} must be a whole number of seconds.`);const a=Number(o);if(a<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return a}function $o(e){if(e!==void 0){if(!/^\d+$/.test(e.trim()))throw new N("--epoch must be a whole number, the epoch an acquire printed.");return Number(e.trim())}}async function vt(e){try{return await e()}catch(t){throw Es(t)??t}}function Us(e){return{now:e.now??Date.now,sleep:e.sleep??_o}}function lg(e,t){St(I(e.command("acquire").description("Take the lock or join its queue. Without --wait: one call, exit 0 for Holding and Queued. With --wait: wait for the turn, exit 0 only when Holding. There is no force option."))).option("--wait","Keep waiting in the queue (long-poll) until you hold the lock. Run it as a continuous watcher.").option("--timeout <seconds>","With --wait: give up after this many seconds (default 900), release the queue entry, exit code 31.").option("--lease-seconds <n>","Requested lease length in seconds (the backend clamps it to 30 to 600).").option("--label <text>","Short label shown to others as the holder (at most 200 characters).").action(async function(o){if(!o.wait&&o.timeout!==void 0)throw new N("--timeout needs --wait.");const a=o.wait?Vt(o.timeout,"--timeout",1)??900:void 0,r=Vt(o.leaseSeconds,"--lease-seconds",1),i=Y(this,t),s=Nt(o,i.env),l=await vt(()=>i.api.acquireLock({...s,leaseSeconds:r,label:U(o.label)})),c=S=>i.io.stdout(i.outputJson?W(S):pt(S,"acquire"));if(a===void 0||l.status==="Holding"){c(l);return}if(l.status!=="Queued")throw c(l),new qe(`Owner ${s.ownerId} neither holds nor queues for lock ${s.lockId} (${l.status}).`,{reported:!0});i.outputJson||c(l);const u=new AbortController,h=(t.onInterrupt??Fs)(()=>u.abort());let f;try{f=await og({initial:l,read:(S,X)=>i.api.getLockStatus({...s,waitSeconds:S},X),timeoutSeconds:a,clock:Us(t),signal:u.signal,onChange:S=>{i.outputJson||i.io.stdout(Ml(S))}})}finally{h()}let Z;(f.outcome==="timeout"||f.outcome==="cancelled")&&(Z=await i.api.releaseLock(s).then(()=>!0,()=>!1));const G={outcome:f.outcome,polls:f.polls,elapsedSeconds:f.elapsedSeconds,released:Z};switch(i.outputJson?i.io.stdout(W({...f.status,wait:G})):i.io.stdout(f.outcome==="holding"?pt(f.status,"status"):Ol(f,Z)),f.outcome){case"timeout":throw new Ho(`Timed out after ${f.elapsedSeconds}s waiting for lock ${s.lockId}; last status ${f.status.status}.`);case"cancelled":throw new x(`Interrupted while waiting for lock ${s.lockId}; the lock was not acquired.`);case"lost":throw new qe(`The queue entry for lock ${s.lockId} was dropped (${f.status.status}).`,{reported:!0});default:}})}var cg=6e4,Ur=[30*6e4,5*6e4],kt="Stop using the resource now.";function Jr(e,t){switch(t.status){case"Requisitioned":{const n=t.requisition;return`Lock ${e} LOST: requisitioned by ${n?.byOwnerId??"another owner"}${n?.at?` at ${n.at}`:""}, reason: ${n?.reason??"not given"}. ${kt}`}case"Expired":return`Lock ${e} LOST: the lease expired or the hard cap passed. ${kt}`;case"Queued":return`Lock ${e} LOST: this owner is queued at position ${t.position}, not holding. ${kt}`;default:return`Lock ${e} LOST: the backend has no hold for this owner (${t.status}). ${kt}`}}function xr(e,t,n){if(!t)return null;const o=Date.parse(t),a=n?Date.parse(n):NaN;return Number.isNaN(a)?o:e.now()+(o-a)}async function dg(e){const{lockId:t,ownerId:n,api:o,clock:a,signal:r}=e;let i=e.epoch,s=e.intervalSeconds===void 0?void 0:e.intervalSeconds*1e3,l=!1,c=0,u=a.now(),h=null,f=null;const Z=new Set;let G=0,S=null,X=!1,y=!1;const d=(p,g,A)=>e.emit({kind:p,message:g,errorCode:A}),m=()=>{if(f===null)return;const p=Ur.filter(A=>!Z.has(A)&&a.now()>=f-A);if(p.length===0)return;p.forEach(A=>Z.add(A));const g=Math.min(...p)/6e4;d("cap-warning",`Lock ${t}: the hard cap (${new Date(f).toISOString()}) is about ${g} minutes away. The lock is taken back at the cap even while heartbeating: finish and release before then.`)};for(;;){if(r.aborted)return{outcome:"stopped",beats:c};let p=u;if(f!==null)for(const A of Ur)Z.has(A)||(p=Math.min(p,f-A));if(p>a.now()&&(await lo(a,p-a.now(),r),r.aborted))return{outcome:"stopped",beats:c};if(m(),a.now()<u)continue;let g;try{if(i===void 0){const A=await o.getLockStatus({lockId:t,ownerId:n},r);if(A.status!=="Holding"){const V=`Refusing to start: owner ${n} does not hold lock ${t}. ${Jr(t,A)}`;return d("refused",V),{outcome:"refused",message:V,beats:c}}i=A.epoch}g=await o.renewLock({lockId:t,ownerId:n,epoch:i,leaseSeconds:e.leaseSeconds},r)}catch(A){if(r.aborted)return{outcome:"stopped",beats:c};const V=Es(A);if(V){const K=`Lock ${t} LOST: ${V.message}${/stop using/i.test(V.message)?"":` ${kt}`}`;return d("lost",K,V.errorCode),{outcome:"lost",message:K,beats:c}}if(!Vs(A))throw A;G+=1;const C=a.now();S??=C,!X&&C-S>=cg&&(X=!0,d("outage",`Backend unreachable for ${Math.round((C-S)/1e3)}s; still retrying. The lock is only lost when the backend says so, but it is released after the lease runs out.`)),!y&&h!==null&&C>=h&&(y=!0,d("maybe-lost",`Lock ${t} may already be lost: the last known lease deadline passed during the outage.`)),u=a.now()+ks(G);continue}if(g.status!=="Holding"){const A=Jr(t,g);return d("lost",A),{outcome:"lost",message:A,beats:c}}c+=1,S!==null&&(X&&d("recovered",`Backend reachable again after ${Math.round((a.now()-S)/1e3)}s; heartbeat resumed.`),S=null,X=!1,y=!1),G=0,h=xr(a,g.leaseExpiresAt,g.serverTime),f=xr(a,g.maxHoldExpiresAt,g.serverTime)??f,s??=g.suggestedHeartbeatIntervalMs>0?g.suggestedHeartbeatIntervalMs:120*1e3,l?e.verbose&&d("beat",`Heartbeat ok: valid until ${g.leaseExpiresAt??"unknown"}, hard cap ${g.maxHoldExpiresAt??"unknown"}.`):(l=!0,d("started",`Heartbeat started for lock ${t} as ${n} (epoch ${g.epoch}): renewing every ${s/1e3}s, valid until ${g.leaseExpiresAt??"unknown"}, hard cap ${g.maxHoldExpiresAt??"unknown"}. Quiet unless something needs you.`)),u=a.now()+s}}function ug(e,t){St(I(e.command("heartbeat").description("Keep a held lock alive: renew now and then every interval. Long-running and quiet on success; run it under a watcher. Exit code 32 when the lock is lost. Stopping it (SIGINT or SIGTERM) exits 0 and does not release."))).option("--epoch <n>","Epoch of your grant. Without it, the epoch of the first status read is used, and only while you hold the lock.").option("--interval <seconds>","Seconds between renewals (default: the interval the backend suggests, 120).").option("--lease-seconds <n>","Requested lease length in seconds on every renewal (the backend clamps it to 30 to 600).").option("--verbose","Also print one line per successful renewal.").action(async function(o){const a=$o(o.epoch),r=Vt(o.interval,"--interval",1),i=Vt(o.leaseSeconds,"--lease-seconds",1),s=Y(this,t),l=Nt(o,s.env),c=new AbortController,u=(t.onInterrupt??Fs)(()=>c.abort());try{const h=await dg({...l,epoch:a,intervalSeconds:r,leaseSeconds:i,verbose:o.verbose===!0,api:s.api,clock:Us(t),signal:c.signal,emit:f=>{s.io.stdout(s.outputJson?`${JSON.stringify({event:f.kind,...l,message:f.message,errorCode:f.errorCode})}
|
|
59
|
-
`:`${
|
|
60
|
-
`)}});if(h.outcome!=="stopped")throw new
|
|
58
|
+
`}var Jm="--base-url",xm="HAGI_API_BASE_URL";function Ee(e){const t=e?.trim();return t||void 0}function Do(e=process.env){return(0,R.join)(Ee(e.XDG_CONFIG_HOME)??(0,R.join)((0,Tl.homedir)(),".config"),"hagi","config.json")}function Ws(e){const t=Do(e);let n;try{n=(0,Y.readFileSync)(t,"utf8")}catch(a){if(a.code==="ENOENT")return;throw new N(`Cannot read CLI config file ${t}: ${a instanceof Error?a.message:String(a)}`)}let o;try{o=JSON.parse(n)}catch{throw new N(`CLI config file ${t} is not valid JSON.`)}return o&&typeof o=="object"&&!Array.isArray(o)?o:{}}function Km(e=process.env){const t=Ws(e)?.baseUrl;return typeof t=="string"?Ee(t):void 0}function zm(e=process.env){const t=Ws(e)?.steer;if(t===void 0||typeof t=="boolean")return t;throw new N(`CLI config file ${Do(e)} has a "steer" value that is not true or false.`)}function Lm(e={},t=process.env){const n=Ee(e.baseUrl)??Ee(t.HAGI_API_BASE_URL)??Km(t);if(!n)throw new N(`No backend base URL is configured. Set ${Jm} <url>, the ${xm} environment variable, or "baseUrl" in ${Do(t)}.`);return{baseUrl:n,token:Ee(e.token)??Ee(t.HAGI_API_TOKEN),lang:Ee(e.lang)??Ee(t.HAGI_API_LANG)}}var jt;function jm(e={},t=process.env){return jt=Lm(e,t),jt}function ys(){if(!jt)throw new N("The backend connection is not configured. Resolve the API runtime before calling the backend.");return jt}function Hm(){return Ee(jt?.baseUrl)}var se=oe("CiFoYWdpY29kZS9wcm9qZWN0L3YxL3Byb2plY3QucHJvdG8SE2hhZ2ljb2RlLnByb2plY3QudjEiSwoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSMwoEYm9keRgBIAEoCzIlLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdER0byJIChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USLwoGcmVzdWx0GAEgASgLMh8uaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0RHRvIhoKGENyZWF0ZURlbW9Qcm9qZWN0UmVxdWVzdCJMChlDcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEi8KBnJlc3VsdBgBIAEoCzIfLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdER0byJXChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIzCgRib2R5GAIgASgLMiUuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0RHRvIkgKFVVwZGF0ZVByb2plY3RSZXNwb25zZRIvCgZyZXN1bHQYASABKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REdG8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlIkUKHkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg8KB3JlZnJlc2gYAiABKAgiZwofR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzUmVzcG9uc2VEdG8iPgooR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInsKKUdldFByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8ikAEKKVNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSTwoEYm9keRgCIAEoCzJBLmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3REdG8ifAoqU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8iMwodR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJdCh5HZXRNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvIiwKFlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJWChdSZWxvYWRNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8igAEKIUNsb25lTW9ub1NwZWNzUmVwb3NpdG9yaWVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkcKBGJvZHkYAiABKAsyOS5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yaWVzUmVxdWVzdER0byJwCiJDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0byJpCihSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoEcGF0aBgCIAEoCUgAiAEBEg0KBWZvcmNlGAMgASgIQgcKBV9wYXRoInQKKVJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0byIwChpJbml0aWFsaXplTW9ub1NwZWNzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIloKG0luaXRpYWxpemVNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8ifgogVXBkYXRlTW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRJGCgRib2R5GAIgASgLMjguaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0byJgCiFVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvImcKH0dldFByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIcCg9yZXBvc2l0b3J5X3BhdGgYAiABKAlIAIgBAUISChBfcmVwb3NpdG9yeV9wYXRoImEKIEdldFByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdERlc2lnbkRvY3VtZW50RHRvIoABCiBTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkgKBGJvZHkYAiABKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8ibAohU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3VsdER0byI2CiBHZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJImMKIUdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXNwb25zZRI+CgZyZXN1bHQYASABKAsyLi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhEdG8iRwojR2V0UHJvamVjdERlc2lnblNpdGVEb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRzbHVnGAIgASgJImkKJEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlRG9jdW1lbnREdG8ieQocVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKC2JyYW5jaF9uYW1lGAIgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgDIAEoCUgAiAEBQhIKEF9yZXBvc2l0b3J5X3BhdGgiYQodVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucHJvamVjdC52MS5CcmFuY2hWYWxpZGF0aW9uUmVzcG9uc2VEdG8iKgoaVmFsaWRhdGVQcm9qZWN0UGF0aFJlcXVlc3QSDAoEcGF0aBgBIAEoCSJdChtWYWxpZGF0ZVByb2plY3RQYXRoUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5QYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvIlcKGlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0EjkKBGJvZHkYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc1JlcXVlc3REdG8iWwobU2NhbkdpdFJlcG9zaXRvcmllc1Jlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnByb2plY3QudjEuU2NhbkdpdFJlcG9zUmVzcG9uc2VEdG8iYAoeVmFsaWRhdGVNb25vU3BlY3NDb25maWdSZXF1ZXN0Ej4KBGJvZHkYASABKAsyMC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzUmVxdWVzdER0byJkCh9WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAEoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVNb25vU3BlY3NSZXNwb25zZUR0byItChdHZXRQcm9qZWN0VmF1bHRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIlUKGEdldFByb2plY3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIqABCh5PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgCIAEoCUgAiAEBEhUKCHN1Yl9wYXRoGAMgASgJSAGIAQFCHQobX2N1cnJlbnRfaW50ZXJmYWNlX2xhbmd1YWdlQgsKCV9zdWJfcGF0aCJlCh9PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnByb2plY3QudjEuVnNDb2RlU2VydmVyTGF1bmNoUmVzcG9uc2VEdG8iNQofR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIl4KIEdldFByb2plY3RHaXRXYXRjaFN0YXR1c1Jlc3BvbnNlEjoKBnJlc3VsdBgBIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdEdpdFdhdGNoU3RhdHVzIkAKDlN1YlJlcG9JbmZvRHRvEgwKBG5hbWUYASABKAkSDAoEcGF0aBgCIAEoCRISCgpoYXNfYWdlbnRzGAMgASgIIvEDCgpQcm9qZWN0RHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjEKDWNyZWF0aW9uX3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKFmxhc3RfbW9kaWZpY2F0aW9uX3RpbWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWlzX21vbm9fc3BlY3MYByABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAggASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgJIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgKIAEoCEgDiAEBEj0KEHN1Yl9yZXBvc2l0b3JpZXMYCyADKAsyIy5oYWdpY29kZS5wcm9qZWN0LnYxLlN1YlJlcG9JbmZvRHRvQg4KDF9kZXNjcmlwdGlvbkIVChNfbW9ub19zcGVjc192ZXJzaW9uQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiWAoQQ3JlYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iWAoQVXBkYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24i5gIKG1Byb2plY3RTdGFuZGFyZFdvcmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIWCglwYXJlbnRfaWQYAyABKAlIAIgBARIPCgdlbmFibGVkGAQgASgIEg0KBW9yZGVyGAUgASgFEhMKC3NvdXJjZV90eXBlGAYgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAcgASgJEgwKBHRhZ3MYCCADKAkSFQoIbGFuZ3VhZ2UYCSABKAlIAYgBARJQCghtZXRhZGF0YRgKIAMoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIu0CChxQcm9qZWN0U3RhbmRhcmRXb3JkUGhyYXNlRHRvEhAKCGdyb3VwX2lkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIWCg5zdWJtaXR0ZWRfdGV4dBgEIAEoCRIPCgdlbmFibGVkGAUgASgIEg0KBW9yZGVyGAYgASgFEhMKC3NvdXJjZV90eXBlGAcgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAggASgJEgwKBHRhZ3MYCSADKAkSFQoIbGFuZ3VhZ2UYCiABKAlIAIgBARJRCghtZXRhZGF0YRgLIAMoCzI/LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFBocmFzZUR0by5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUILCglfbGFuZ3VhZ2UinAEKHFByb2plY3RTdGFuZGFyZFdvcmRTb3VyY2VEdG8SDAoEdHlwZRgBIAEoCRIVCg1yZWxhdGl2ZV9wYXRoGAIgASgJEhEKCWZ1bGxfcGF0aBgDIAEoCRIOCgZleGlzdHMYBCABKAgSNAoQbGFzdF9tb2RpZmllZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiygEKIVByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGAoLc291cmNlX3R5cGUYBCABKAlIAIgBARIaCg1yZWxhdGl2ZV9wYXRoGAUgASgJSAGIAQESEgoFZmllbGQYBiABKAlIAogBAUIOCgxfc291cmNlX3R5cGVCEAoOX3JlbGF0aXZlX3BhdGhCCAoGX2ZpZWxkIr0DCh9Qcm9qZWN0U3RhbmRhcmRXb3Jkc1Jlc3BvbnNlRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKZnJvbV9jYWNoZRgFIAEoCBJCCgdzb3VyY2VzGAYgAygLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3JkU291cmNlRHRvEkAKBmdyb3VwcxgHIAMoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvEkIKB3BocmFzZXMYCCADKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRQaHJhc2VEdG8SSwoLZGlhZ25vc3RpY3MYCSADKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0byK6AgolUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZVBocmFzZUR0bxILCgNrZXkYASABKAkSDQoFbGFiZWwYAiABKAkSFgoOc3VibWl0dGVkX3RleHQYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSACIAQESWgoIbWV0YWRhdGEYCCADKAsySC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCwoJX2xhbmd1YWdlIpIDCiRQcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSFgoJcGFyZW50X2lkGAMgASgJSACIAQESDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSAGIAQESWQoIbWV0YWRhdGEYCCADKAsyRy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVHcm91cER0by5NZXRhZGF0YUVudHJ5EksKB3BocmFzZXMYCSADKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8aLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIsQBCiVQcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEhMKC3NvdXJjZV90eXBlGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhMKC2dyb3VwX2NvdW50GAQgASgFEhQKDHBocmFzZV9jb3VudBgFIAEoBRI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLWAQokUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhMKC3NvdXJjZV90eXBlGAIgASgJEhUKDXJlbGF0aXZlX3BhdGgYAyABKAkSEQoJZnVsbF9wYXRoGAQgASgJEg4KBmV4aXN0cxgFIAEoCBI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglzaWduYXR1cmUYByABKAkilgEKIVByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxITCgtncm91cF9jb3VudBgBIAEoBRIUCgxwaHJhc2VfY291bnQYAiABKAUSHAoUZGlzYWJsZWRfZW50cnlfY291bnQYAyABKAUSEQoJdGFnX2NvdW50GAQgASgFEhUKDXNvdXJjZV9zdGF0dXMYBSABKAki8wQKKVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudERvY3VtZW50RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASSQoGZ3JvdXBzGAUgAygLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SQgoHc291cmNlcxgGIAMoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFNvdXJjZUR0bxJaChZ1c2VyX292ZXJsYXlfc3VtbWFyaWVzGAcgAygLMjouaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEkoKCnN0YXRpc3RpY3MYCCABKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxJRCg5zb3VyY2VfdmVyc2lvbhgJIAEoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEksKC2RpYWdub3N0aWNzGAogAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0RpYWdub3N0aWNEdG8i5AEKLFNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEkkKBmdyb3VwcxgCIAMoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZUdyb3VwRHRvElEKDnNvdXJjZV92ZXJzaW9uGAMgASgLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc1NvdXJjZVZlcnNpb25EdG8iVQojTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJEhIKCnZhbHVlX2tpbmQYAyABKAki5gQKIE1vbm9TcGVjc01hbmFnZW1lbnRSZXBvc2l0b3J5RHRvEgwKBG5hbWUYASABKAkSEQoEY29kZRgCIAEoCUgAiAEBEgwKBHBhdGgYAyABKAkSEAoDdXJsGAQgASgJSAGIAQESGQoMZGlzcGxheV9uYW1lGAUgASgJSAKIAQESEQoEdHlwZRgGIAEoCUgDiAEBEhEKBGljb24YByABKAlIBIgBARIQCghvcHRpb25hbBgIIAEoCBIMCgR0YWdzGAkgAygJEkoKCG1ldGFkYXRhGAogAygLMjguaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50TWV0YWRhdGFFbnRyeUR0bxIZChFpc192YWxpZF9naXRfcmVwbxgLIAEoCBITCgZicmFuY2gYDCABKAlIBYgBARIfChdoYXNfdW5jb21taXR0ZWRfY2hhbmdlcxgNIAEoCBIdChV1bnB1c2hlZF9jb21taXRfY291bnQYDiABKAUSGwoTaGFzX3RyYWNraW5nX2JyYW5jaBgPIAEoCBI1Cg90cmFja2luZ19icmFuY2gYECABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSEwoLYWhlYWRfY291bnQYESABKAUSFAoMYmVoaW5kX2NvdW50GBIgASgFEhcKCnN5bmNfc3RhdGUYEyABKAlIBogBAUIHCgVfY29kZUIGCgRfdXJsQg8KDV9kaXNwbGF5X25hbWVCBwoFX3R5cGVCBwoFX2ljb25CCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSKiAgoWTW9ub1NwZWNzTWFuYWdlbWVudER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhMKC2NvbmZpZ19wYXRoGAMgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYBCABKAgSFAoMeWFtbF9wcmV2aWV3GAUgASgJEksKDHJlcG9zaXRvcmllcxgGIAMoCzI1LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudFJlcG9zaXRvcnlEdG8SSgoIbWV0YWRhdGEYByADKAsyOC5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnRNZXRhZGF0YUVudHJ5RHRvImMKIU1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yeVJlc3VsdER0bxIMCgRwYXRoGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQFCCgoIX21lc3NhZ2UicAolTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0bxJHCgdyZXN1bHRzGAEgAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDbG9uZVJlcG9zaXRvcnlSZXN1bHREdG8iTwokTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXF1ZXN0RHRvEg0KBXBhdGhzGAEgAygJEhgKEGluY2x1ZGVfb3B0aW9uYWwYAiABKAgiZQoiTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0bxIMCgRwYXRoGAEgASgJEg8KB3JlbW92ZWQYAiABKAgSFAoHbWVzc2FnZRgDIAEoCUgAiAEBQgoKCF9tZXNzYWdlIoQCCiNVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYAyABKAgSSwoMcmVwb3NpdG9yaWVzGAQgAygLMjUuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50UmVwb3NpdG9yeUR0bxJKCghtZXRhZGF0YRgFIAMoCzI4LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8inQEKGFByb2plY3REZXNpZ25Eb2N1bWVudER0bxIMCgRwYXRoGAEgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgCIAEoCUgAiAEBEg8KB2NvbnRlbnQYAyABKAkSDgoGZXhpc3RzGAQgASgIEhQKB3ZlcnNpb24YBSABKAlIAYgBAUISChBfcmVwb3NpdG9yeV9wYXRoQgoKCF92ZXJzaW9uIoYBCiJTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzdWx0RHRvEgwKBHBhdGgYASABKAkSHAoPcmVwb3NpdG9yeV9wYXRoGAIgASgJSACIAQESDwoHY3JlYXRlZBgDIAEoCBIPCgd2ZXJzaW9uGAQgASgJQhIKEF9yZXBvc2l0b3J5X3BhdGgingEKJVVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8SHAoPcmVwb3NpdG9yeV9wYXRoGAEgASgJSACIAQESDwoHY29udGVudBgCIAEoCRIdChBleHBlY3RlZF92ZXJzaW9uGAMgASgJSAGIAQFCEgoQX3JlcG9zaXRvcnlfcGF0aEITChFfZXhwZWN0ZWRfdmVyc2lvbiLAAQoeUHJvamVjdERlc2lnblNpdGVJbmRleEVudHJ5RHRvEgwKBHNsdWcYASABKAkSDQoFdGl0bGUYAiABKAkSDwoHc3VtbWFyeRgDIAEoCRISCgpkZXRhaWxfdXJsGAQgASgJEhsKE2Rlc2lnbl9kb3dubG9hZF91cmwYBSABKAkSHwoXcHJldmlld19saWdodF9pbWFnZV91cmwYBiABKAkSHgoWcHJldmlld19kYXJrX2ltYWdlX3VybBgHIAEoCSK+AgoZUHJvamVjdERlc2lnblNpdGVJbmRleER0bxITCgtjYXRhbG9nX3VybBgBIAEoCRIVCg1zb3VyY2Vfc3RhdHVzGAIgASgJEhMKC2VudHJ5X2NvdW50GAMgASgFEkQKB2VudHJpZXMYBCADKAsyMy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhFbnRyeUR0bxIaCg1jYWNoZV9jb250cm9sGAUgASgJSACIAQESEgoFZV90YWcYBiABKAlIAYgBARIaCg1sYXN0X21vZGlmaWVkGAcgASgJSAKIAQESFAoHZXhwaXJlcxgIIAEoCUgDiAEBQhAKDl9jYWNoZV9jb250cm9sQggKBl9lX3RhZ0IQCg5fbGFzdF9tb2RpZmllZEIKCghfZXhwaXJlcyKZAgocUHJvamVjdERlc2lnblNpdGVEb2N1bWVudER0bxIMCgRzbHVnGAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB2NvbnRlbnQYAyABKAkSEgoKZGV0YWlsX3VybBgEIAEoCRIbChNkZXNpZ25fZG93bmxvYWRfdXJsGAUgASgJEhoKDWNhY2hlX2NvbnRyb2wYBiABKAlIAIgBARISCgVlX3RhZxgHIAEoCUgBiAEBEhoKDWxhc3RfbW9kaWZpZWQYCCABKAlIAogBARIUCgdleHBpcmVzGAkgASgJSAOIAQFCEAoOX2NhY2hlX2NvbnRyb2xCCAoGX2VfdGFnQhAKDl9sYXN0X21vZGlmaWVkQgoKCF9leHBpcmVzImoKG0JyYW5jaFZhbGlkYXRpb25SZXNwb25zZUR0bxIOCgZleGlzdHMYASABKAgSEAoIaXNfdmFsaWQYAiABKAgSFAoMaXNfYXZhaWxhYmxlGAMgASgIEhMKC2JyYW5jaF9uYW1lGAQgASgJIogDChlQYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvEhAKCGlzX3ZhbGlkGAEgASgIEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhYKCXBhdGhfdHlwZRgEIAEoCUgAiAEBEiIKFWhhc19tb25vX3NwZWNzX2NvbmZpZxgFIAEoCEgBiAEBEiMKFm1vbm9fc3BlY3NfY29uZmlnX3BhdGgYBiABKAlIAogBARImChltb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5GAcgASgJSAOIAQESKwoebW9ub19zcGVjc19jb21taXRfd2hlbl9hcmNoaXZlGAggASgISASIAQFCDAoKX3BhdGhfdHlwZUIYChZfaGFzX21vbm9fc3BlY3NfY29uZmlnQhkKF19tb25vX3NwZWNzX2NvbmZpZ19wYXRoQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiVgoKR2l0UmVwb0R0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSFQoNcmVsYXRpdmVfcGF0aBgDIAEoCRIVCg1pc19tb25vX3NwZWNzGAQgASgIIqQBChdTY2FuR2l0UmVwb3NSZXNwb25zZUR0bxI1CgxyZXBvc2l0b3JpZXMYASADKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLkdpdFJlcG9EdG8SEwoLdG90YWxfY291bnQYAiABKAUSDwoHc3VjY2VzcxgDIAEoCBIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UijwEKFlNjYW5HaXRSZXBvc1JlcXVlc3REdG8SEQoJcm9vdF9wYXRoGAEgASgJEhEKCW1heF9kZXB0aBgCIAEoBRIWCg5leGNsdWRlX2hpZGRlbhgDIAEoCBIdChVtYXhfZm9sZGVyc19wZXJfbGV2ZWwYBCABKAUSGAoQZXhjbHVkZV9wYXR0ZXJucxgFIAMoCSJEChlNb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEg8KB3ZlcnNpb24YASABKAkSFgoOcmVwb19kaXJlY3RvcnkYAiABKAkikgEKHFZhbGlkYXRlTW9ub1NwZWNzUmVzcG9uc2VEdG8SEAoIaXNfdmFsaWQYASABKAgSPgoGY29uZmlnGAIgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEhAKCHdhcm5pbmdzGAMgAygJEg4KBmVycm9ycxgEIAMoCSIzChtWYWxpZGF0ZU1vbm9TcGVjc1JlcXVlc3REdG8SFAoMcHJvamVjdF9wYXRoGAEgASgJInwKG1ZhdWx0Qm9vdHN0cmFwRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGgoNcmVsYXRpdmVfcGF0aBgEIAEoCUgAiAEBQhAKDl9yZWxhdGl2ZV9wYXRoIt8CCgxWYXVsdEl0ZW1EdG8SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEhUKDXBoeXNpY2FsX3BhdGgYBCABKAkSFAoHZ2l0X3VybBgFIAEoCUgAiAEBEjIKDmNyZWF0ZWRfYXRfdXRjGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCg51cGRhdGVkX2F0X3V0YxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASTwoVYm9vdHN0cmFwX2RpYWdub3N0aWNzGAggAygLMjAuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEJvb3RzdHJhcERpYWdub3N0aWNEdG8SDQoFc2NvcGUYCSABKAkSFwoKcHJvamVjdF9pZBgKIAEoCUgBiAEBQgoKCF9naXRfdXJsQg0KC19wcm9qZWN0X2lkIn4KFFZhdWx0TGlzdFJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKBWl0ZW1zGAIgAygLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8inwQKHFZzQ29kZVNlcnZlclJ1bnRpbWVTdGF0dXNEdG8SDgoGc3RhdHVzGAEgASgJEhsKE2FjdGl2ZV9jYXBhYmlsaXRpZXMYAiADKAkSEQoEaG9zdBgDIAEoCUgAiAEBEhwKD2NvbmZpZ3VyZWRfcG9ydBgEIAEoBUgBiAEBEhsKDmVmZmVjdGl2ZV9wb3J0GAUgASgFSAKIAQESFQoIYmFzZV91cmwYBiABKAlIA4gBARIWCglhdXRoX21vZGUYByABKAlIBIgBARITCgZzb3VyY2UYCCABKAlIBYgBARIVCg1zb3VyY2VfbG9ja2VkGAkgASgIEhIKCmhhc19zZWNyZXQYCiABKAgSGgoNc2VjcmV0X3NvdXJjZRgLIAEoCUgGiAEBEjkKFWxhc3RfYXR0ZW1wdGVkX2F0X3V0YxgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKbGFzdF9lcnJvchgNIAEoCUgHiAEBEhsKDnN0YXR1c19tZXNzYWdlGA4gASgJSAiIAQFCBwoFX2hvc3RCEgoQX2NvbmZpZ3VyZWRfcG9ydEIRCg9fZWZmZWN0aXZlX3BvcnRCCwoJX2Jhc2VfdXJsQgwKCl9hdXRoX21vZGVCCQoHX3NvdXJjZUIQCg5fc2VjcmV0X3NvdXJjZUINCgtfbGFzdF9lcnJvckIRCg9fc3RhdHVzX21lc3NhZ2UinAIKHVZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvEhIKCmxhdW5jaF91cmwYASABKAkSHQoQY29ubmVjdGlvbl90b2tlbhgCIAEoCUgAiAEBEhEKCW9wZW5fbW9kZRgDIAEoCRJCCgdydW50aW1lGAQgASgLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Wc0NvZGVTZXJ2ZXJSdW50aW1lU3RhdHVzRHRvEhgKC2luc3RhbmNlX2lkGAUgASgJSAGIAQESMgoOZXhwaXJlc19hdF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhMKEV9jb25uZWN0aW9uX3Rva2VuQg4KDF9pbnN0YW5jZV9pZCKXAgoVUHJvamVjdEdpdFdhdGNoU3RhdHVzEh4KFm1vbml0b3JlZF9yZXBvc2l0b3JpZXMYASADKAkSNAoQbGFzdF9zY2FuX2F0X3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoQbmV4dF9zY2FuX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQcmVwb3NpdG9yeV9jb3VudBgEIAEoBRISCgppc19ydW5uaW5nGAUgASgIEiIKGm1heF9tb25pdG9yZWRfcmVwb3NpdG9yaWVzGAYgASgFEiAKGGdpdF9hdXRvX3JlZnJlc2hfZW5hYmxlZBgHIAEoCDL1GAoOUHJvamVjdFNlcnZpY2USZgoNQ3JlYXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJyChFDcmVhdGVEZW1vUHJvamVjdBItLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlRGVtb1Byb2plY3RSZXF1ZXN0Gi4uaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEmYKDVVwZGF0ZVByb2plY3QSKS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USZgoNRGVsZXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRKEAQoXR2V0UHJvamVjdFN0YW5kYXJkV29yZHMSMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRKiAQohR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50Ej0uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0Gj4uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKlAQoiU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudBI+LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3QaPy5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKBAQoWR2V0TW9ub1NwZWNzTWFuYWdlbWVudBIyLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QaMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldE1vbm9TcGVjc01hbmFnZW1lbnRSZXNwb25zZRJsCg9SZWxvYWRNb25vU3BlY3MSKy5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QaLC5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1Jlc3BvbnNlEo0BChpDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllcxI2LmhhZ2ljb2RlLnByb2plY3QudjEuQ2xvbmVNb25vU3BlY3NSZXBvc2l0b3JpZXNSZXF1ZXN0GjcuaGFnaWNvZGUucHJvamVjdC52MS5DbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEqIBCiFSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXQSPS5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlcXVlc3QaPi5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEngKE0luaXRpYWxpemVNb25vU3BlY3MSLy5oYWdpY29kZS5wcm9qZWN0LnYxLkluaXRpYWxpemVNb25vU3BlY3NSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5Jbml0aWFsaXplTW9ub1NwZWNzUmVzcG9uc2USigEKGVVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2UShwEKGEdldFByb2plY3REZXNpZ25Eb2N1bWVudBI0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBo1LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGVNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5TYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGUdldFByb2plY3REZXNpZ25TaXRlSW5kZXgSNS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVzcG9uc2USkwEKHEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnQSOC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXF1ZXN0GjkuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZURvY3VtZW50UmVzcG9uc2USfgoVVmFsaWRhdGVQcm9qZWN0QnJhbmNoEjEuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXF1ZXN0GjIuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXNwb25zZRJ4ChNWYWxpZGF0ZVByb2plY3RQYXRoEi8uaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RQYXRoUmVxdWVzdBowLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVQcm9qZWN0UGF0aFJlc3BvbnNlEngKE1NjYW5HaXRSZXBvc2l0b3JpZXMSLy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5TY2FuR2l0UmVwb3NpdG9yaWVzUmVzcG9uc2UShAEKF1ZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnEjMuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1JlcXVlc3QaNC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnUmVzcG9uc2USbwoQR2V0UHJvamVjdFZhdWx0cxIsLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFZhdWx0c1JlcXVlc3QaLS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RWYXVsdHNSZXNwb25zZRKEAQoXT3BlblByb2plY3RJbkNvZGVTZXJ2ZXISMy5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5Qcm9qZWN0SW5Db2RlU2VydmVyUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuT3BlblByb2plY3RJbkNvZGVTZXJ2ZXJSZXNwb25zZRKHAQoYR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzEjQuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXF1ZXN0GjUuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlByb2plY3QuVjFiBnByb3RvMw",[Ne,_i]),Tm=v(se,1),Qm=v(se,5),Mm=v(se,15),Om=v(se,17),Dm=v(se,19),_m=v(se,21),$m=v(se,23),Pm=v(se,25),qm=v(se,41),eh=v(se,50),th=v(se,51),nh=v(se,69),oh=v(se,71),ah=v(se,85),rh=We(se,0),Je=oe("Ch9oYWdpY29kZS9wcm9qZWN0L3YxL3ZhdWx0LnByb3RvEhNoYWdpY29kZS5wcm9qZWN0LnYxIhMKEUxpc3RWYXVsdHNSZXF1ZXN0Ik8KEkxpc3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIk4KEkNyZWF0ZVZhdWx0UmVxdWVzdBI4CgRib2R5GAEgASgLMiouaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3REdG8iSAoTQ3JlYXRlVmF1bHRSZXNwb25zZRIxCgZyZXN1bHQYASABKAsyIS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0SXRlbUR0byJaChJVcGRhdGVWYXVsdFJlcXVlc3QSCgoCaWQYASABKAkSOAoEYm9keRgCIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXF1ZXN0RHRvIkgKE1VwZGF0ZVZhdWx0UmVzcG9uc2USMQoGcmVzdWx0GAEgASgLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8iPAoSRGVsZXRlVmF1bHRSZXF1ZXN0EgoKAmlkGAEgASgJEhoKEmRlbGV0ZV9sb2NhbF9maWxlcxgCIAEoCCJSChNEZWxldGVWYXVsdFJlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXNwb25zZUR0byI+ChRHZXRWYXVsdEZpbGVzUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRwYXRoGAIgASgJSACIAQFCBwoFX3BhdGgiVgoVR2V0VmF1bHRGaWxlc1Jlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlTGlzdFJlc3BvbnNlRHRvIjYKGkdldFZhdWx0RmlsZVByZXZpZXdSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBHBhdGgYAiABKAkiXwobR2V0VmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlEkAKBnJlc3VsdBgBIAEoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlRHRvIo4BChxPcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBHBhdGgYAiABKAlIAIgBARInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgDIAEoCUgBiAEBQgcKBV9wYXRoQh0KG19jdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZSJjCh1PcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wcm9qZWN0LnYxLlZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvImwKFUNyZWF0ZVZhdWx0UmVxdWVzdER0bxIMCgRuYW1lGAEgASgJEgwKBHR5cGUYAiABKAkSFQoNcGh5c2ljYWxfcGF0aBgDIAEoCRIUCgdnaXRfdXJsGAQgASgJSACIAQFCCgoIX2dpdF91cmwibAoVVXBkYXRlVmF1bHRSZXF1ZXN0RHRvEgwKBG5hbWUYASABKAkSDAoEdHlwZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhQKB2dpdF91cmwYBCABKAlIAIgBAUIKCghfZ2l0X3VybCKdAQoWRGVsZXRlVmF1bHRSZXNwb25zZUR0bxIKCgJpZBgBIAEoCRIPCgdkZWxldGVkGAIgASgIEiQKHGRlbGV0ZV9sb2NhbF9maWxlc19yZXF1ZXN0ZWQYAyABKAgSIwobbG9jYWxfZmlsZXNfZGVsZXRpb25fc3RhdHVzGAQgASgJEhsKE2xvY2FsX2ZpbGVzX2RlbGV0ZWQYBSABKAgizAEKEVZhdWx0RmlsZUVudHJ5RHRvEhUKDXJlbGF0aXZlX3BhdGgYASABKAkSEQoJZmlsZV9uYW1lGAIgASgJEhQKDGlzX2RpcmVjdG9yeRgDIAEoCBIRCglleHRlbnNpb24YBCABKAkSEgoKc2l6ZV9ieXRlcxgFIAEoAxI1ChFsYXN0X21vZGlmaWVkX3V0YxgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRcHJldmlld19zdXBwb3J0ZWQYByABKAgimAIKGFZhdWx0RmlsZUxpc3RSZXNwb25zZUR0bxIQCgh2YXVsdF9pZBgBIAEoCRISCgp2YXVsdF9uYW1lGAIgASgJEhUKDXBoeXNpY2FsX3BhdGgYAyABKAkSDgoGc3RhdHVzGAQgASgJEhcKCmVycm9yX2NvZGUYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESFAoMaXNfdHJ1bmNhdGVkGAcgASgIEhgKEHRvdGFsX2ZpbGVfY291bnQYCCABKAUSNQoFaXRlbXMYCSADKAsyJi5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0RmlsZUVudHJ5RHRvQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIpQDChtWYXVsdEZpbGVQcmV2aWV3UmVzcG9uc2VEdG8SEAoIdmF1bHRfaWQYASABKAkSEgoKdmF1bHRfbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhUKDXJlbGF0aXZlX3BhdGgYBCABKAkSEQoJZmlsZV9uYW1lGAUgASgJEhEKCWV4dGVuc2lvbhgGIAEoCRISCgpzaXplX2J5dGVzGAcgASgDEjUKEWxhc3RfbW9kaWZpZWRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZzdGF0dXMYCSABKAkSFwoKZXJyb3JfY29kZRgKIAEoCUgAiAEBEhQKB21lc3NhZ2UYCyABKAlIAYgBARIZChFwcmV2aWV3X3N1cHBvcnRlZBgMIAEoCBIZChFjb250ZW50X3RydW5jYXRlZBgNIAEoCBIUCgdjb250ZW50GA4gASgJSAKIAQFCDQoLX2Vycm9yX2NvZGVCCgoIX21lc3NhZ2VCCgoIX2NvbnRlbnQy9QUKDFZhdWx0U2VydmljZRJdCgpMaXN0VmF1bHRzEiYuaGFnaWNvZGUucHJvamVjdC52MS5MaXN0VmF1bHRzUmVxdWVzdBonLmhhZ2ljb2RlLnByb2plY3QudjEuTGlzdFZhdWx0c1Jlc3BvbnNlEmAKC0NyZWF0ZVZhdWx0EicuaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3QaKC5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVZhdWx0UmVzcG9uc2USYAoLVXBkYXRlVmF1bHQSJy5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVZhdWx0UmVxdWVzdBooLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXNwb25zZRJgCgtEZWxldGVWYXVsdBInLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXF1ZXN0GiguaGFnaWNvZGUucHJvamVjdC52MS5EZWxldGVWYXVsdFJlc3BvbnNlEmYKDUdldFZhdWx0RmlsZXMSKS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZXNSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5HZXRWYXVsdEZpbGVzUmVzcG9uc2USeAoTR2V0VmF1bHRGaWxlUHJldmlldxIvLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0VmF1bHRGaWxlUHJldmlld1JlcXVlc3QaMC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZVByZXZpZXdSZXNwb25zZRJ+ChVPcGVuVmF1bHRJbkNvZGVTZXJ2ZXISMS5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlcXVlc3QaMi5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuUHJvamVjdC5WMWIGcHJvdG8z",[Ne,se]),ih=v(Je,1),sh=v(Je,3),lh=v(Je,5),ch=v(Je,7),dh=v(Je,9),uh=v(Je,11),mh=v(Je,14),hh=v(Je,15),bh=We(Je,0),Qe=oe("CitoYWdpY29kZS9jb21tdW5pdHkvdjEvc2NoZWR1bGVkX3BsYW5zLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiQwoZTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiWgoaTGlzdFNjaGVkdWxlZFBsYW5zUmVzcG9uc2USPAoGcmVzdWx0GAEgAygLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSIlChdHZXRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJYChhHZXRTY2hlZHVsZWRQbGFuUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSI2CiBMaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIm0KIUxpc3RTY2hlZHVsZWRQbGFuUHJvYmxlbXNSZXNwb25zZRJICgZyZXN1bHQYASADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkRlZmluaXRpb25Qcm9ibGVtRHRvIvMBCiNMaXN0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VzUmVxdWVzdBIYCgtyYW5nZV9zdGFydBgBIAEoCUgAiAEBEhYKCXJhbmdlX2VuZBgCIAEoCUgBiAEBEh4KEWRpc3BsYXlfdGltZV96b25lGAMgASgJSAKIAQESEwoGY3Vyc29yGAQgASgJSAOIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgEiAEBQg4KDF9yYW5nZV9zdGFydEIMCgpfcmFuZ2VfZW5kQhQKEl9kaXNwbGF5X3RpbWVfem9uZUIJCgdfY3Vyc29yQg0KC19wcm9qZWN0X2lkInIKJExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VQYWdlUmVzcG9uc2UiWwoaQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSPQoEYm9keRgBIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiZwoaVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkSPQoEYm9keRgCIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoaRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiHQobRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlInkKIkVkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlcXVlc3QSCgoCaWQYASABKAkSRwoEYm9keRgCIAEoCzI5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0ImMKI0VkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiYAokRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0EgoKAmlkGAEgASgJEhoKDW9jY3VycmVuY2VfYXQYAiABKAlIAIgBAUIQCg5fb2NjdXJyZW5jZV9hdCJlCiVEZWxldGVTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiJQoXUnVuU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiVQoYUnVuU2NoZWR1bGVkUGxhblJlc3BvbnNlEjkKBnJlc3VsdBgBIAEoCzIpLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXNzaW9uUmVzcG9uc2VEdG8iJwoZU3RhcnRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpTdGFydFNjaGVkdWxlZFBsYW5SZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvIjUKJ0NvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBIKCgJpZBgBIAEoCSJuCihDb25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUnVuQWNjZXB0ZWREdG8iNAomQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlcXVlc3QSCgoCaWQYASABKAkiZwonQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoVU2NoZWR1bGVkUGxhbkFnZW50RHRvEg8KB2hlcm9faWQYASABKAkiawoZU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxIQCghzdHJhdGVneRgBIAEoCRI8CgZhZ2VudHMYAiADKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50RHRvIuABCidTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USKgoGcnVuX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgRuYW1lGAIgASgJSACIAQESRAoKYWdlbnRfcG9vbBgDIAEoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuQWdlbnRQb29sRHRvEicKB3BheWxvYWQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCBwoFX25hbWUi4wEKHlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIvCgtvcmlnaW5hbF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEa2luZBgCIAEoCRJQCghvdmVycmlkZRgDIAEoCzI+LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USHAoPaW5wdXRfZmlsZV9wYXRoGAQgASgJSACIAQFCEgoQX2lucHV0X2ZpbGVfcGF0aCI4ChZTY2hlZHVsZWRQbGFuUmVwZWF0RHRvEgwKBHJ1bGUYASABKAkSEAoId2Vla2RheXMYAiADKAkiiAIKGlNjaGVkdWxlZFBsYW5RdW90YVJlc2V0RHRvEhMKBndpbmRvdxgBIAEoCUgAiAEBEiIKFW1pbl9yZW1haW5pbmdfcGVyY2VudBgCIAEoBUgBiAEBEiUKGG1heF9taW51dGVzX2JlZm9yZV9yZXNldBgDIAEoBUgCiAEBEigKG3JlcXVpcmVfbWFudWFsX2NvbmZpcm1hdGlvbhgEIAEoCEgDiAEBQgkKB193aW5kb3dCGAoWX21pbl9yZW1haW5pbmdfcGVyY2VudEIbChlfbWF4X21pbnV0ZXNfYmVmb3JlX3Jlc2V0Qh4KHF9yZXF1aXJlX21hbnVhbF9jb25maXJtYXRpb24i9wIKGFNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxIMCgRtb2RlGAEgASgJEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoJdGltZV96b25lGAMgASgJSACIAQESFwoKc3RhcnRfZGF0ZRgEIAEoCUgBiAEBEhUKCGVuZF9kYXRlGAUgASgJSAKIAQESGAoLdGltZV9vZl9kYXkYBiABKAlIA4gBARI9CgZyZXBlYXQYByABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlcGVhdER0bxJGCgtxdW90YV9yZXNldBgIIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUXVvdGFSZXNldER0b0IMCgpfdGltZV96b25lQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki0AYKFVNjaGVkdWxlZFBsYW5SZXNwb25zZRIKCgJpZBgBIAEoCRIMCgR0eXBlGAIgASgJEg0KBXNjb3BlGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSIQoUZGVmaW5pdGlvbl9maWxlX3BhdGgYBSABKAlIAIgBARIMCgRuYW1lGAYgASgJEg8KB2VuYWJsZWQYByABKAgSEQoEaWNvbhgIIAEoCUgBiAEBEhIKBWNvbG9yGAkgASgJSAKIAQESLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoIc2NoZWR1bGUYDCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblNjaGVkdWxlRHRvEkQKCmFnZW50X3Bvb2wYDSABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGA4gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg0KBXN0YXRlGA8gASgJEi8KC25leHRfcnVuX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJJCgpleGNlcHRpb25zGBEgAygLMjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIcCg9pbnB1dF9maWxlX3BhdGgYEiABKAlIA4gBARI7ChdsYXN0X3RyaWdnZXJlZF9yZXNldF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASWQoVcGVuZGluZ19xdW90YV90cmlnZ2VyGBQgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5QZW5kaW5nUXVvdGFUcmlnZ2VyRHRvQhcKFV9kZWZpbml0aW9uX2ZpbGVfcGF0aEIHCgVfaWNvbkIICgZfY29sb3JCEgoQX2lucHV0X2ZpbGVfcGF0aCKJAQojU2NoZWR1bGVkUGxhblBlbmRpbmdRdW90YVRyaWdnZXJEdG8SLQoJcmFpc2VkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg93aW5kb3dfcmVzZXRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkcKIVNjaGVkdWxlZFBsYW5EZWZpbml0aW9uUHJvYmxlbUR0bxIRCglmaWxlX3BhdGgYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLTAQofU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIMCgRtb2RlGAEgASgJEhEKBHJ1bGUYAiABKAlIAIgBARIQCgh3ZWVrZGF5cxgDIAMoCRIXCgpzdGFydF9kYXRlGAQgASgJSAGIAQESFQoIZW5kX2RhdGUYBSABKAlIAogBARIYCgt0aW1lX29mX2RheRgGIAEoCUgDiAEBQgcKBV9ydWxlQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki6gMKH1NjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USDwoHcGxhbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEjEKDW9jY3VycmVuY2VfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBG5hbWUYBCABKAkSDAoEdHlwZRgFIAEoCRIPCgdlbmFibGVkGAYgASgIEhEKBGljb24YByABKAlIAIgBARISCgVjb2xvchgIIAEoCUgBiAEBEg0KBXN0YXRlGAkgASgJEh8KEnNjaGVkdWxlX3RpbWVfem9uZRgKIAEoCUgCiAEBEkoKCnJlY3VycmVuY2UYCyABKAsyNi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIvCgtuZXh0X3J1bl9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLb3JpZ2luYWxfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2lzX21vZGlmaWVkGA4gASgIQgcKBV9pY29uQggKBl9jb2xvckIVChNfc2NoZWR1bGVfdGltZV96b25lIpMCCiNTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVBhZ2VSZXNwb25zZRIvCgtyYW5nZV9zdGFydBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJcmFuZ2VfZW5kGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZChFkaXNwbGF5X3RpbWVfem9uZRgDIAEoCRJHCgdlbnRyaWVzGAQgAygLMjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USGAoLbmV4dF9jdXJzb3IYBSABKAlIAIgBAUIOCgxfbmV4dF9jdXJzb3Ii0QIKGFNjaGVkdWxlZFBsYW5TYXZlUmVxdWVzdBIMCgR0eXBlGAEgASgJEhIKBXNjb3BlGAIgASgJSACIAQESDAoEbmFtZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIEhEKBGljb24YBSABKAlIAYgBARISCgVjb2xvchgGIAEoCUgCiAEBEkEKCHNjaGVkdWxlGAcgASgLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxJECgphZ2VudF9wb29sGAggASgLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5BZ2VudFBvb2xEdG8SJwoHcGF5bG9hZBgJIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUIICgZfc2NvcGVCBwoFX2ljb25CCAoGX2NvbG9yIo4CCiJTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0EjEKDW9jY3VycmVuY2VfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoEbmFtZRgDIAEoCUgAiAEBEkQKCmFnZW50X3Bvb2wYBCABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGAUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlQgcKBV9uYW1lIs4DChJDaGF0SGVyb1N1bW1hcnlEdG8SDwoHaGVyb19pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoEaWNvbhgEIAEoCUgBiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBSABKAkSGQoMYWdlbnRfY2xpX2lkGAYgASgJSAKIAQESGwoOYWdlbnRfY2xpX25hbWUYByABKAlIA4gBARIbCg5hZ2VudF9jbGlfaWNvbhgIIAEoCUgEiAEBEhUKCG1vZGVsX2lkGAkgASgJSAWIAQESFwoKbW9kZWxfbmFtZRgKIAEoCUgGiAEBEhcKCm1vZGVsX2ljb24YCyABKAlIB4gBARIiChVzZWNvbmRhcnlfbW9kZWxfbGFiZWwYDCABKAlICIgBAUIOCgxfZGVzY3JpcHRpb25CBwoFX2ljb25CDwoNX2FnZW50X2NsaV9pZEIRCg9fYWdlbnRfY2xpX25hbWVCEQoPX2FnZW50X2NsaV9pY29uQgsKCV9tb2RlbF9pZEINCgtfbW9kZWxfbmFtZUINCgtfbW9kZWxfaWNvbkIYChZfc2Vjb25kYXJ5X21vZGVsX2xhYmVsIjgKFE9wZW5TcGVjVGFza1Byb2dyZXNzEhEKCWNvbXBsZXRlZBgBIAEoBRINCgV0b3RhbBgCIAEoBSKAAgoQT3BlblNwZWNGaWxlSW5mbxIRCglmaWxlX25hbWUYASABKAkSFQoNcmVsYXRpdmVfcGF0aBgCIAEoCRIOCgZleGlzdHMYAyABKAgSEQoJZmlsZV90eXBlGAQgASgJEhMKC2lzX3JlcXVpcmVkGAUgASgIEhMKC2lzX2FyY2hpdmVkGAYgASgIEjEKDWFyY2hpdmVkX2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkIKDXRhc2tfcHJvZ3Jlc3MYCCABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuT3BlblNwZWNUYXNrUHJvZ3Jlc3MiXgoRT3BlblNwZWNGaWxlc0luZm8SEQoJYmFzZV9wYXRoGAEgASgJEjYKBWZpbGVzGAIgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLk9wZW5TcGVjRmlsZUluZm8izAEKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCEIXChVfZXhlY3V0aW9uX21lc3NhZ2VfaWQigAEKFlNlc3Npb25Ob3RpZmljYXRpb25EdG8SDAoEa2luZBgBIAEoCRIvCgtvYnNlcnZlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJwoHcGF5bG9hZBgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSLtAQoWU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIaCg1wcm9tcHRfdG9rZW5zGAEgASgFSACIAQESIQoUY2FjaGVkX3Byb21wdF90b2tlbnMYAiABKAVIAYgBARIeChFjb21wbGV0aW9uX3Rva2VucxgDIAEoBUgCiAEBEjMKD2xhc3RfdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCEAoOX3Byb21wdF90b2tlbnNCFwoVX2NhY2hlZF9wcm9tcHRfdG9rZW5zQhQKEl9jb21wbGV0aW9uX3Rva2VucyJfChRTdGFnZUV4ZWN1dG9ySW5mb0R0bxIVCg1wcm92aWRlcl90eXBlGAEgASgJEjAKDGxhc3RfdXBkYXRlZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAivAIKFVN0YWdlSGVyb1NlbGVjdGlvbkR0bxIRCglzdGFnZV9rZXkYASABKAkSEgoKc2NyaXB0X2tleRgCIAEoCRIVCg1zY2VuYXJpb19uYW1lGAMgASgJEhQKB2hlcm9faWQYBCABKAlIAIgBARIWCgloZXJvX25hbWUYBSABKAlIAYgBARIWCgloZXJvX2ljb24YBiABKAlIAogBARIVCg1leGVjdXRvcl90eXBlGAcgASgJEhUKDXVzZWRfZmFsbGJhY2sYCCABKAgSGAoQc2VsZWN0aW9uX3NvdXJjZRgJIAEoCRIvCgtzZWxlY3RlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uIrcLChJTZXNzaW9uUmVzcG9uc2VEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRINCgV0aXRsZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhwKD2NoaWVmX2NvbXBsYWludBgEIAEoCUgBiAEBEgwKBGNvZGUYBSABKAUSDAoEdHlwZRgGIAEoCRIOCgZzdGF0dXMYByABKAkSEQoJaXNfYWN0aXZlGAggASgIEjIKDmxhc3RfYWN0aXZlX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpwcm9qZWN0X2lkGAogASgJEhQKDHByb2plY3RfbmFtZRgLIAEoCRIUCgxwcm9qZWN0X3BhdGgYDCABKAkSGgoNcHJvcG9zYWxfbmFtZRgNIAEoCUgCiAEBEkEKD29wZW5fc3BlY19maWxlcxgOIAEoCzIoLmhhZ2ljb2RlLmNvbW11bml0eS52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSRQoOcXVldWVfbWVzc2FnZXMYECADKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuUXVldWVNZXNzYWdlU3VtbWFyeUR0bxIeChF3b3JraW5nX2RpcmVjdG9yeRgRIAEoCUgDiAEBEhUKCG1ldGFkYXRhGBIgASgJSASIAQESHwoSY2hhdF9leGVjdXRvcl90eXBlGBMgASgJSAWIAQESPAoJY2hhdF9oZXJvGBQgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoYXRIZXJvU3VtbWFyeUR0bxJbChJzdGFnZV9leGVjdXRvcl9tYXAYFSADKAsyPy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJmChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyRC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlSGVyb1NlbGVjdGlvbk1hcEVudHJ5EiAKE3J1bnRpbWVfbW9kZWxfbGFiZWwYFyABKAlIBogBARI5ChVwcm9jZXNzaW5nX3N0YXJ0ZWRfYXQYGCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkQKDXNlc3Npb25fdXNhZ2UYGSABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIcCg9wcmV2aW91c19zdGF0dXMYGiABKAlIB4gBARJECg1ub3RpZmljYXRpb25zGBsgAygLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8aZAoVU3RhZ2VFeGVjdXRvck1hcEVudHJ5EgsKA2tleRgBIAEoCRI6CgV2YWx1ZRgCIAEoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaagoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjsKBXZhbHVlGAIgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YWdlSGVyb1NlbGVjdGlvbkR0bzoCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMiLgobU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvEg8KB3BsYW5faWQYASABKAkymQ4KFVNjaGVkdWxlZFBsYW5zU2VydmljZRJ5ChJMaXN0U2NoZWR1bGVkUGxhbnMSMC5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBoxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhbnNSZXNwb25zZRJzChBHZXRTY2hlZHVsZWRQbGFuEi4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXF1ZXN0Gi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXNwb25zZRKOAQoZTGlzdFNjaGVkdWxlZFBsYW5Qcm9ibGVtcxI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBo4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVzcG9uc2USlwEKHExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXMSOi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1JlcXVlc3QaOy5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1Jlc3BvbnNlEnwKE0NyZWF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE1VwZGF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE0RlbGV0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEpQBChtFZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRWRpdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVxdWVzdBo6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5FZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXNwb25zZRKaAQodRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOy5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0GjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2UScwoQUnVuU2NoZWR1bGVkUGxhbhIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVzcG9uc2USeQoSU3RhcnRTY2hlZHVsZWRQbGFuEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YXJ0U2NoZWR1bGVkUGxhblJlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuU3RhcnRTY2hlZHVsZWRQbGFuUmVzcG9uc2USowEKIENvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBo/LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEqABCh9DYW5jZWxTY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXF1ZXN0Gj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXNwb25zZUIrqgIoUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW11bml0eS5WMWIGcHJvdG8z",[Ue,Ne]),gh=v(Qe,1),ph=v(Qe,3),Ah=v(Qe,9),fh=v(Qe,11),Zh=v(Qe,19),Rh=v(Qe,21),Xr=v(Qe,39),Eh=We(Qe,0),Vh=oe("Ci1oYWdpY29kZS9jb21tdW5pdHkvdjEvY29tbXVuaXR5X3ByZXNldHMucHJvdG8SFWhhZ2ljb2RlLmNvbW11bml0eS52MSIdChtMaXN0Q29tbXVuaXR5UHJlc2V0c1JlcXVlc3QiYwocTGlzdENvbW11bml0eVByZXNldHNSZXNwb25zZRJDCgZyZXN1bHQYASABKAsyMy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RSZXNwb25zZUR0byJmCh1JbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVxdWVzdBJFCgRib2R5GAEgASgLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvImwKHkluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8ifAogU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3QSEQoJcHJlc2V0X2lkGAEgASgJEkUKBGJvZHkYAiABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8ibwohU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRPcGVyYXRpb25SZXNwb25zZUR0byI0Ch9Vbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXF1ZXN0EhEKCXByZXNldF9pZBgBIAEoCSJuCiBVbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8iIAoeUmVmcmVzaENvbW11bml0eVByZXNldHNSZXF1ZXN0IiEKH1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UihwEKFkNvbW11bml0eVByZXNldFJpc2tEdG8SGQoRZGVjbGFyZXNfY29tbWFuZHMYASABKAgSFwoPZGVjbGFyZXNfc2tpbGxzGAIgASgIEhYKDmRlY2xhcmVzX2hvb2tzGAMgASgIEiEKGWRlY2xhcmVzX2NsaV9yZXF1aXJlbWVudHMYBCABKAgi2QQKGExvY2FsSGFnaVRhc2tMaXN0SXRlbUR0bxIRCglwcmVzZXRfaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSEwoLc291cmNlX2tpbmQYBCABKAkSGQoRaW5zdGFsbGF0aW9uX2tpbmQYBSABKAkSFwoPbWFuYWdlbWVudF9raW5kGAYgASgJEiAKGGlzX3Nlc3Npb25fY3JlYXRpb25fb25seRgHIAEoCBIPCgdlbmFibGVkGAggASgIEhQKDGlzX3JlbW92YWJsZRgJIAEoCBIRCglwdWJsaXNoZXIYCiABKAkSHQoQc291cmNlX3JlZmVyZW5jZRgLIAEoCUgAiAEBEhsKDmFyY2hpdmVfc2hhMjU2GAwgASgJSAGIAQESNAoQaW5zdGFsbGVkX2F0X3V0YxgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoScmVsYXRpdmVfZGlyZWN0b3J5GA4gASgJEhgKC2Rlc2NyaXB0aW9uGA8gASgJSAKIAQESPAoFcmlza3MYECABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0Umlza0R0bxIWCglzb3VyY2VfaWQYESABKAlIA4gBARIRCgRpY29uGBIgASgJSASIAQFCEwoRX3NvdXJjZV9yZWZlcmVuY2VCEQoPX2FyY2hpdmVfc2hhMjU2Qg4KDF9kZXNjcmlwdGlvbkIMCgpfc291cmNlX2lkQgcKBV9pY29uIloKHVByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIRCgRwYXRoGAMgASgJSACIAQFCBwoFX3BhdGgiqQEKHExvY2FsSGFnaVRhc2tMaXN0UmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RJdGVtRHRvEkkKC2RpYWdub3N0aWNzGAIgAygLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvIqwDCh5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SEQoJcHJlc2V0X2lkGAEgASgJEhYKCW5hbWVzcGFjZRgCIAEoCUgAiAEBEg8KB3ZlcnNpb24YAyABKAkSEQoJcHVibGlzaGVyGAQgASgJEh0KEHNvdXJjZV9yZWZlcmVuY2UYBSABKAlIAYgBARIWCg5hcmNoaXZlX3NoYTI1NhgGIAEoCRI0ChBpbnN0YWxsZWRfYXRfdXRjGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJyZWxhdGl2ZV9kaXJlY3RvcnkYCCABKAkSDwoHZW5hYmxlZBgJIAEoCBI8CgVyaXNrcxgKIAEoCzItLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRSaXNrRHRvEhYKCXNvdXJjZV9pZBgLIAEoCUgCiAEBEhEKBGljb24YDCABKAlIA4gBAUIMCgpfbmFtZXNwYWNlQhMKEV9zb3VyY2VfcmVmZXJlbmNlQgwKCl9zb3VyY2VfaWRCBwoFX2ljb24ilAIKI0NvbW11bml0eVByZXNldE9wZXJhdGlvblJlc3BvbnNlRHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIWCglwcmVzZXRfaWQYAiABKAlIAIgBARISCgVlcnJvchgDIAEoCUgBiAEBEksKDGluc3RhbGxhdGlvbhgEIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SSQoLZGlhZ25vc3RpY3MYBSADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG9CDAoKX3ByZXNldF9pZEIICgZfZXJyb3IisgIKIENvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvEhYKDmFyY2hpdmVfYmFzZTY0GAEgASgJEh8KEmV4cGVjdGVkX3ByZXNldF9pZBgCIAEoCUgAiAEBEh0KEGV4cGVjdGVkX3ZlcnNpb24YAyABKAlIAYgBARIcCg9leHBlY3RlZF9zaGEyNTYYBCABKAlIAogBARIWCglwdWJsaXNoZXIYBSABKAlIA4gBARIdChBzb3VyY2VfcmVmZXJlbmNlGAYgASgJSASIAQFCFQoTX2V4cGVjdGVkX3ByZXNldF9pZEITChFfZXhwZWN0ZWRfdmVyc2lvbkISChBfZXhwZWN0ZWRfc2hhMjU2QgwKCl9wdWJsaXNoZXJCEwoRX3NvdXJjZV9yZWZlcmVuY2UiMwogQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8SDwoHZW5hYmxlZBgBIAEoCDLMBQoXQ29tbXVuaXR5UHJlc2V0c1NlcnZpY2USfwoUTGlzdENvbW11bml0eVByZXNldHMSMi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdENvbW11bml0eVByZXNldHNSZXF1ZXN0GjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UShQEKFkluc3RhbGxDb21tdW5pdHlQcmVzZXQSNC5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNS5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlc3BvbnNlEo4BChlTZXRDb21tdW5pdHlQcmVzZXRFbmFibGVkEjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXF1ZXN0GjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXNwb25zZRKLAQoYVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0EjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVzcG9uc2USiAEKF1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzEjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVxdWVzdBo2LmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZWZyZXNoQ29tbXVuaXR5UHJlc2V0c1Jlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ne]),_o=oe("CihoYWdpY29kZS9jb21tdW5pdHkvdjEvcHJlc2V0X3Rhc2tzLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiHQobR2V0UHJlc2V0VGFza0NhdGFsb2dSZXF1ZXN0ImMKHEdldFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8ibwoiQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrUmVxdWVzdER0byJzCiNDaGVja1ByZXNldFRhc2tSZXF1aXJlbWVudHNSZXNwb25zZRJMCgZyZXN1bHQYASABKAsyPC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tSZXNwb25zZUR0byIeChxMaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0ImIKHUxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hU3VtbWFyeUR0byI0ChpHZXRQcmVzZXRUYXNrU2NoZW1hUmVxdWVzdBIWCg5wcmVzZXRfdGFza19pZBgBIAEoCSJhChtHZXRQcmVzZXRUYXNrU2NoZW1hUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDcmVhdGlvblNjaGVtYUR0byLKAQogUHJlc2V0VGFza0NhdGFsb2dEaXNhYmxlZEl0ZW1EdG8SCgoCaWQYASABKAkSEAoIZ3JvdXBfaWQYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSDgoGc3RhdHVzGAQgASgJEhgKEHBsdWdpbl9yb290X3BhdGgYBSABKAkSSQoLZGlhZ25vc3RpY3MYBiADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG8iPQodUHJlc2V0VGFza0FnZW50UmVxdWlyZW1lbnREdG8SDAoEbW9kZRgBIAEoCRIOCgZhZ2VudHMYAiADKAki6gEKFFByZXNldFRhc2tDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhIKBXNraWxsGAUgASgJSACIAQESEAoDdXJsGAYgASgJSAGIAQESFgoJZG9jc19zbHVnGAcgASgJSAKIAQESHQoQcHJlbHVkZV90ZW1wbGF0ZRgIIAEoCUgDiAEBQggKBl9za2lsbEIGCgRfdXJsQgwKCl9kb2NzX3NsdWdCEwoRX3ByZWx1ZGVfdGVtcGxhdGUiNgoZUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgV0aXRsZRgCIAEoCSLMAQobUHJlc2V0VGFza0NvbW1hbmRDYXRhbG9nRHRvEhQKDHBhcmFtZXRlcl9pZBgBIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgCIAEoCRJACgZncm91cHMYAyADKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxI9Cghjb21tYW5kcxgEIAMoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tbWFuZER0byJWChpQcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxIOCgZsZWdhY3kYASABKAkSDwoHYmluZGluZxgCIAEoCRIXCg9kaWFnbm9zdGljX2NvZGUYAyABKAkidAoWUHJlc2V0VGFza0V4ZWN1dGlvbkR0bxIWCg5zY2hlbWFfdmVyc2lvbhgBIAEoCRIQCghzdHJhdGVneRgCIAEoCRIcCg9leHRlbnNpb25fcG9pbnQYAyABKAlIAIgBAUISChBfZXh0ZW5zaW9uX3BvaW50Ip8CChlQcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEg0KBWlucHV0GAEgASgJEh0KEHByb21wdF9wYXJhbWV0ZXIYAiABKAlIAIgBARIZCgxtZXRhZGF0YV9rZXkYAyABKAlIAYgBARIQCghyZXF1aXJlZBgEIAEoCBIVCghwcm9kdWNlchgFIAEoCUgCiAEBEhcKCnZhbHVlX3R5cGUYBiABKAlIA4gBARIWCgl0cmFuc2Zvcm0YByABKAlIBIgBARIPCgdhbGlhc2VzGAggAygJQhMKEV9wcm9tcHRfcGFyYW1ldGVyQg8KDV9tZXRhZGF0YV9rZXlCCwoJX3Byb2R1Y2VyQg0KC192YWx1ZV90eXBlQgwKCl90cmFuc2Zvcm0iOAoYUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvEg0KBXZhbHVlGAEgASgJEg0KBWxhYmVsGAIgASgJIt4DCiBQcmVzZXRUYXNrRmllbGRDb21wb25lbnRQcm9wc0R0bxIgChN0YXJnZXRfc2VsZWN0aW9uX2lkGAEgASgJSACIAQESFwoKZW1wdHlfdGV4dBgCIAEoCUgBiAEBEiMKFmFsbG93X291dHB1dF9zZWxlY3Rpb24YAyABKAhIAogBARIlChhyZXF1aXJlX291dHB1dF9zZWxlY3Rpb24YBCABKAhIA4gBARIYCgtlbXB0eV90aXRsZRgFIAEoCUgEiAEBEh4KEWVtcHR5X2Rlc2NyaXB0aW9uGAYgASgJSAWIAQESHQoQcmVxdWlyZWRfbWVzc2FnZRgHIAEoCUgGiAEBEkAKB29wdGlvbnMYCCADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvQhYKFF90YXJnZXRfc2VsZWN0aW9uX2lkQg0KC19lbXB0eV90ZXh0QhkKF19hbGxvd19vdXRwdXRfc2VsZWN0aW9uQhsKGV9yZXF1aXJlX291dHB1dF9zZWxlY3Rpb25CDgoMX2VtcHR5X3RpdGxlQhQKEl9lbXB0eV9kZXNjcmlwdGlvbkITChFfcmVxdWlyZWRfbWVzc2FnZSL3AgoXUHJlc2V0VGFza1BhbmVsRmllbGREdG8SCgoCaWQYASABKAkSEAoIcmVuZGVyZXIYAiABKAkSEgoKaW5wdXRfdHlwZRgDIAEoCRISCgp2YWx1ZV90eXBlGAQgASgJEhIKBWxhYmVsGAUgASgJSACIAQESEQoEaGludBgGIAEoCUgBiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAKIAQESEAoIcmVxdWlyZWQYCCABKAgSEwoGb3V0cHV0GAkgASgJSAOIAQESGwoOc2VsZWN0aW9uX21vZGUYCiABKAlIBIgBARJQCg9jb21wb25lbnRfcHJvcHMYCyABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkQ29tcG9uZW50UHJvcHNEdG9CCAoGX2xhYmVsQgcKBV9oaW50Qg4KDF9wbGFjZWhvbGRlckIJCgdfb3V0cHV0QhEKD19zZWxlY3Rpb25fbW9kZSJ3ChlQcmVzZXRUYXNrUGFuZWxTZWN0aW9uRHRvEgoKAmlkGAEgASgJEg4KBmxheW91dBgCIAEoCRI+CgZmaWVsZHMYAyADKAsyLi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BhbmVsRmllbGREdG8iyQEKIVByZXNldFRhc2tQcm9tcHRWYXJpYW50U3VtbWFyeUR0bxIKCgJpZBgBIAEoCRJSCgVtYXRjaBgCIAMoCzJDLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUHJvbXB0VmFyaWFudFN1bW1hcnlEdG8uTWF0Y2hFbnRyeRpECgpNYXRjaEVudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi/gEKIlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SDAoEdHlwZRgBIAEoCRIWCg5kZWZhdWx0X2xvY2FsZRgCIAEoCRIZChFzdXBwb3J0ZWRfbG9jYWxlcxgDIAMoCRIRCglzZWxlY3RvcnMYBCADKAkSSgoIdmFyaWFudHMYBSADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1Byb21wdFZhcmlhbnRTdW1tYXJ5RHRvEiAKE2ZhbGxiYWNrX3ZhcmlhbnRfaWQYBiABKAlIAIgBAUIWChRfZmFsbGJhY2tfdmFyaWFudF9pZCJFChhQcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SDAoEdHlwZRgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBW5hbWVzGAMgAygJIqoDCh5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8SEQoJc2NlbmVfa2V5GAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB3N1bW1hcnkYAyABKAkSYQoPdGl0bGVfYnlfbG9jYWxlGAQgAygLMkguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZVJlZ2lzdHJhdGlvbkR0by5UaXRsZUJ5TG9jYWxlRW50cnkSZQoRc3VtbWFyeV9ieV9sb2NhbGUYBSADKAsySi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjZW5lUmVnaXN0cmF0aW9uRHRvLlN1bW1hcnlCeUxvY2FsZUVudHJ5Eh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgGIAEoBRo0ChJUaXRsZUJ5TG9jYWxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo2ChRTdW1tYXJ5QnlMb2NhbGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIo8BChJQcmVzZXRUYXNrU2NlbmVEdG8SEAoIcHJvdmlkZXIYASABKAkSGQoRZGVmYXVsdF9zY2VuZV9rZXkYAiABKAkSTAoNcmVnaXN0cmF0aW9ucxgDIAMoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8ivAEKHFByZXNldFRhc2tUYXJnZXRTZWxlY3Rpb25EdG8SCgoCaWQYASABKAkSDAoEa2luZBgCIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgDIAEoCRIcChRhbGxvd2VkX2FjY2Vzc190eXBlcxgEIAMoCRIOCgZvdXRwdXQYBSABKAkSGQoMc2NvcGVfc291cmNlGAYgASgJSACIAQESEAoIcmVxdWlyZWQYByABKAhCDwoNX3Njb3BlX3NvdXJjZSKBCQoYUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSEQoEaWNvbhgFIAEoCUgAiAEBEhQKDGRpc3BsYXlfbmFtZRgGIAEoCRINCgV0aXRsZRgHIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIVCg1kZWZhdWx0X3RpdGxlGAkgASgJEhQKDHN1Ym1pdF9sYWJlbBgKIAEoCRIYChBzdWJtaXR0aW5nX2xhYmVsGAsgASgJEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYDCABKAkSGwoTYWxsb3dfaGVyb19vdmVycmlkZRgNIAEoCBISCgpzb3J0X29yZGVyGA4gASgFEhkKEXN1cHBvcnRlZF9sb2NhbGVzGA8gAygJEkIKCHNlY3Rpb25zGBAgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQYW5lbFNlY3Rpb25EdG8SSwoPY29tbWFuZF9jYXRhbG9nGBEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kQ2F0YWxvZ0R0bxJOChF0YXJnZXRfc2VsZWN0aW9ucxgSIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrVGFyZ2V0U2VsZWN0aW9uRHRvEk8KEWFnZW50X3JlcXVpcmVtZW50GBMgASgLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tBZ2VudFJlcXVpcmVtZW50RHRvEkUKDHJlcXVpcmVtZW50cxgUIAMoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SUgoPcHJvbXB0X3N0cmF0ZWd5GBUgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SQAoJZXhlY3V0aW9uGBYgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tFeGVjdXRpb25EdG8SSAoNY29tcGF0aWJpbGl0eRgXIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxJICg5pbnB1dF9iaW5kaW5ncxgYIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEjgKBXNjZW5lGBkgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZUR0bxIjChZzZXJ2ZXJfZGVjaWRlZF9oZXJvX2lkGBogASgJSAGIAQFCBwoFX2ljb25CGQoXX3NlcnZlcl9kZWNpZGVkX2hlcm9faWQirwEKHFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEk8KDmRpc2FibGVkX2l0ZW1zGAIgAygLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nRGlzYWJsZWRJdGVtRHRvIkgKJ1ByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrRGlhZ25vc3RpY0R0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkitQEKIVByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0bxIMCgR0eXBlGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGcGFzc2VkGAMgASgIEg8KB21lc3NhZ2UYBCABKAkSUwoLZGlhZ25vc3RpY3MYBSADKAsyPi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tEaWFnbm9zdGljRHRvIqMBCiVQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1Jlc3BvbnNlRHRvEhYKDnByZXNldF90YXNrX2lkGAEgASgJEhIKCmFsbF9wYXNzZWQYAiABKAgSTgoMcmVxdWlyZW1lbnRzGAMgAygLMjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0byI+CiRQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1JlcXVlc3REdG8SFgoOcHJlc2V0X3Rhc2tfaWQYASABKAkiygEKGlByZXNldFRhc2tTY2hlbWFTdW1tYXJ5RHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSDQoFdGl0bGUYBSABKAkSEwoLZGVzY3JpcHRpb24YBiABKAkSFAoMdGFyZ2V0X2NvdW50GAcgASgFEhUKDWNvbW1hbmRfY291bnQYCCABKAUSFwoPcGFyYW1ldGVyX2NvdW50GAkgASgFIngKGlByZXNldFRhc2tTY2hlbWFDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhAKA3VybBgFIAEoCUgAiAEBQgYKBF91cmwi0gEKG1ByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxIUCgxwYXJhbWV0ZXJfaWQYASABKAkSFgoOc2VsZWN0aW9uX21vZGUYAiABKAkSQAoGZ3JvdXBzGAMgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kR3JvdXBEdG8SQwoIY29tbWFuZHMYBCADKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYUNvbW1hbmREdG8iOwoYUHJlc2V0VGFza1NjaGVtYUFsaWFzRHRvEgsKA2tleRgBIAEoCRISCgpkZXByZWNhdGVkGAIgASgIIrQCChxQcmVzZXRUYXNrU2NoZW1hUGFyYW1ldGVyRHRvEgsKA2tleRgBIAEoCRIOCgZvcmlnaW4YAiABKAkSFQoIcHJvZHVjZXIYAyABKAlIAIgBARISCgp2YWx1ZV90eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEg0KBWxhYmVsGAYgASgJEhEKBGhpbnQYByABKAlIAYgBARJACgdvcHRpb25zGAggAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tGaWVsZE9wdGlvbkR0bxJACgdhbGlhc2VzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFBbGlhc0R0b0ILCglfcHJvZHVjZXJCBwoFX2hpbnQihwEKGlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEg4KBm1ldGhvZBgBIAEoCRIMCgRwYXRoGAIgASgJEhwKFHByZXNldF90YXNrX2lkX2ZpZWxkGAMgASgJEhQKDGxvY2FsZV9maWVsZBgEIAEoCRIXCg9yZXF1aXJlZF9maWVsZHMYBSADKAkieAokUHJlc2V0VGFza1NjaGVtYVNjZW5lUmVnaXN0cmF0aW9uRHRvEhEKCXNjZW5lX2tleRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgEIAEoBSKcAQoZUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxIQCghwcm92aWRlchgBIAEoCRIZChFkZWZhdWx0X3NjZW5lX2tleRgCIAEoCRJSCg1yZWdpc3RyYXRpb25zGAMgAygLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFTY2VuZVJlZ2lzdHJhdGlvbkR0byL0AQoZUHJlc2V0VGFza1NjaGVtYVRhcmdldER0bxIKCgJpZBgBIAEoCRIMCgRraW5kGAIgASgJEhYKDnNlbGVjdGlvbl9tb2RlGAMgASgJEhAKCHJlcXVpcmVkGAQgASgIEhwKFGFsbG93ZWRfYWNjZXNzX3R5cGVzGAUgAygJEhkKDHNjb3BlX3NvdXJjZRgGIAEoCUgAiAEBEhMKC3JlcXVlc3Rfa2V5GAcgASgJEh4KEXNjb3BlX3JlcXVlc3Rfa2V5GAggASgJSAGIAQFCDwoNX3Njb3BlX3NvdXJjZUIUChJfc2NvcGVfcmVxdWVzdF9rZXkiegoYUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYASABKAkSQQoHdGFyZ2V0cxgCIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hVGFyZ2V0RHRvIuMEChtQcmVzZXRUYXNrQ3JlYXRpb25TY2hlbWFEdG8SCgoCaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIOCgZsb2NhbGUYAyABKAkSDQoFdGl0bGUYBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSPgoFc2NvcGUYBiABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEkQKCGNvbW1hbmRzGAcgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxJHCgpwYXJhbWV0ZXJzGAggAygLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFQYXJhbWV0ZXJEdG8SRQoMcmVxdWlyZW1lbnRzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudER0bxJACgZzY2VuZXMYCiABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxJCCgdyZXF1ZXN0GAsgASgLMjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEi0KDGlucHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKAoHZXhhbXBsZRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QyrwQKElByZXNldFRhc2tzU2VydmljZRJ/ChRHZXRQcmVzZXRUYXNrQ2F0YWxvZxIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRQcmVzZXRUYXNrQ2F0YWxvZ1JlcXVlc3QaMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza0NhdGFsb2dSZXNwb25zZRKUAQobQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzEjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoZWNrUHJlc2V0VGFza1JlcXVpcmVtZW50c1JlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVzcG9uc2USggEKFUxpc3RQcmVzZXRUYXNrU2NoZW1hcxIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEnwKE0dldFByZXNldFRhc2tTY2hlbWESMS5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ue,Vh]),Gh=v(_o,5),Sh=v(_o,7),Nh=We(_o,0),ae=oe("CiloYWdpY29kZS9jb21tdW5pdHkvdjEvc2tpbGxfZ2FsbGVyeS5wcm90bxIVaGFnaWNvZGUuY29tbXVuaXR5LnYxIhcKFUdldExvY2FsU2tpbGxzUmVxdWVzdCJfChZHZXRMb2NhbFNraWxsc1Jlc3BvbnNlEkUKBnJlc3VsdBgBIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8iLAocR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBIMCgRzbHVnGAEgASgJIl0KHUdldEJ1aWx0SW5Ta2lsbERldGFpbFJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5CdWlsdEluU2tpbGxEZXRhaWxEdG8iYAoaVW5pbnN0YWxsTG9jYWxTa2lsbFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vbmluc3RhbGxMb2NhbFNraWxsUmVxdWVzdER0byJiChtVbmluc3RhbGxMb2NhbFNraWxsUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXN1bHREdG8icAoiU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVxdWVzdBJKCgRib2R5GAEgASgLMjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3REdG8icgojU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2USSwoGcmVzdWx0GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0byI2ChZHZXRTa2lsbEdhbGxlcnlSZXF1ZXN0EhIKBXF1ZXJ5GAEgASgJSACIAQFCCAoGX3F1ZXJ5IlkKF0dldFNraWxsR2FsbGVyeVJlc3BvbnNlEj4KBnJlc3VsdBgBIAEoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlSZXNwb25zZUR0byI6ChxHZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCSJdCh1HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXNwb25zZRI8CgZyZXN1bHQYASABKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5RGV0YWlsRHRvIjkKG0dldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkiWwocR2V0U2tpbGxHYWxsZXJ5QXVkaXRSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5QXVkaXREdG8itAEKHFNraWxsR2FsbGVyeUF1ZGl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSEQoEcmlzaxgCIAEoCUgAiAEBEhMKBmFsZXJ0cxgDIAEoBUgBiAEBEhIKBXNjb3JlGAQgASgFSAKIAQESGAoLYW5hbHl6ZWRfYXQYBSABKAlIA4gBAUIHCgVfcmlza0IJCgdfYWxlcnRzQggKBl9zY29yZUIOCgxfYW5hbHl6ZWRfYXQijgEKFFNraWxsR2FsbGVyeUF1ZGl0RHRvEgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCRISCgpza2lsbF9zbHVnGAMgASgJEkYKCXByb3ZpZGVycxgEIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlBdWRpdFByb3ZpZGVyRHRvIkIKJEdldFNraWxsR2FsbGVyeUluc3RhbGxDb250ZXh0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkibQolR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHREdG8iIQofR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVxdWVzdCJuCiBHZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8ibgohVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0EkkKBGJvZHkYASABKAsyOy5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvInAKIlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVzcG9uc2USSgoGcmVzdWx0GAEgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyTGlzdFJlc3BvbnNlRHRvIm4KIURlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdER0byJwCiJEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckxpc3RSZXNwb25zZUR0byIjCiFSZXNldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QicAoiUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8iUgoTSW5zdGFsbFNraWxsUmVxdWVzdBI7CgRib2R5GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3REdG8iVAoUSW5zdGFsbFNraWxsUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlc3VsdER0byL3AQoYTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvEg8KB2VuYWJsZWQYASABKAgSFAoHdmVyc2lvbhgCIAEoCUgAiAEBEhMKBnNvdXJjZRgDIAEoCUgBiAEBEhcKCnJlcG9zaXRvcnkYBCABKAlIAogBARIQCgNyZWYYBSABKAlIA4gBARIRCgRwYXRoGAYgASgJSASIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAWIAQFCCgoIX3ZlcnNpb25CCQoHX3NvdXJjZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQg8KDV9jb250ZW50X2hhc2givAIKI0xvY2FsU2tpbGxNYW5hZ2VkSW5zdGFsbE1ldGFkYXRhRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgFEhAKCHNraWxsX2lkGAIgASgJEg4KBnNvdXJjZRgDIAEoCRISCgpza2lsbF9zbHVnGAQgASgJEhQKB3ZlcnNpb24YBSABKAlIAIgBARIhChRub3JtYWxpemVkX3NraWxsX2tleRgGIAEoCUgBiAEBEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSAKIAQESMwoPcmVjb3JkZWRfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfdmVyc2lvbkIXChVfbm9ybWFsaXplZF9za2lsbF9rZXlCFAoSX2luc3RhbGxfcmVmZXJlbmNlIosCChFMb2NhbFNraWxsSXRlbUR0bxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBXNjb3BlGAMgASgJEgwKBHBhdGgYBCABKAkSDgoGYWdlbnRzGAUgAygJElwKGG1hbmFnZWRfaW5zdGFsbF9tZXRhZGF0YRgGIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsTWFuYWdlZEluc3RhbGxNZXRhZGF0YUR0bxIOCgZvcmlnaW4YByABKAkSQQoIYnVpbHRfaW4YCCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvIo8BCh5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNwoFaXRlbXMYAiADKAsyKC5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEl0ZW1EdG8isQEKG0J1aWx0SW5Ta2lsbERldGFpbFNvdXJjZUR0bxIRCgR0eXBlGAEgASgJSACIAQESFwoKcmVwb3NpdG9yeRgCIAEoCUgBiAEBEhAKA3JlZhgDIAEoCUgCiAEBEhEKBHBhdGgYBCABKAlIA4gBARIQCgN1cmwYBSABKAlIBIgBAUIHCgVfdHlwZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQgYKBF91cmwiPAoYQnVpbHRJblNraWxsRmlsZUVudHJ5RHRvEgwKBHBhdGgYASABKAkSEgoKc2l6ZV9ieXRlcxgCIAEoAyI5ChtCdWlsdEluU2tpbGxNZXRhZGF0YVBhaXJEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJIo4EChVCdWlsdEluU2tpbGxEZXRhaWxEdG8SDAoEc2x1ZxgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhQKB3ZlcnNpb24YBCABKAlIAIgBARIPCgdlbmFibGVkGAUgASgIEkQKCG1ldGFkYXRhGAYgAygLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbE1ldGFkYXRhUGFpckR0bxJCCgZzb3VyY2UYByABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQnVpbHRJblNraWxsRGV0YWlsU291cmNlRHRvEhkKDGNvbnRlbnRfaGFzaBgIIAEoCUgBiAEBEj4KBWZpbGVzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbEZpbGVFbnRyeUR0bxISCgpmaWxlX2NvdW50GAogASgFEhgKEHRvdGFsX3NpemVfYnl0ZXMYCyABKAMSFwoPZmlsZXNfdHJ1bmNhdGVkGAwgASgIEhUKDWxpY2Vuc2VfZmlsZXMYDSADKAkSDAoEYm9keRgOIAEoCRIWCg5ib2R5X3RydW5jYXRlZBgPIAEoCBIXCg9ib2R5X3NpemVfYnl0ZXMYECABKANCCgoIX3ZlcnNpb25CDwoNX2NvbnRlbnRfaGFzaCLXAQocVW5pbnN0YWxsTG9jYWxTa2lsbFJlc3VsdER0bxISCgpza2lsbF9uYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIZCgx1c2VyX21lc3NhZ2UYAyABKAlIAIgBARIfChJkaWFnbm9zdGljX21lc3NhZ2UYBCABKAlIAYgBARIvCgtvY2N1cnJlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX3VzZXJfbWVzc2FnZUIVChNfZGlhZ25vc3RpY19tZXNzYWdlIjMKHVVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0RHRvEhIKCnNraWxsX25hbWUYASABKAkivAEKJFNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0bxIMCgRzbHVnGAEgASgJEg8KB2VuYWJsZWQYAiABKAgSEQoJc3VjY2VlZGVkGAMgASgIEhkKDHVzZXJfbWVzc2FnZRgEIAEoCUgAiAEBEh8KEmRpYWdub3N0aWNfbWVzc2FnZRgFIAEoCUgBiAEBQg8KDV91c2VyX21lc3NhZ2VCFQoTX2RpYWdub3N0aWNfbWVzc2FnZSJGCiVTZXRCdWlsdEluU2tpbGxBdmFpbGFiaWxpdHlSZXF1ZXN0RHRvEgwKBHNsdWcYASABKAkSDwoHZW5hYmxlZBgCIAEoCCKlAgoiU2tpbGxHYWxsZXJ5UmVwb3NpdG9yeURpc2NvdmVyeUR0bxIMCgRtb2RlGAEgASgJEhwKD3JlcXVlc3RlZF9xdWVyeRgCIAEoCUgAiAEBEh4KEW5vcm1hbGl6ZWRfc291cmNlGAMgASgJSAGIAQESGwoOcmVwb3NpdG9yeV91cmwYBCABKAlIAogBARIPCgdvdXRjb21lGAUgASgJEhcKCmVycm9yX2NvZGUYBiABKAlIA4gBARIUCgdtZXNzYWdlGAcgASgJSASIAQFCEgoQX3JlcXVlc3RlZF9xdWVyeUIUChJfbm9ybWFsaXplZF9zb3VyY2VCEQoPX3JlcG9zaXRvcnlfdXJsQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIuYBCiNUcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSHgoRbWF0Y2hlZF9ydWxlX3R5cGUYBCABKAlIAIgBARIfChJtYXRjaGVkX3J1bGVfdmFsdWUYBSABKAlIAYgBARIRCglpc19wcmVzZXQYBiABKAhCFAoSX21hdGNoZWRfcnVsZV90eXBlQhUKE19tYXRjaGVkX3J1bGVfdmFsdWUiwwEKFFNraWxsR2FsbGVyeVNraWxsRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc291cmNlGAMgASgJEhAKCGluc3RhbGxzGAQgASgFEhkKEWlzX3RydXN0ZWRfc291cmNlGAUgASgIElQKEHRydXN0ZWRfcHJvdmlkZXIYBiABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJUcnVzdFN1bW1hcnlEdG8i5AEKF1NraWxsR2FsbGVyeVJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKBWl0ZW1zGAIgAygLMisuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVNraWxsRHRvElcKFHJlcG9zaXRvcnlfZGlzY292ZXJ5GAMgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVJlcG9zaXRvcnlEaXNjb3ZlcnlEdG8i7AUKFVNraWxsR2FsbGVyeURldGFpbER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhwKD3JlcG9zaXRvcnlfbmFtZRgFIAEoCUgBiAEBEiEKFHJlcG9zaXRvcnlfZnVsbF9uYW1lGAYgASgJSAKIAQESGwoOcmVwb3NpdG9yeV91cmwYByABKAlIA4gBARImChlyZXBvc2l0b3J5X2RlZmF1bHRfYnJhbmNoGAggASgJSASIAQESHwoScmVwb3NpdG9yeV9wcml2YXRlGAkgASgISAWIAQESFgoOaXNfaW5zdGFsbGFibGUYCiABKAgSGQoRaXNfdHJ1c3RlZF9zb3VyY2UYCyABKAgSVAoQdHJ1c3RlZF9wcm92aWRlchgMIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxIeChFpbnN0YWxsX3JlZmVyZW5jZRgNIAEoCUgGiAEBEiQKF2luc3RhbGxfY29tbWFuZF9wcmV2aWV3GA4gASgJSAeIAQESHAoPaW5zdGFsbF92ZXJzaW9uGA8gASgJSAiIAQESGQoMaW5zdGFsbF9oaW50GBAgASgJSAmIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9yZXBvc2l0b3J5X25hbWVCFwoVX3JlcG9zaXRvcnlfZnVsbF9uYW1lQhEKD19yZXBvc2l0b3J5X3VybEIcChpfcmVwb3NpdG9yeV9kZWZhdWx0X2JyYW5jaEIVChNfcmVwb3NpdG9yeV9wcml2YXRlQhQKEl9pbnN0YWxsX3JlZmVyZW5jZUIaChhfaW5zdGFsbF9jb21tYW5kX3ByZXZpZXdCEgoQX2luc3RhbGxfdmVyc2lvbkIPCg1faW5zdGFsbF9oaW50Iq4DCh1Ta2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIWCg5pc19pbnN0YWxsYWJsZRgEIAEoCBIZChFpc190cnVzdGVkX3NvdXJjZRgFIAEoCBJUChB0cnVzdGVkX3Byb3ZpZGVyGAYgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyVHJ1c3RTdW1tYXJ5RHRvEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSACIAQESJAoXaW5zdGFsbF9jb21tYW5kX3ByZXZpZXcYCCABKAlIAYgBARIcCg9pbnN0YWxsX3ZlcnNpb24YCSABKAlIAogBARIZCgxpbnN0YWxsX2hpbnQYCiABKAlIA4gBAUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCGgoYX2luc3RhbGxfY29tbWFuZF9wcmV2aWV3QhIKEF9pbnN0YWxsX3ZlcnNpb25CDwoNX2luc3RhbGxfaGludCJFCiBUcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0bxISCgptYXRjaF90eXBlGAEgASgJEg0KBXZhbHVlGAIgASgJIo8CChdUcnVzdGVkU2tpbGxQcm92aWRlckR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSEQoJaXNfcHJlc2V0GAQgASgIEhIKCmlzX2VuYWJsZWQYBSABKAgSEgoKc29ydF9vcmRlchgGIAEoBRISCgpydWxlX2NvdW50GAcgASgFEhcKD3NvdXJjZV9leGFtcGxlcxgIIAMoCRJMCgttYXRjaF9ydWxlcxgJIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0byKrAQojVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmVyc2lvbhgCIAEoBRI9CgVpdGVtcxgDIAMoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckR0byLxAQokVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtiYWRnZV9sYWJlbBgDIAEoCUgAiAEBEhIKCmlzX2VuYWJsZWQYBCABKAgSEgoKc29ydF9vcmRlchgFIAEoBRJMCgttYXRjaF9ydWxlcxgGIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0b0IOCgxfYmFkZ2VfbGFiZWwiOwokRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJIrgDChVJbnN0YWxsU2tpbGxSZXN1bHREdG8SEAoIc2tpbGxfaWQYASABKAkSDgoGc291cmNlGAIgASgJEhIKCnNraWxsX3NsdWcYAyABKAkSIQoUbm9ybWFsaXplZF9za2lsbF9rZXkYBCABKAlIAIgBARIeChFpbnN0YWxsX3JlZmVyZW5jZRgFIAEoCUgBiAEBEhwKD2NvbW1hbmRfcHJldmlldxgGIAEoCUgCiAEBEhQKB3ZlcnNpb24YByABKAlIA4gBARIOCgZzdGF0dXMYCCABKAkSGQoMdXNlcl9tZXNzYWdlGAkgASgJSASIAQESHwoSZGlhZ25vc3RpY19tZXNzYWdlGAogASgJSAWIAQESLwoLb2NjdXJyZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9ub3JtYWxpemVkX3NraWxsX2tleUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCEgoQX2NvbW1hbmRfcHJldmlld0IKCghfdmVyc2lvbkIPCg1fdXNlcl9tZXNzYWdlQhUKE19kaWFnbm9zdGljX21lc3NhZ2UiagoWSW5zdGFsbFNraWxsUmVxdWVzdER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIUCgd2ZXJzaW9uGAQgASgJSACIAQFCCgoIX3ZlcnNpb24iGwoZTGlzdFVzZXJTa2lsbEJhc2VzUmVxdWVzdCJfChpMaXN0VXNlclNraWxsQmFzZXNSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8iWgoXQWRkVXNlclNraWxsQmFzZVJlcXVlc3QSPwoEYm9keRgBIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdER0byJZChhBZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVtb3ZlVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJiChtSZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlbW92ZVVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVzY2FuVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJcChtSZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iYAoaU2V0VXNlclNraWxsRW5hYmxlZFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdER0byJiChtTZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldFVzZXJTa2lsbEVuYWJsZWRSZXN1bHREdG8i+AEKEFVzZXJTa2lsbEJhc2VEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSDAoEcGF0aBgDIAEoCRIOCgZzdGF0dXMYBCABKAkSGgoNc3RhdHVzX3JlYXNvbhgFIAEoCUgAiAEBEhsKDnN0YXR1c19tZXNzYWdlGAYgASgJSAGIAQESMwoGc2tpbGxzGAcgAygLMiMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbER0bxIYChBza2lsbHNfdHJ1bmNhdGVkGAggASgIQhAKDl9zdGF0dXNfcmVhc29uQhEKD19zdGF0dXNfbWVzc2FnZSL9AQoMVXNlclNraWxsRHRvEgwKBHNsdWcYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg8KB2VuYWJsZWQYBCABKAgSDgoGc3RhdHVzGAUgASgJEhsKDmNvbmZsaWN0c193aXRoGAYgASgJSAGIAQESPAoIcHJvYmxlbXMYByADKAsyKi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsUHJvYmxlbUR0bxIKCgJpZBgIIAEoCRIMCgRwYXRoGAkgASgJQg4KDF9kZXNjcmlwdGlvbkIRCg9fY29uZmxpY3RzX3dpdGgiNAoTVXNlclNraWxsUHJvYmxlbUR0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkiSAoaQWRkVXNlclNraWxsQmFzZVJlcXVlc3REdG8SDAoEcGF0aBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBQggKBl9sYWJlbCKTAQoaVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8SEQoJc3VjY2VlZGVkGAEgASgIEhkKDHVzZXJfbWVzc2FnZRgCIAEoCUgAiAEBEjYKBWJhc2VzGAMgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VEdG9CDwoNX3VzZXJfbWVzc2FnZSKOAQoWVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESNQoEYmFzZRgDIAEoCzInLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vc2VyU2tpbGxCYXNlRHRvQg8KDV91c2VyX21lc3NhZ2UibgocUmVtb3ZlVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESDwoHYmFzZV9pZBgDIAEoCUIPCg1fdXNlcl9tZXNzYWdlIlUKHVNldFVzZXJTa2lsbEVuYWJsZWRSZXF1ZXN0RHRvEg8KB2Jhc2VfaWQYASABKAkSEgoKc2tpbGxfc2x1ZxgCIAEoCRIPCgdlbmFibGVkGAMgASgIIpMBChxTZXRVc2VyU2tpbGxFbmFibGVkUmVzdWx0RHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIZCgx1c2VyX21lc3NhZ2UYAiABKAlIAIgBARIPCgdiYXNlX2lkGAMgASgJEhIKCnNraWxsX3NsdWcYBCABKAkSDwoHZW5hYmxlZBgFIAEoCEIPCg1fdXNlcl9tZXNzYWdlMtASChNTa2lsbEdhbGxlcnlTZXJ2aWNlEm0KDkdldExvY2FsU2tpbGxzEiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldExvY2FsU2tpbGxzUmVxdWVzdBotLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRMb2NhbFNraWxsc1Jlc3BvbnNlEoIBChVHZXRCdWlsdEluU2tpbGxEZXRhaWwSMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBo0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRCdWlsdEluU2tpbGxEZXRhaWxSZXNwb25zZRJ8ChNVbmluc3RhbGxMb2NhbFNraWxsEjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0GjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXNwb25zZRKUAQobU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5EjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2UScAoPR2V0U2tpbGxHYWxsZXJ5Ei0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeVJlcXVlc3QaLi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5UmVzcG9uc2USggEKFUdldFNraWxsR2FsbGVyeURldGFpbBIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeURldGFpbFJlc3BvbnNlEn8KFEdldFNraWxsR2FsbGVyeUF1ZGl0EjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBozLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlBdWRpdFJlc3BvbnNlEpoBCh1HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dBI7LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dFJlcXVlc3QaPC5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRKLAQoYR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzEjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USkQEKGlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyEjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBo5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5VcHNlcnRUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEpEBChpEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlchI4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5EZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlcXVlc3QaOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXNwb25zZRKRAQoaUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnMSOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXF1ZXN0GjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlc2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USZwoMSW5zdGFsbFNraWxsEiouaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3QaKy5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbFNraWxsUmVzcG9uc2USeQoSTGlzdFVzZXJTa2lsbEJhc2VzEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RVc2VyU2tpbGxCYXNlc1JlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFVzZXJTa2lsbEJhc2VzUmVzcG9uc2UScwoQQWRkVXNlclNraWxsQmFzZRIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVtb3ZlVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVzY2FuVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTU2V0VXNlclNraWxsRW5hYmxlZBIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2VCK6oCKFBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5Db21tdW5pdHkuVjFiBnByb3RvMw",[Ne]),vh=v(ae,1),Wh=v(ae,5),yh=v(ae,7),Ih=v(ae,9),Yh=v(ae,11),Xh=v(ae,13),Bh=v(ae,19),Ch=v(ae,21),Fh=v(ae,23),wh=v(ae,25),kh=v(ae,27),Uh=v(ae,37),Jh=v(ae,39),xh=v(ae,49),Kh=v(ae,50),zh=v(ae,52),Lh=We(ae,0),Is=oe("CiVoYWdpY29kZS9wbGF0Zm9ybS92MS9zdGF0aXN0aWNzLnByb3RvEhRoYWdpY29kZS5wbGF0Zm9ybS52MSJ1ChhHZXRBZ2dyZWdhdGVkRGF0YVJlcXVlc3QSFQoNZm9yY2VfcmVmcmVzaBgBIAEoCBIlChhnaXRfYXV0b19yZWZyZXNoX2VuYWJsZWQYAiABKAhIAIgBAUIbChlfZ2l0X2F1dG9fcmVmcmVzaF9lbmFibGVkIl0KGUdldEFnZ3JlZ2F0ZWREYXRhUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8iHQobR2V0VG9rZW5Nb25pdG9yVXNhZ2VSZXF1ZXN0ImIKHEdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yVXNhZ2VTbmFwc2hvdER0byK/AQodR2V0VG9rZW5Nb25pdG9ySGlzdG9yeVJlcXVlc3QSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgAiAEBEhcKCnBhZ2VfdG9rZW4YBCABKAlIAYgBAUIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuImIKHkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRJACgZyZXN1bHQYASABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JIaXN0b3J5UGFnZUR0byKTAQoaVG9rZW5Nb25pdG9ySGlzdG9yeVBhZ2VEdG8SQwoHc2FtcGxlcxgBIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlTYW1wbGVEdG8SHAoPbmV4dF9wYWdlX3Rva2VuGAIgASgJSACIAQFCEgoQX25leHRfcGFnZV90b2tlbiKhAwocVG9rZW5Nb25pdG9ySGlzdG9yeVNhbXBsZUR0bxIzCg9vYnNlcnZlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGwoOZmFpbHVyZV9yZWFzb24YBCABKAlIAIgBARIVCghkYXRlX2tleRgFIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgGIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAcgASgBSAOIAQESQwoHcGVyaW9kcxgIIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlQZXJpb2REdG8SQwoHd2luZG93cxgJIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlXaW5kb3dEdG9CEQoPX2ZhaWx1cmVfcmVhc29uQgsKCV9kYXRlX2tleUIPCg1fdG90YWxfdG9rZW5zQgsKCV9jb3N0X3VzZCKOAwocVG9rZW5Nb25pdG9ySGlzdG9yeVBlcmlvZER0bxIOCgZwZXJpb2QYASABKAkSFAoMdG90YWxfdG9rZW5zGAIgASgDEhAKCGNvc3RfdXNkGAMgASgBEh4KEWNhY2hlX3JlYWRfdG9rZW5zGAQgASgDSACIAQESHwoSY2FjaGVfd3JpdGVfdG9rZW5zGAUgASgDSAGIAQESGgoNb3V0cHV0X3Rva2VucxgGIAEoA0gCiAEBEhkKDHRpbWVkX3Rva2VucxgHIAEoA0gDiAEBEiAKE3RpbWVkX291dHB1dF90b2tlbnMYCCABKANIBIgBARIeChF0aW1lZF9kdXJhdGlvbl9tcxgJIAEoA0gFiAEBQhQKEl9jYWNoZV9yZWFkX3Rva2Vuc0IVChNfY2FjaGVfd3JpdGVfdG9rZW5zQhAKDl9vdXRwdXRfdG9rZW5zQg8KDV90aW1lZF90b2tlbnNCFgoUX3RpbWVkX291dHB1dF90b2tlbnNCFAoSX3RpbWVkX2R1cmF0aW9uX21zIp0DChxUb2tlbk1vbml0b3JIaXN0b3J5V2luZG93RHRvEhAKCHByb3ZpZGVyGAEgASgJEhcKCnBsYW5fbGFiZWwYAiABKAlIAIgBARIXCg9wcm92aWRlcl9zdGF0dXMYAyABKAkSDAoEa2luZBgEIAEoCRISCgVsYWJlbBgFIAEoCUgBiAEBEhsKDndpbmRvd19taW51dGVzGAYgASgFSAKIAQESGQoMdXNlZF9wZXJjZW50GAcgASgBSAOIAQESHgoRcmVtYWluaW5nX3BlcmNlbnQYCCABKAFIBIgBARIxCg1yZXNldHNfYXRfdXRjGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVzb3VyY2VfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19wbGFuX2xhYmVsQggKBl9sYWJlbEIRCg9fd2luZG93X21pbnV0ZXNCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnQidQohR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2VSZXF1ZXN0EigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJmCiJHZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEkAKBnJlc3VsdBgBIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhvdXJseVVzYWdlRHRvItcCChpUb2tlbk1vbml0b3JIb3VybHlVc2FnZUR0bxIyCg5ob3VyX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXRjX29mZnNldF9taW51dGVzGAIgASgFEg4KBnRva2VucxgDIAEoAxIQCghjb3N0X3VzZBgEIAEoARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSACIAQESHgoRY2FjaGVfcmVhZF90b2tlbnMYBiABKANIAYgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYByABKANIAogBARIYChBvYnNlcnZlZF9zZWNvbmRzGAggASgFEhEKCWVzdGltYXRlZBgJIAEoCEIQCg5fb3V0cHV0X3Rva2Vuc0IUChJfY2FjaGVfcmVhZF90b2tlbnNCFQoTX2NhY2hlX3dyaXRlX3Rva2VucyIlCiNHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVxdWVzdCJgCiRHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0RHRvIkQKIEdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXF1ZXN0EhQKB21pbnV0ZXMYASABKAVIAIgBAUIKCghfbWludXRlcyJiCiFHZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVzcG9uc2USPQoGcmVzdWx0GAEgAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0U25hcHNob3QiOAoaR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QSEQoEZGF0ZRgBIAEoCUgAiAEBQgcKBV9kYXRlIlgKG0dldEhlcm9CYXR0bGVSZXBvcnRSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RHRvIkAKIEdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXF1ZXN0EhIKBXJhbmdlGAEgASgJSACIAQFCCAoGX3JhbmdlImcKIUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvIuwCChxHZXRIaXN0b3JpY2FsVGltZWxpbmVSZXF1ZXN0EhgKC2VudGl0eV90eXBlGAEgASgJSACIAQESFgoJZW50aXR5X2lkGAIgASgJSAGIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgCiAEBEhcKCnNlc3Npb25faWQYBCABKAlIA4gBARIzCg9yYW5nZV9zdGFydF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjEKDXJhbmdlX2VuZF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBmN1cnNvchgHIAEoCUgEiAEBEhYKCXBhZ2Vfc2l6ZRgIIAEoBUgFiAEBQg4KDF9lbnRpdHlfdHlwZUIMCgpfZW50aXR5X2lkQg0KC19wcm9qZWN0X2lkQg0KC19zZXNzaW9uX2lkQgkKB19jdXJzb3JCDAoKX3BhZ2Vfc2l6ZSJpCh1HZXRIaXN0b3JpY2FsVGltZWxpbmVSZXNwb25zZRJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvIiUKI0dldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXF1ZXN0InIKJEdldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VEdG8iqgEKFkFnZ3JlZ2F0aW9uTWV0YWRhdGFEdG8SLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg50b3RhbF9wcm9qZWN0cxgCIAEoBRIaChJ0b3RhbF9yZXBvc2l0b3JpZXMYAyABKAUSFwoPZmFpbGVkX3Byb2plY3RzGAQgASgFEhQKDGhhc19mYWlsdXJlcxgFIAEoCCKyBQoYUmVwb3NpdG9yeUFnZ3JlZ2F0aW9uRHRvEhEKBGNvZGUYASABKAlIAIgBARIMCgRuYW1lGAIgASgJEgwKBHBhdGgYAyABKAkSFQoNcmVsYXRpdmVfcGF0aBgEIAEoCRIUCgxkaXNwbGF5X25hbWUYBSABKAkSEQoEdHlwZRgGIAEoCUgBiAEBEgwKBHRhZ3MYByADKAkSEQoEaWNvbhgIIAEoCUgCiAEBEhAKA3VybBgJIAEoCUgDiAEBEhgKEGNvbGxhcHNlX3RvX21vcmUYCiABKAgSGQoRaXNfdmFsaWRfZ2l0X3JlcG8YCyABKAgSHAoUZ2l0X3N0YXR1c19hdmFpbGFibGUYDCABKAgSEwoGYnJhbmNoGA0gASgJSASIAQESHwoXaGFzX3VuY29tbWl0dGVkX2NoYW5nZXMYDiABKAgSHQoVdW5wdXNoZWRfY29tbWl0X2NvdW50GA8gASgFEhsKE2hhc190cmFja2luZ19icmFuY2gYECABKAgSNQoPdHJhY2tpbmdfYnJhbmNoGBEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEhMKC2FoZWFkX2NvdW50GBIgASgFEhQKDGJlaGluZF9jb3VudBgTIAEoBRIXCgpzeW5jX3N0YXRlGBQgASgJSAWIAQESEwoLaXNfb3B0aW9uYWwYFSABKAgSFAoMaXNfc2FuaXRpemVkGBYgASgIEhsKE3Nhbml0aXphdGlvbl9yZWFzb24YFyABKAkSGAoQaGFzX25hbWVfd2FybmluZxgYIAEoCBIVCg1uYW1lX3dhcm5pbmdzGBkgAygJQgcKBV9jb2RlQgcKBV90eXBlQgcKBV9pY29uQgYKBF91cmxCCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSK6BAoVUHJvamVjdEFnZ3JlZ2F0aW9uRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhUKDWlzX21vbm9fc3BlY3MYBSABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAYgASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgHIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgIIAEoCEgDiAEBEkQKDHJlcG9zaXRvcmllcxgJIAMoCzIuLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlJlcG9zaXRvcnlBZ2dyZWdhdGlvbkR0bxJBCh1naXRfc25hcHNob3RfcmVmcmVzaGVkX2F0X3V0YxgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIQoZZ2l0X3NuYXBzaG90X3NlcnZlZF9zdGFsZRgLIAEoCBIrCgVlcnJvchgMIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIRCgloYXNfZXJyb3IYDSABKAhCDgoMX2Rlc2NyaXB0aW9uQhUKE19tb25vX3NwZWNzX3ZlcnNpb25CHAoaX21vbm9fc3BlY3NfcmVwb19kaXJlY3RvcnlCIQofX21vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZSKbAQoaRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8SPQoIcHJvamVjdHMYASADKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Qcm9qZWN0QWdncmVnYXRpb25EdG8SPgoIbWV0YWRhdGEYAiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5BZ2dyZWdhdGlvbk1ldGFkYXRhRHRvIqkDChxUb2tlbk1vbml0b3JVc2FnZVNuYXBzaG90RHRvEg4KBnN0YXR1cxgBIAEoCRIOCgZzb3VyY2UYAiABKAkSGwoOZmFpbHVyZV9yZWFzb24YAyABKAlIAIgBARIVCghkYXRlX2tleRgEIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgFIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAYgASgBSAOIAQESLwoLcmVhZF9hdF91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhgKEHNuYXBzaG90X3ZlcnNpb24YCCABKAMSOwoGbGltaXRzGAkgASgLMisuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yTGltaXRzRHRvEj0KB3BlcmlvZHMYCiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RzRHRvQhEKD19mYWlsdXJlX3JlYXNvbkILCglfZGF0ZV9rZXlCDwoNX3RvdGFsX3Rva2Vuc0ILCglfY29zdF91c2QiugEKFVRva2VuTW9uaXRvckxpbWl0c0R0bxIyCg51cGRhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKcmVmcmVzaF9tcxgCIAEoBUgAiAEBEkUKCXByb3ZpZGVycxgDIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG9CDQoLX3JlZnJlc2hfbXMi0wIKHFRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSDgoGc3RhdHVzGAIgASgJEhcKCnBsYW5fbGFiZWwYAyABKAlIAIgBARIyCg51cGRhdGVkX2F0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoHd2luZG93cxgFIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEhgKC2JhbGFuY2VfdXNkGAYgASgBSAGIAQESSAoNcmVzZXRfY3JlZGl0cxgHIAEoCzIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0b0INCgtfcGxhbl9sYWJlbEIOCgxfYmFsYW5jZV91c2Qi9QMKGlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEgwKBGtpbmQYASABKAkSEgoFbGFiZWwYAiABKAlIAIgBARIZCgx1c2VkX3BlcmNlbnQYAyABKAFIAYgBARIeChFyZW1haW5pbmdfcGVyY2VudBgEIAEoAUgCiAEBEhEKBHVzZWQYBSABKAFIA4gBARISCgVsaW1pdBgGIAEoAUgEiAEBEhYKCXJlbWFpbmluZxgHIAEoAUgFiAEBEhUKCGN1cnJlbmN5GAggASgJSAaIAQESMQoNcmVzZXRzX2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOd2luZG93X21pbnV0ZXMYCiABKAVIB4gBARIeChFyZXNldF9kZXNjcmlwdGlvbhgLIAEoCUgIiAEBEhoKDW1ldGVyX3Zpc2libGUYDCABKAhICYgBAUIICgZfbGFiZWxCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnRCBwoFX3VzZWRCCAoGX2xpbWl0QgwKCl9yZW1haW5pbmdCCwoJX2N1cnJlbmN5QhEKD193aW5kb3dfbWludXRlc0IUChJfcmVzZXRfZGVzY3JpcHRpb25CEAoOX21ldGVyX3Zpc2libGUivQEKG1Rva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0bxIcCg9hdmFpbGFibGVfY291bnQYASABKAVIAIgBARI3ChNuZXh0X2V4cGlyZXNfYXRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9leHBpcmF0aW9uc191dGMYAyADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhIKEF9hdmFpbGFibGVfY291bnQizwEKFlRva2VuTW9uaXRvclBlcmlvZHNEdG8SOgoFdG9kYXkYASABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SOgoFbW9udGgYAiABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SPQoIYWxsX3RpbWUYAyABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8iigQKFVRva2VuTW9uaXRvclBlcmlvZER0bxIUCgx0b3RhbF90b2tlbnMYASABKAMSEAoIY29zdF91c2QYAiABKAESHgoRY2FjaGVfcmVhZF90b2tlbnMYAyABKANIAIgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYBCABKANIAYgBARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSAKIAQESGQoMdGltZWRfdG9rZW5zGAYgASgDSAOIAQESIAoTdGltZWRfb3V0cHV0X3Rva2VucxgHIAEoA0gEiAEBEh4KEXRpbWVkX2R1cmF0aW9uX21zGAggASgDSAWIAQESTQoMY2FwYWJpbGl0aWVzGAkgASgLMjcuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEkIKB2NsaWVudHMYCiADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RDbGllbnREdG9CFAoSX2NhY2hlX3JlYWRfdG9rZW5zQhUKE19jYWNoZV93cml0ZV90b2tlbnNCEAoOX291dHB1dF90b2tlbnNCDwoNX3RpbWVkX3Rva2Vuc0IWChRfdGltZWRfb3V0cHV0X3Rva2Vuc0IUChJfdGltZWRfZHVyYXRpb25fbXMifwohVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEh0KEHRva2VuX2NvbXBvbmVudHMYASABKAhIAIgBARIXCgp0aHJvdWdocHV0GAIgASgISAGIAQFCEwoRX3Rva2VuX2NvbXBvbmVudHNCDQoLX3Rocm91Z2hwdXQiTwobVG9rZW5Nb25pdG9yUGVyaW9kQ2xpZW50RHRvEg4KBmNsaWVudBgBIAEoCRIOCgZ0b2tlbnMYAiABKAMSEAoIY29zdF91c2QYAyABKAEi2AIKElRva2VuVGhyb3VnaHB1dER0bxIfChdpbnB1dF90b2tlbnNfcGVyX21pbnV0ZRgBIAEoBRIgChhvdXRwdXRfdG9rZW5zX3Blcl9taW51dGUYAiABKAUSGgoSdG90YWxfaW5wdXRfdG9rZW5zGAMgASgDEhsKE3RvdGFsX291dHB1dF90b2tlbnMYBCABKAMSMAoMbGFzdF91cGRhdGVkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCh9yZWd1bGFyX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAYgASgFEiUKHWNhY2hlX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAcgASgFEiIKGnRvdGFsX3JlZ3VsYXJfaW5wdXRfdG9rZW5zGAggASgDEiAKGHRvdGFsX2NhY2hlX2lucHV0X3Rva2VucxgJIAEoAyKvAQoXVG9rZW5UaHJvdWdocHV0U25hcHNob3QSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxpbnB1dF90b2tlbnMYAiABKAUSFQoNb3V0cHV0X3Rva2VucxgDIAEoBRIcChRyZWd1bGFyX2lucHV0X3Rva2VucxgEIAEoBRIaChJjYWNoZV9pbnB1dF90b2tlbnMYBSABKAUi4AEKLEhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvEhUKDWNhbm9uaWNhbF9rZXkYASABKAkSEAoIbmFtZV9rZXkYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSMwoPdW5sb2NrZWRfYXRfdXRjGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5wcm9ncmVzc19hZnRlchgFIAEoBRIOCgZ0YXJnZXQYBiABKAUSFQoNcmV3YXJkX2Ftb3VudBgHIAEoAyK7AQopSGVyb0JhdHRsZVJlcG9ydFBlbmRpbmdBY2hpZXZlbWVudEhpbnREdG8SFQoNY2Fub25pY2FsX2tleRgBIAEoCRIQCghuYW1lX2tleRgCIAEoCRIRCglnb2FsX3R5cGUYAyABKAkSEAoIcHJvZ3Jlc3MYBCABKAUSDgoGdGFyZ2V0GAUgASgFEhcKD3JlbWFpbmluZ19jb3VudBgGIAEoBRIXCg9jb21wbGV0aW9uX3JhdGUYByABKAEivQIKJUhlcm9CYXR0bGVSZXBvcnRBY2hpZXZlbWVudFN1bW1hcnlEdG8SGAoQaGFzX2FyY2hpdmVfZGF0YRgBIAEoCBIXCg9jb21wbGV0ZWRfY291bnQYAiABKAUSEwoLdG90YWxfY291bnQYAyABKAUSFwoPY29tcGxldGlvbl9yYXRlGAQgASgBElsKD2xhdGVzdF91bmxvY2tlZBgFIAEoCzJCLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvElYKDXBlbmRpbmdfaGludHMYBiADKAsyPy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UGVuZGluZ0FjaGlldmVtZW50SGludER0byL0AgojSGVyb0JhdHRsZVJlcG9ydEhpZ2hsaWdodFNlc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRISCgV0aXRsZRgCIAEoCUgAiAEBEhkKDHNlc3Npb25fY29kZRgDIAEoCUgBiAEBEhkKDHNlc3Npb25fdHlwZRgEIAEoCUgCiAEBEhoKDXByb3Bvc2FsX25hbWUYBSABKAlIA4gBARIWCg5hY3Rpdml0eV9jb3VudBgGIAEoBRIiChpjb21wbGV0ZWRfYXNzaXN0YW5jZV9jb3VudBgHIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgIIAEoBRI4ChRsYXN0X2FjdGl2aXR5X2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX3RpdGxlQg8KDV9zZXNzaW9uX2NvZGVCDwoNX3Nlc3Npb25fdHlwZUIQCg5fcHJvcG9zYWxfbmFtZSKnAwoiSGVyb0JhdHRsZVJlcG9ydEFjdGl2aXR5U3VtbWFyeUR0bxIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYASABKAUSIgoaY2hhdF9zZXNzaW9uX2NyZWF0ZWRfY291bnQYAiABKAUSJgoecHJvcG9zYWxfc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgFEhYKDnByb3Bvc2FsX2NvdW50GAQgASgFEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgFIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgGIAEoBRIfChdwcm9wb3NhbF9hcmNoaXZlZF9jb3VudBgHIAEoBRIiChphc3Npc3RhbmNlX2NvbXBsZXRlZF9jb3VudBgIIAEoBRIfChdhc3Npc3RhbmNlX2ZhaWxlZF9jb3VudBgJIAEoBRJVChJoaWdobGlnaHRfc2Vzc2lvbnMYCiADKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGlnaGxpZ2h0U2Vzc2lvbkR0byJGCiNIZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxIQCghwcmV2aW91cxgBIAEoAxINCgVkZWx0YRgCIAEoAyK8BQodSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25EdG8SGAoQaGFzX3ByZXZpb3VzX2RheRgBIAEoCBIaCg1wcmV2aW91c19kYXRlGAIgASgJSACIAQESVAoRYWN0aXZlX2hlcm9fY291bnQYAyABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg9leGVjdXRpb25fY291bnQYBCABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg90b29sX2NhbGxfY291bnQYBSABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJPCgx0b3RhbF90b2tlbnMYBiABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJYChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYByABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJRCg5wcm9wb3NhbF9jb3VudBgIIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvElcKFGhhZ2lwb3dlcl9uZXRfY2hhbmdlGAkgASgLMjkuaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25NZXRyaWNEdG9CEAoOX3ByZXZpb3VzX2RhdGUixgEKG0hlcm9CYXR0bGVSZXBvcnRFeGVjdXRvckR0bxIVCg1leGVjdXRvcl90eXBlGAEgASgJEhIKCmhlcm9fY291bnQYAiABKAUSGQoRYWN0aXZlX2hlcm9fY291bnQYAyABKAUSFwoPZXhlY3V0aW9uX2NvdW50GAQgASgFEhcKD3Rvb2xfY2FsbF9jb3VudBgFIAEoBRIUCgx0b3RhbF90b2tlbnMYBiABKAMSGQoRdG90YWxfZHVyYXRpb25fbXMYByABKAMiuAEKIUhlcm9CYXR0bGVSZXBvcnRIYWdpcG93ZXJQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItwDChxIZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEjMKD3JhbmdlX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoNcmFuZ2VfZW5kX3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoOYnVja2V0X21pbnV0ZXMYAyABKAUSFwoPaGFzX2ZpbGxlZF9nYXBzGAQgASgIEhwKFGhhc19yZWNvcmRlZF9oaXN0b3J5GAUgASgIEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYBiABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAcgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgIIAEoAxISCgpuZXRfY2hhbmdlGAkgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEk4KDXB1YmxpY19zZXJpZXMYCyADKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyUG9pbnREdG8iiQQKF0hlcm9CYXR0bGVSZXBvcnRIZXJvRHRvEg8KB2hlcm9faWQYASABKAkSEQoJaGVyb19uYW1lGAIgASgJEhYKCWhlcm9faWNvbhgDIAEoCUgAiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBCABKAkSEgoFbW9kZWwYBSABKAlIAYgBARIYCgtkZXNjcmlwdGlvbhgGIAEoCUgCiAEBEgwKBHJhbmsYByABKAUSDgoGc3RhdHVzGAggASgJEg0KBWdyYWRlGAkgASgJEhQKDGJhdHRsZV9zY29yZRgKIAEoBRIXCg9leGVjdXRpb25fY291bnQYCyABKAUSFwoPdG9vbF9jYWxsX2NvdW50GAwgASgFEhQKDGlucHV0X3Rva2VucxgNIAEoAxIaChJjYWNoZV9pbnB1dF90b2tlbnMYDiABKAMSFQoNb3V0cHV0X3Rva2VucxgPIAEoAxIbChNjYWNoZV9vdXRwdXRfdG9rZW5zGBAgASgDEhQKDHRvdGFsX3Rva2VucxgRIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgSIAEoAxI5ChVsYXN0X2NvbXBsZXRlZF9hdF91dGMYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsQg4KDF9kZXNjcmlwdGlvbiKAAgoiSGVyb0JhdHRsZVJlcG9ydFByb2plY3RBY3Rpdml0eUR0bxISCgpwcm9qZWN0X2lkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIWCg5hY3Rpdml0eV9jb3VudBgDIAEoBRIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYBCABKAUSFgoOcHJvcG9zYWxfY291bnQYBSABKAUSIgoaYXNzaXN0YW5jZV9jb21wbGV0ZWRfY291bnQYBiABKAUSHwoXYXNzaXN0YW5jZV9mYWlsZWRfY291bnQYByABKAUSFgoOYWN0aXZpdHlfc2hhcmUYCCABKAFCBwoFX25hbWUi+gEKIUhlcm9CYXR0bGVSZXBvcnRQcm9qZWN0UHJvZmlsZUR0bxIQCghoYXNfZGF0YRgBIAEoCBIdChVwcm9qZWN0X2NyZWF0ZWRfY291bnQYAiABKAMSHQoVc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgDEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgEIAEoAxIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgFIAEoAxITCgt0b2tlbl90b3RhbBgGIAEoAxItCglhc19vZl91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIo0CChtIZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SGwoTdG90YWxfcHJvamVjdF9jb3VudBgBIAEoBRIcChRhY3RpdmVfcHJvamVjdF9jb3VudBgCIAEoBRIZChFuZXdfcHJvamVjdF9jb3VudBgDIAEoBRJOCgx0b3BfcHJvamVjdHMYBCADKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdEFjdGl2aXR5RHRvEkgKB3Byb2ZpbGUYBSABKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdFByb2ZpbGVEdG8irQIKFkhlcm9CYXR0bGVSZXBvcnRNdnBEdG8SDwoHaGVyb19pZBgBIAEoCRIRCgloZXJvX25hbWUYAiABKAkSFgoJaGVyb19pY29uGAMgASgJSACIAQESFQoNZXhlY3V0b3JfdHlwZRgEIAEoCRISCgVtb2RlbBgFIAEoCUgBiAEBEgwKBHJhbmsYBiABKAUSFAoMYmF0dGxlX3Njb3JlGAcgASgFEg0KBWdyYWRlGAggASgJEhcKD2V4ZWN1dGlvbl9jb3VudBgJIAEoBRIXCg90b29sX2NhbGxfY291bnQYCiABKAUSFAoMdG90YWxfdG9rZW5zGAsgASgDEhkKEXRvdGFsX2R1cmF0aW9uX21zGAwgASgDQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsItkCChpIZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxIYChB0b3RhbF9oZXJvX2NvdW50GAEgASgFEhkKEWFjdGl2ZV9oZXJvX2NvdW50GAIgASgFEhoKEnRvdGFsX2JhdHRsZV9zY29yZRgDIAEoBRIYChB0b3RhbF90b29sX2NhbGxzGAQgASgFEhQKDHRvdGFsX3Rva2VucxgFIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgGIAEoAxIUCgxpbnB1dF90b2tlbnMYByABKAMSGgoSY2FjaGVfaW5wdXRfdG9rZW5zGAggASgDEhUKDW91dHB1dF90b2tlbnMYCSABKAMSGwoTY2FjaGVfb3V0cHV0X3Rva2VucxgKIAEoAxI5CgNtdnAYCyABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0TXZwRHRvIqYGChNIZXJvQmF0dGxlUmVwb3J0RHRvEhMKC3JlcG9ydF9kYXRlGAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHRpbWVfem9uZV9pZBgDIAEoCRI1ChFjb3ZlcmVkX3N0YXJ0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoPY292ZXJlZF9lbmRfdXRjGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJFCgloYWdpcG93ZXIYBiABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEkEKB3N1bW1hcnkYByABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxJRCgxhY2hpZXZlbWVudHMYCCABKAsyOy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWNoaWV2ZW1lbnRTdW1tYXJ5RHRvElIKEGFjdGl2aXR5X3N1bW1hcnkYCSABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWN0aXZpdHlTdW1tYXJ5RHRvEkcKCmNvbXBhcmlzb24YCiABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbkR0bxJECglleGVjdXRvcnMYCyADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RXhlY3V0b3JEdG8SQwoIcHJvamVjdHMYDCABKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SPQoGaGVyb2VzGA0gAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydEhlcm9EdG8itQEKHkhhZ2lwb3dlclB1YmxpY0hpc3RvcnlQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItcBCh5IYWdpcG93ZXJTdGF0aXN0aWNzTWV0YWRhdGFEdG8SMwoPcmFuZ2Vfc3RhcnRfdXRjGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1yYW5nZV9lbmRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5idWNrZXRfbWludXRlcxgDIAEoBRIXCg9oYXNfZmlsbGVkX2dhcHMYBCABKAgSHAoUaGFzX3JlY29yZGVkX2hpc3RvcnkYBSABKAgi1gEKHUhhZ2lwb3dlclN0YXRpc3RpY3NTdW1tYXJ5RHRvEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYASABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAIgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgDIAEoAxISCgpuZXRfY2hhbmdlGAQgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIogCChxIYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvEg0KBXJhbmdlGAEgASgJEkYKCG1ldGFkYXRhGAIgASgLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyU3RhdGlzdGljc01ldGFkYXRhRHRvEkQKB3N1bW1hcnkYAyABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzU3VtbWFyeUR0bxJLCg1wdWJsaWNfc2VyaWVzGAQgAygLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyUHVibGljSGlzdG9yeVBvaW50RHRvIrsDChpIaXN0b3JpY2FsVGltZWxpbmVFdmVudER0bxIQCghldmVudF9pZBgBIAEoCRIzCg9vY2N1cnJlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDmNyZWF0ZWRfYXRfdXRjGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtlbnRpdHlfdHlwZRgEIAEoCRIRCgllbnRpdHlfaWQYBSABKAkSFwoKcHJvamVjdF9pZBgGIAEoCUgAiAEBEhcKCnNlc3Npb25faWQYByABKAlIAYgBARIMCgRjb2RlGAggASgJEigKCG1ldGFkYXRhGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhMKBnNvdXJjZRgKIAEoCUgCiAEBEhUKCGFjdG9yX2lkGAsgASgJSAOIAQESGwoOY29ycmVsYXRpb25faWQYDCABKAlIBIgBAUINCgtfcHJvamVjdF9pZEINCgtfc2Vzc2lvbl9pZEIJCgdfc291cmNlQgsKCV9hY3Rvcl9pZEIRCg9fY29ycmVsYXRpb25faWQiiAEKH0hpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8SEQoJcGFnZV9zaXplGAEgASgFEhYKDnJldHVybmVkX2NvdW50GAIgASgFEhAKCGhhc19tb3JlGAMgASgIEhgKC25leHRfY3Vyc29yGAQgASgJSACIAQFCDgoMX25leHRfY3Vyc29yIrABCiJIaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvEj8KBWl0ZW1zGAEgAygLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnREdG8SSQoKcGFnaW5hdGlvbhgCIAEoCzI1LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8imwMKIEhpc3RvcmljYWxUaW1lbGluZUV2ZW50U2FtcGxlRHRvEhMKC2VudGl0eV90eXBlGAEgASgJEgwKBGNvZGUYAiABKAkSGAoQc2FtcGxlX2VudGl0eV9pZBgDIAEoCRIeChFzYW1wbGVfcHJvamVjdF9pZBgEIAEoCUgAiAEBEh4KEXNhbXBsZV9zZXNzaW9uX2lkGAUgASgJSAGIAQESGgoNc2FtcGxlX3NvdXJjZRgGIAEoCUgCiAEBEhwKD3NhbXBsZV9hY3Rvcl9pZBgHIAEoCUgDiAEBEiIKFXNhbXBsZV9jb3JyZWxhdGlvbl9pZBgIIAEoCUgEiAEBEjAKEG1ldGFkYXRhX2V4YW1wbGUYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCFAoSX3NhbXBsZV9wcm9qZWN0X2lkQhQKEl9zYW1wbGVfc2Vzc2lvbl9pZEIQCg5fc2FtcGxlX3NvdXJjZUISChBfc2FtcGxlX2FjdG9yX2lkQhgKFl9zYW1wbGVfY29ycmVsYXRpb25faWQibQokSGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1Jlc3BvbnNlRHRvEkUKBWl0ZW1zGAEgAygLMjYuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnRTYW1wbGVEdG8y7QoKEVN0YXRpc3RpY3NTZXJ2aWNlEnQKEUdldEFnZ3JlZ2F0ZWREYXRhEi4uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXF1ZXN0Gi8uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXNwb25zZRJ9ChRHZXRUb2tlbk1vbml0b3JVc2FnZRIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVxdWVzdBoyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USgwEKFkdldFRva2VuTW9uaXRvckhpc3RvcnkSMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIaXN0b3J5UmVxdWVzdBo0LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRKPAQoaR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2USNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlcXVlc3QaOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEpUBChxHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5UaHJvdWdocHV0U3RhdGlzdGljc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USjAEKGUdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnkSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXNwb25zZRJ6ChNHZXRIZXJvQmF0dGxlUmVwb3J0EjAuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QaMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIZXJvQmF0dGxlUmVwb3J0UmVzcG9uc2USjAEKGUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnQSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIYWdpcG93ZXJIaXN0b3J5UmVwb3J0UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRKAAQoVR2V0SGlzdG9yaWNhbFRpbWVsaW5lEjIuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lUmVxdWVzdBozLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhpc3RvcmljYWxUaW1lbGluZVJlc3BvbnNlEpUBChxHZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VCKqoCJ1BDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5QbGF0Zm9ybS5WMWIGcHJvdG8z",[Ue,Ne,_i]),jh=v(Is,1),Hh=We(Is,0),de=oe("CiJoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25zLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIlUKFk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QSOwoEYm9keRgBIAEoCzItLmhhZ2ljb2RlLnNlc3Npb24udjEuQ3JlYXRlQ2hhdFNlc3Npb25SZXF1ZXN0IlIKF09wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIk0KEk9wZW5TZXNzaW9uUmVxdWVzdBI3CgRib2R5GAEgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdCJOChNPcGVuU2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIicKEUdldFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiTQoSR2V0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvImEKElNhdmVTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjcKBGJvZHkYAiABKAsyKS5oYWdpY29kZS5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25SZXF1ZXN0Ik4KE1NhdmVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8izAEKE0xpc3RTZXNzaW9uc1JlcXVlc3QSEQoEdHlwZRgBIAEoCUgAiAEBEhgKC2FjdGl2ZV9vbmx5GAIgASgISAGIAQESHQoQaW5jbHVkZV9hcmNoaXZlZBgDIAEoCEgCiAEBEhcKCnByb2plY3RfaWQYBCABKAlIA4gBARITCgtwcm9qZWN0X2lkcxgFIAMoCUIHCgVfdHlwZUIOCgxfYWN0aXZlX29ubHlCEwoRX2luY2x1ZGVfYXJjaGl2ZWRCDQoLX3Byb2plY3RfaWQiUwoUTGlzdFNlc3Npb25zUmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTGlzdFJlc3BvbnNlRHRvIkAKFERlbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSFAoMZGVsZXRlX2ZpbGVzGAIgASgIIlYKFURlbGV0ZVNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIvChlBcmNoaXZlQ2hhdFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWwoaQXJjaGl2ZUNoYXRTZXNzaW9uUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5TaW1wbGVNZXNzYWdlUmVzcG9uc2VEdG8idAoZU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEkMKBGJvZHkYAiABKAsyNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0IlUKGlN3aXRjaFN0b3BwZWRBZ2VudFJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIl4KG1N0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBI/CgRib2R5GAEgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVIYWdpVGFza1Nlc3Npb25SZXF1ZXN0IlcKHFN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iZAohU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXF1ZXN0Ej8KBGJvZHkYASABKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkNyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QiXQoiU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byLOAwoSQ2hhdEhlcm9TdW1tYXJ5RHRvEg8KB2hlcm9faWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhEKBGljb24YBCABKAlIAYgBARIVCg1leGVjdXRvcl90eXBlGAUgASgJEhkKDGFnZW50X2NsaV9pZBgGIAEoCUgCiAEBEhsKDmFnZW50X2NsaV9uYW1lGAcgASgJSAOIAQESGwoOYWdlbnRfY2xpX2ljb24YCCABKAlIBIgBARIVCghtb2RlbF9pZBgJIAEoCUgFiAEBEhcKCm1vZGVsX25hbWUYCiABKAlIBogBARIXCgptb2RlbF9pY29uGAsgASgJSAeIAQESIgoVc2Vjb25kYXJ5X21vZGVsX2xhYmVsGAwgASgJSAiIAQFCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQg8KDV9hZ2VudF9jbGlfaWRCEQoPX2FnZW50X2NsaV9uYW1lQhEKD19hZ2VudF9jbGlfaWNvbkILCglfbW9kZWxfaWRCDQoLX21vZGVsX25hbWVCDQoLX21vZGVsX2ljb25CGAoWX3NlY29uZGFyeV9tb2RlbF9sYWJlbCI4ChRPcGVuU3BlY1Rhc2tQcm9ncmVzcxIRCgljb21wbGV0ZWQYASABKAUSDQoFdG90YWwYAiABKAUi/gEKEE9wZW5TcGVjRmlsZUluZm8SEQoJZmlsZV9uYW1lGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhEKCWZpbGVfdHlwZRgEIAEoCRITCgtpc19yZXF1aXJlZBgFIAEoCBITCgtpc19hcmNoaXZlZBgGIAEoCBIxCg1hcmNoaXZlZF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJACg10YXNrX3Byb2dyZXNzGAggASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY1Rhc2tQcm9ncmVzcyJcChFPcGVuU3BlY0ZpbGVzSW5mbxIRCgliYXNlX3BhdGgYASABKAkSNAoFZmlsZXMYAiADKAsyJS5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TcGVjRmlsZUluZm8i3gIKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCBIWCglzY2hlZHVsZWQYByABKAhIAYgBARIuCgpkdWVfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIhChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgJIAEoCUgCiAEBQhcKFV9leGVjdXRpb25fbWVzc2FnZV9pZEIMCgpfc2NoZWR1bGVkQhcKFV9zY2hlZHVsZWRfbWVzc2FnZV9pZCKAAQoWU2Vzc2lvbk5vdGlmaWNhdGlvbkR0bxIMCgRraW5kGAEgASgJEi8KC29ic2VydmVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCgdwYXlsb2FkGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIu0BChZTZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhoKDXByb21wdF90b2tlbnMYASABKAVIAIgBARIhChRjYWNoZWRfcHJvbXB0X3Rva2VucxgCIAEoBUgBiAEBEh4KEWNvbXBsZXRpb25fdG9rZW5zGAMgASgFSAKIAQESMwoPbGFzdF91cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIQCg5fcHJvbXB0X3Rva2Vuc0IXChVfY2FjaGVkX3Byb21wdF90b2tlbnNCFAoSX2NvbXBsZXRpb25fdG9rZW5zIl8KFFN0YWdlRXhlY3V0b3JJbmZvRHRvEhUKDXByb3ZpZGVyX3R5cGUYASABKAkSMAoMbGFzdF91cGRhdGVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK8AgoVU3RhZ2VIZXJvU2VsZWN0aW9uRHRvEhEKCXN0YWdlX2tleRgBIAEoCRISCgpzY3JpcHRfa2V5GAIgASgJEhUKDXNjZW5hcmlvX25hbWUYAyABKAkSFAoHaGVyb19pZBgEIAEoCUgAiAEBEhYKCWhlcm9fbmFtZRgFIAEoCUgBiAEBEhYKCWhlcm9faWNvbhgGIAEoCUgCiAEBEhUKDWV4ZWN1dG9yX3R5cGUYByABKAkSFQoNdXNlZF9mYWxsYmFjaxgIIAEoCBIYChBzZWxlY3Rpb25fc291cmNlGAkgASgJEi8KC3NlbGVjdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfaGVyb19pZEIMCgpfaGVyb19uYW1lQgwKCl9oZXJvX2ljb24i9QwKElNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESHAoPY2hpZWZfY29tcGxhaW50GAQgASgJSAGIAQESDAoEY29kZRgFIAEoBRIMCgR0eXBlGAYgASgJEg4KBnN0YXR1cxgHIAEoCRIRCglpc19hY3RpdmUYCCABKAgSMgoObGFzdF9hY3RpdmVfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnByb2plY3RfaWQYCiABKAkSFAoMcHJvamVjdF9uYW1lGAsgASgJEhQKDHByb2plY3RfcGF0aBgMIAEoCRIaCg1wcm9wb3NhbF9uYW1lGA0gASgJSAKIAQESPwoPb3Blbl9zcGVjX2ZpbGVzGA4gASgLMiYuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSQwoOcXVldWVfbWVzc2FnZXMYECADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SHgoRd29ya2luZ19kaXJlY3RvcnkYESABKAlIA4gBARIVCghtZXRhZGF0YRgSIAEoCUgEiAEBEh8KEmNoYXRfZXhlY3V0b3JfdHlwZRgTIAEoCUgFiAEBEjoKCWNoYXRfaGVybxgUIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2hhdEhlcm9TdW1tYXJ5RHRvElkKEnN0YWdlX2V4ZWN1dG9yX21hcBgVIAMoCzI9LmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJkChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyQi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5TdGFnZUhlcm9TZWxlY3Rpb25NYXBFbnRyeRIgChNydW50aW1lX21vZGVsX2xhYmVsGBcgASgJSAaIAQESOQoVcHJvY2Vzc2luZ19zdGFydGVkX2F0GBggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJCCg1zZXNzaW9uX3VzYWdlGBkgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhwKD3ByZXZpb3VzX3N0YXR1cxgaIAEoCUgHiAEBEkIKDW5vdGlmaWNhdGlvbnMYGyADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8SRwoSc2NoZWR1bGVkX21lc3NhZ2VzGBwgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvElAKDXVzZXJfbWV0YWRhdGEYHSADKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5Vc2VyTWV0YWRhdGFFbnRyeRpiChVTdGFnZUV4ZWN1dG9yTWFwRW50cnkSCwoDa2V5GAEgASgJEjgKBXZhbHVlGAIgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaaAoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjkKBXZhbHVlGAIgASgLMiouaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUhlcm9TZWxlY3Rpb25EdG86AjgBGjMKEVVzZXJNZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMi+QEKGENyZWF0ZUNoYXRTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhgKEGlzX2RlZmF1bHRfdGl0bGUYAyABKAgSFAoHaGVyb19pZBgEIAEoCUgAiAEBEk0KCG1ldGFkYXRhGAUgAygLMjsuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVDaGF0U2Vzc2lvblJlcXVlc3QuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCgoIX2hlcm9faWQivgIKEFBhdGhSZWZlcmVuY2VEdG8SCgoCaWQYASABKAkSDgoGc291cmNlGAIgASgJEhUKDWRpc3BsYXlfdmFsdWUYAyABKAkSFQoNcGh5c2ljYWxfcGF0aBgEIAEoCRINCgVzdGFydBgFIAEoBRILCgNlbmQYBiABKAUSFgoJZW50aXR5X2lkGAcgASgJSACIAQESFwoKcHJvamVjdF9pZBgIIAEoCUgBiAEBEkUKCG1ldGFkYXRhGAkgAygLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9lbnRpdHlfaWRCDQoLX3Byb2plY3RfaWQi+wEKGVNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIQCghpbWFnZV9pZBgCIAEoCRIWCg5oYWdpX2ltYWdlX3VybBgDIAEoCRIYCgtwcmV2aWV3X3VybBgEIAEoCUgAiAEBEhYKCWZpbGVfbmFtZRgFIAEoCUgBiAEBEhkKDGNvbnRlbnRfdHlwZRgGIAEoCUgCiAEBEhYKCWZpbGVfc2l6ZRgHIAEoA0gDiAEBQg4KDF9wcmV2aWV3X3VybEIMCgpfZmlsZV9uYW1lQg8KDV9jb250ZW50X3R5cGVCDAoKX2ZpbGVfc2l6ZSJ+ChlUYXJnZXRQcm9qZWN0UmVmZXJlbmNlRHRvEhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhgKC2FjY2Vzc190eXBlGAQgASgJSACIAQFCDgoMX2FjY2Vzc190eXBlIocBChNUYXJnZXRSZXBvc2l0b3J5RHRvEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIZCgxkaXNwbGF5X25hbWUYAyABKAlIAIgBARIYCgthY2Nlc3NfdHlwZRgEIAEoCUgBiAEBQg8KDV9kaXNwbGF5X25hbWVCDgoMX2FjY2Vzc190eXBlIj0KGFRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxIMCgRtb2RlGAEgASgJEhMKC2FjY2Vzc190eXBlGAIgASgJIpEGChRDcmVhdGVTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRIcCg9jaGllZl9jb21wbGFpbnQYAiABKAlIAIgBARIlChhvcmlnaW5hbF9jaGllZl9jb21wbGFpbnQYAyABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAQgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhEKBHR5cGUYBSABKAlIAogBARISCgpwcm9qZWN0X2lkGAYgASgJEkUKE3RhcmdldF9yZXBvc2l0b3JpZXMYByADKAsyKC5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlEdG8STgoXdGFyZ2V0X3JlcG9zaXRvcnlfc2NvcGUYCCABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxJHCg90YXJnZXRfcHJvamVjdHMYCSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAogAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEhgKEGlzX2RlZmF1bHRfdGl0bGUYCyABKAgSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgMIAEoCUgDiAEBEkkKCG1ldGFkYXRhGA0gAygLMjcuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUISChBfY2hpZWZfY29tcGxhaW50QhsKGV9vcmlnaW5hbF9jaGllZl9jb21wbGFpbnRCBwoFX3R5cGVCHAoaX3Byb3Bvc2FsX2NvbnRlbnRfbGFuZ3VhZ2UikwEKFFVwZGF0ZVNlc3Npb25SZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESEwoGc3RhdHVzGAMgASgJSAGIAQESFQoIbWV0YWRhdGEYBCABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCQoHX3N0YXR1c0ILCglfbWV0YWRhdGEiUwoWU2Vzc2lvbkxpc3RSZXNwb25zZUR0bxI5CghzZXNzaW9ucxgBIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIisKGFNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJIjMKIFN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0Eg8KB2hlcm9faWQYASABKAki6wgKHENyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QSDQoFdGl0bGUYASABKAkSGAoQaXNfZGVmYXVsdF90aXRsZRgCIAEoCBISCgpwcm9qZWN0X2lkGAMgASgJEhYKCXByb21wdF9pZBgEIAEoCUgAiAEBEhQKB21lc3NhZ2UYBSABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAYgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhwKD3JlcG9zaXRvcnlfcGF0aBgHIAEoCUgCiAEBEhgKC3RhcmdldF90eXBlGAggASgJSAOIAQESFQoIdmF1bHRfaWQYCSABKAlIBIgBARIcCg9vdXRwdXRfdmF1bHRfaWQYCiABKAlIBYgBARIbChNyZWZlcmVuY2VfdmF1bHRfaWRzGAsgAygJEhoKEmVkaXRhYmxlX3ZhdWx0X2lkcxgMIAMoCRJHCg90YXJnZXRfcHJvamVjdHMYDSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SHwoScmVzZWFyY2hfZGlyZWN0aW9uGA4gASgJSAaIAQESGwoOcHJlc2V0X3Rhc2tfaWQYDyABKAlIB4gBARIfChJwcmVzZXRfdGFza19sb2NhbGUYECABKAlICIgBARIxChFwcmVzZXRfdGFza19pbnB1dBgRIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIXCg9yZXBvc2l0b3J5X3VybHMYEiADKAkSEwoLcHJvamVjdF9pZHMYEyADKAkSEQoJbmVlZF9wdXNoGBQgASgIEiQKF3B1bGxfcmViYXNlX2JlZm9yZV9wdXNoGBUgASgISAmIAQESHwoSdGFyZ2V0X2JyYW5jaF9tb2RlGBYgASgJSAqIAQESHwoSdGFyZ2V0X2JyYW5jaF9uYW1lGBcgASgJSAuIAQESFwoKc2NyaXB0X2tleRgYIAEoCUgMiAEBEhQKB2hlcm9faWQYGSABKAlIDYgBARIgChNoZXJvX3NlbGVjdGlvbl9tb2RlGBogASgJSA6IAQFCDAoKX3Byb21wdF9pZEIKCghfbWVzc2FnZUISChBfcmVwb3NpdG9yeV9wYXRoQg4KDF90YXJnZXRfdHlwZUILCglfdmF1bHRfaWRCEgoQX291dHB1dF92YXVsdF9pZEIVChNfcmVzZWFyY2hfZGlyZWN0aW9uQhEKD19wcmVzZXRfdGFza19pZEIVChNfcHJlc2V0X3Rhc2tfbG9jYWxlQhoKGF9wdWxsX3JlYmFzZV9iZWZvcmVfcHVzaEIVChNfdGFyZ2V0X2JyYW5jaF9tb2RlQhUKE190YXJnZXRfYnJhbmNoX25hbWVCDQoLX3NjcmlwdF9rZXlCCgoIX2hlcm9faWRCFgoUX2hlcm9fc2VsZWN0aW9uX21vZGUy6ggKD1Nlc3Npb25zU2VydmljZRJsCg9PcGVuQ2hhdFNlc3Npb24SKy5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QaLC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEmAKC09wZW5TZXNzaW9uEicuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU2Vzc2lvblJlcXVlc3QaKC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TZXNzaW9uUmVzcG9uc2USXQoKR2V0U2Vzc2lvbhImLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblJlcXVlc3QaJy5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25SZXNwb25zZRJgCgtTYXZlU2Vzc2lvbhInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2F2ZVNlc3Npb25SZXF1ZXN0GiguaGFnaWNvZGUuc2Vzc2lvbi52MS5TYXZlU2Vzc2lvblJlc3BvbnNlEmMKDExpc3RTZXNzaW9ucxIoLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVzcG9uc2USZgoNRGVsZXRlU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuRGVsZXRlU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkRlbGV0ZVNlc3Npb25SZXNwb25zZRJ1ChJBcmNoaXZlQ2hhdFNlc3Npb24SLi5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlc3BvbnNlEnUKElN3aXRjaFN0b3BwZWRBZ2VudBIuLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVzcG9uc2USewoUU3RhcnRIYWdpVGFza1Nlc3Npb24SMC5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBoxLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRIYWdpVGFza1Nlc3Npb25SZXNwb25zZRKNAQoaU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb24SNi5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0TGVnYWN5SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlNlc3Npb24uVjFiBnByb3RvMw",[Ue,Ne]),Th=v(de,1),Qh=v(de,3),Mh=v(de,5),Oh=v(de,7),Dh=v(de,9),_h=v(de,11),$h=v(de,13),Ph=v(de,17),qh=v(de,30),eb=v(de,36),tb=v(de,37),nb=v(de,41),ob=We(de,0),Me=oe("CitoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fbWVzc2FnaW5nLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIr0BChlHZXRTZXNzaW9uTWVzc2FnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEQoEcGFnZRgCIAEoBUgAiAEBEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgBiAEBEhoKDWhpc3Rvcnlfc2NvcGUYBCABKAlIAogBARISCgVvcmRlchgFIAEoCUgDiAEBQgcKBV9wYWdlQgwKCl9wYWdlX3NpemVCEAoOX2hpc3Rvcnlfc2NvcGVCCAoGX29yZGVyIlkKGkdldFNlc3Npb25NZXNzYWdlc1Jlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUxpc3RSZXNwb25zZUR0byIqChRDYW5jZWxTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlYKFUNhbmNlbFNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZUR0byI3CiFHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJeCiJHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1Jlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvY2Vzc2luZ1N0YXR1c0R0byJGChtDYW5jZWxQZW5kaW5nTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBSJcChxDYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VEdG8iUQodQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgCIAEoCSJgCh5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvImQKE1N0ZWVyU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI5CgRib2R5GAIgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uU3RlZXJSZXF1ZXN0RHRvIlQKFFN0ZWVyU2Vzc2lvblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8ihQEKGVN0ZWVyUXVldWVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBRI/CgRib2R5GAMgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZWRNZXNzYWdlU3RlZXJSZXF1ZXN0RHRvImAKGlN0ZWVyUXVldWVkTWVzc2FnZVJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnNlc3Npb24udjEuUXVldWVkTWVzc2FnZVN0ZWVyUmVzcG9uc2VEdG8iZgoZUG9zdFNlc3Npb25NZXNzYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjUKBGJvZHkYAiABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVxdWVzdCJZChpQb3N0U2Vzc2lvbk1lc3NhZ2VSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVzcG9uc2VEdG8iYAoqR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEwoGbG9jYWxlGAIgASgJSACIAQFCCQoHX2xvY2FsZSJ/CitHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlElAKBnJlc3VsdBgBIAEoCzJALmhhZ2ljb2RlLnNlc3Npb24udjEuQ29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXNwb25zZUR0byJxCh9TdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSOgoEYm9keRgCIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8iaAogU3VibWl0U2Vzc2lvbkFubm90YXRpb25zUmVzcG9uc2USRAoGcmVzdWx0GAEgASgLMjQuaGFnaWNvZGUuc2Vzc2lvbi52MS5Bbm5vdGF0aW9uU3VibWlzc2lvblJlc3BvbnNlRHRvIvoBChZNZXNzYWdlSGVyb1NuYXBzaG90RHRvEhQKB2hlcm9faWQYASABKAlIAIgBARIWCgloZXJvX25hbWUYAiABKAlIAYgBARIWCgloZXJvX2ljb24YAyABKAlIAogBARIaCg1leGVjdXRvcl90eXBlGAQgASgJSAOIAQESEwoGc291cmNlGAUgASgJSASIAQESFgoJc3RhZ2Vfa2V5GAYgASgJSAWIAQFCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uQhAKDl9leGVjdXRvcl90eXBlQgkKB19zb3VyY2VCDAoKX3N0YWdlX2tleSJSChxNZXNzYWdlVXNlclF1ZXN0aW9uQW5zd2VyRHRvEhAKCHF1ZXN0aW9uGAEgASgJEg4KBnZhbHVlcxgCIAMoCRIQCghyZWplY3RlZBgDIAEoCCJCChxNZXNzYWdlVXNlclF1ZXN0aW9uT3B0aW9uRHRvEg0KBWxhYmVsGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIsgBChpNZXNzYWdlVXNlclF1ZXN0aW9uSXRlbUR0bxIQCghxdWVzdGlvbhgBIAEoCRIOCgZoZWFkZXIYAiABKAkSFAoMbXVsdGlfc2VsZWN0GAMgASgIEkIKB29wdGlvbnMYBCADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25PcHRpb25EdG8SGwoTYWxsb3dfY3VzdG9tX2Fuc3dlchgFIAEoCBIRCglpc19zZWNyZXQYBiABKAgiWgocTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0bxIZChFtYXhfYW5zd2VyX2xlbmd0aBgBIAEoBRIfChdtYXhfdmFsdWVzX3Blcl9xdWVzdGlvbhgCIAEoBSLYAgoWTWVzc2FnZVVzZXJRdWVzdGlvbkR0bxITCgtxdWVzdGlvbl9pZBgBIAEoCRITCgZydW5faWQYAiABKAlIAIgBARINCgVzdGF0ZRgDIAEoCRJCCglxdWVzdGlvbnMYBCADKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25JdGVtRHRvEkIKB2Fuc3dlcnMYBSADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25BbnN3ZXJEdG8SLwoLYW5zd2VyZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKBmxpbWl0cxgHIAEoCzIxLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0b0IJCgdfcnVuX2lkIo4EChJNZXNzYWdlUmVzcG9uc2VEdG8SCgoCaWQYASABKAkSEgoKc2Vzc2lvbl9pZBgCIAEoCRIMCgR0eXBlGAMgASgJEgwKBG1vZGUYBCABKAkSLQoJdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1jcmVhdGlvbl90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCg5jb250ZW50X2Jsb2NrcxgHIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRISCgVtb2RlbBgIIAEoCUgAiAEBEhUKCHByb3ZpZGVyGAkgASgJSAGIAQESQgoNaGVyb19zbmFwc2hvdBgKIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUhlcm9TbmFwc2hvdER0bxJCCg11c2VyX3F1ZXN0aW9uGAsgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlVXNlclF1ZXN0aW9uRHRvEhgKC3N0ZWVyX3N0YXRlGAwgASgJSAKIAQESHwoScGFyZW50X3Rvb2xfdXNlX2lkGA0gASgJSAOIAQFCCAoGX21vZGVsQgsKCV9wcm92aWRlckIOCgxfc3RlZXJfc3RhdGVCFQoTX3BhcmVudF90b29sX3VzZV9pZCKyAQoWTWVzc2FnZUxpc3RSZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHBhZ2UYAiABKAUSEQoJcGFnZV9zaXplGAMgASgFEhMKC3RvdGFsX2NvdW50GAQgASgFEhMKC3RvdGFsX3BhZ2VzGAUgASgFEjkKCG1lc3NhZ2VzGAYgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlUmVzcG9uc2VEdG8ikAEKGENhbmNlbFNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIwCgxjYW5jZWxsZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBnJ1bl9pZBgEIAEoCUgAiAEBQgkKB19ydW5faWQiyAIKE1Byb2Nlc3NpbmdTdGF0dXNEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIVCg1pc19wcm9jZXNzaW5nGAIgASgIEhwKFHF1ZXVlZF9tZXNzYWdlX2NvdW50GAMgASgFEkMKDnF1ZXVlX21lc3NhZ2VzGAQgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEjkKFXByb2Nlc3Npbmdfc3RhcnRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRwoSc2NoZWR1bGVkX21lc3NhZ2VzGAYgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEh8KF3NjaGVkdWxlZF9tZXNzYWdlX2NvdW50GAcgASgFIj0KFENhbmNlbGxlZE1lc3NhZ2VJbmZvEgwKBG1vZGUYASABKAkSFwoPY29udGVudF9wcmV2aWV3GAIgASgJIpIBChlDYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgDIAEoCRIhChlyZW1haW5pbmdfc2NoZWR1bGVkX2NvdW50GAQgASgFEg8KB21lc3NhZ2UYBSABKAkiwwEKF0NhbmNlbFBlbmRpbmdNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBITCgtxdWV1ZV9pbmRleBgDIAEoBRIXCg9yZW1haW5pbmdfY291bnQYBCABKAUSDwoHbWVzc2FnZRgFIAEoCRJEChFjYW5jZWxsZWRfbWVzc2FnZRgGIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsbGVkTWVzc2FnZUluZm8iUgoXU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRIXCgptZXNzYWdlX2lkGAIgASgJSACIAQFCDQoLX21lc3NhZ2VfaWQiKQoWU2Vzc2lvblN0ZWVyUmVxdWVzdER0bxIPCgdjb250ZW50GAEgASgJIjAKHVF1ZXVlZE1lc3NhZ2VTdGVlclJlc3BvbnNlRHRvEg8KB291dGNvbWUYASABKAkiPAocUXVldWVkTWVzc2FnZVN0ZWVyUmVxdWVzdER0bxIcChRleGVjdXRpb25fbWVzc2FnZV9pZBgBIAEoCSKVAQoWUG9zdE1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJEiEKFHNjaGVkdWxlZF9tZXNzYWdlX2lkGAIgASgJSACIAQESLgoKZHVlX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFwoVX3NjaGVkdWxlZF9tZXNzYWdlX2lkIu0BChJQb3N0TWVzc2FnZVJlcXVlc3QSDwoHY29udGVudBgBIAEoCRIMCgRtb2RlGAIgASgJEkIKCmltYWdlX3JlZnMYAyADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAQgAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEjQKEHNjaGVkdWxlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIl4KK0NvbnZlcnRUb1Byb3Bvc2FsSGFnaVNraWxsUHJvbXB0UmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRITCgZwcm9tcHQYAiABKAlIAIgBAUIJCgdfcHJvbXB0ImAKH0Fubm90YXRpb25TdWJtaXNzaW9uUmVzcG9uc2VEdG8SDwoHbWVzc2FnZRgBIAEoCRIYChBhbm5vdGF0aW9uX2NvdW50GAIgASgFEhIKCmZpbGVfY291bnQYAyABKAUiygEKEkJsb2NrQW5ub3RhdGlvbkR0bxIZChFzdGFydF9saW5lX251bWJlchgBIAEoBRIXCg9lbmRfbGluZV9udW1iZXIYAiABKAUSGAoQb3JpZ2luYWxfY29udGVudBgDIAEoCRISCgpibG9ja190eXBlGAQgASgJEhcKD2Fubm90YXRpb25fdGV4dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgoKAmlkGAcgASgJIq8BChFGaWxlQW5ub3RhdGlvbkR0bxIRCglmaWxlX25hbWUYASABKAkSEQoJZmlsZV9wYXRoGAIgASgJEkIKEWJsb2NrX2Fubm90YXRpb25zGAMgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5CbG9ja0Fubm90YXRpb25EdG8SHAoPZmlsZV9hbm5vdGF0aW9uGAQgASgJSACIAQFCEgoQX2ZpbGVfYW5ub3RhdGlvbiLfAQoXQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRI1CgVmaWxlcxgCIAMoCzImLmhhZ2ljb2RlLnNlc3Npb24udjEuRmlsZUFubm90YXRpb25EdG8SGQoRdG90YWxfYW5ub3RhdGlvbnMYAyABKAUSMAoMc3VibWl0dGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaCg1nbG9iYWxfcHJvbXB0GAUgASgJSACIAQFCEAoOX2dsb2JhbF9wcm9tcHQykQoKF1Nlc3Npb25NZXNzYWdpbmdTZXJ2aWNlEnUKEkdldFNlc3Npb25NZXNzYWdlcxIuLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVzcG9uc2USZgoNQ2FuY2VsU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZRKNAQoaR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXMSNi5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25Qcm9jZXNzaW5nU3RhdHVzUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXNSZXNwb25zZRJ7ChRDYW5jZWxQZW5kaW5nTWVzc2FnZRIwLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEoEBChZDYW5jZWxTY2hlZHVsZWRNZXNzYWdlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlc3BvbnNlEmMKDFN0ZWVyU2Vzc2lvbhIoLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVzcG9uc2USdQoSU3RlZXJRdWV1ZWRNZXNzYWdlEi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXF1ZXN0Gi8uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXNwb25zZRJ1ChJQb3N0U2Vzc2lvbk1lc3NhZ2USLi5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlc3BvbnNlEqgBCiNHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdBI/LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0GkAuaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlEocBChhTdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnMSNC5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1JlcXVlc3QaNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1Jlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuU2Vzc2lvbi5WMWIGcHJvdG8z",[Ue,Ne,de]),ab=v(Me,1),rb=v(Me,11),ib=v(Me,15),sb=v(Me,19),lb=v(Me,34),cb=v(Me,38),db=v(Me,43),ub=We(Me,0),Ie=oe("CipoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fcHJvcG9zYWwucHJvdG8SE2hhZ2ljb2RlLnNlc3Npb24udjEiOAoiTGlzdFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInIKI0xpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEksKBnJlc3VsdBgBIAEoCzI7LmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZXNMaXN0UmVzcG9uc2VEdG8ijQIKGVVubGlua2VkT3BlblNwZWNDaGFuZ2VEdG8SDAoEbmFtZRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEhwKD3Rhc2tzX2NvbXBsZXRlZBgEIAEoBUgAiAEBEhgKC3Rhc2tzX3RvdGFsGAUgASgFSAGIAQESGQoRaGFzX3Byb3Bvc2FsX2ZpbGUYBiABKAgSDQoFZmlsZXMYByADKAkSIgoVbm90X2ltcG9ydGFibGVfcmVhc29uGAggASgJSAKIAQFCEgoQX3Rhc2tzX2NvbXBsZXRlZEIOCgxfdGFza3NfdG90YWxCGAoWX25vdF9pbXBvcnRhYmxlX3JlYXNvbiJpCiZVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc0xpc3RSZXNwb25zZUR0bxI/CgdjaGFuZ2VzGAEgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5VbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRHRvIjkKI0NvdW50VW5saW5rZWRPcGVuU3BlY0NoYW5nZXNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiawokQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEkMKBnJlc3VsdBgBIAEoCzIzLmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZUNvdW50RHRvIi8KHlVubGlua2VkT3BlblNwZWNDaGFuZ2VDb3VudER0bxINCgVjb3VudBgBIAEoBSJiCiRHZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtjaGFuZ2VfbmFtZRgCIAEoCRIRCglmaWxlX3BhdGgYAyABKAkiawolR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5zZXNzaW9uLnYxLlVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvIkMKHVVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvEhEKCWZpbGVfcGF0aBgBIAEoCRIPCgdjb250ZW50GAIgASgJIkgKHEltcG9ydE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFuZ2VfbmFtZXMYAiADKAkiZAodSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5JbXBvcnRPcGVuU3BlY0NoYW5nZXNSZXN1bHREdG8iZAoeSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzdWx0RHRvEkIKB3Jlc3VsdHMYASADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8imAEKHEltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8SDAoEbmFtZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSOAoHc2Vzc2lvbhgDIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvEhQKB21lc3NhZ2UYBCABKAlIAIgBAUIKCghfbWVzc2FnZSJwCh5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI6CgRib2R5GAIgASgLMiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVByb3Bvc2FsUmVxdWVzdCJtCh9PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0byJsChdHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEj0KBGJvZHkYAiABKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXF1ZXN0RHRvIlkKGEdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byJoChVBcmNoaXZlU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI7CgRib2R5GAIgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8iUQoWQXJjaGl2ZVNlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byJqChZFeGVjdXRlUHJvcG9zYWxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSPAoEYm9keRgCIAEoCzIuLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdER0byJYChdFeGVjdXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIsChZDb21wbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiUgoXQ29tcGxldGVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iMwodVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJaCh5WYWxpZGF0ZVNlc3Npb25FeGVjdXRlUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjEKG1ZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlgKHFZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjMKHVZhbGlkYXRlU2Vzc2lvbkFyY2hpdmVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWgoeVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblJlc3VsdER0byJyCiFQcm9wb3NhbE9wdGltaXphdGlvbkRpYWdub3N0aWNEdG8SDAoEY29kZRgBIAEoCRIQCghzZXZlcml0eRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhIKBWZpZWxkGAQgASgJSACIAQFCCAoGX2ZpZWxkIo4BCi1Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SEAoIaXNfdmFsaWQYASABKAgSSwoLZGlhZ25vc3RpY3MYAiADKAsyNi5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uRGlhZ25vc3RpY0R0byLcAwonUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvEhcKCnNjcmlwdF9rZXkYASABKAlIAIgBARIdChBzZWxlY3RlZF9oZXJvX2lkGAIgASgJSAGIAQESHAoPY2FwdGFpbl9oZXJvX2lkGAMgASgJSAKIAQESFgoJcm9zdGVyX2lkGAQgASgJSAOIAQESawoQZXh0ZW5zaW9uX2ZpZWxkcxgFIAMoCzJRLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvLkV4dGVuc2lvbkZpZWxkc0VudHJ5EhYKCXN0YWdlX2tleRgGIAEoCUgEiAEBEh0KEHNlbGVjdGlvbl9zb3VyY2UYByABKAlIBYgBARo2ChRFeHRlbnNpb25GaWVsZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19zY3JpcHRfa2V5QhMKEV9zZWxlY3RlZF9oZXJvX2lkQhIKEF9jYXB0YWluX2hlcm9faWRCDAoKX3Jvc3Rlcl9pZEIMCgpfc3RhZ2Vfa2V5QhMKEV9zZWxlY3Rpb25fc291cmNlIr4DCiNQcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVJlc3VsdER0bxIcCg9vcHRpbWl6ZWRfdGl0bGUYASABKAlIAIgBARIoChtvcHRpbWl6ZWRfcHJvcG9zYWxfbWFya2Rvd24YAiABKAlIAYgBARIfChdvcHRpbWl6ZWRfcHJvcG9zYWxfbmFtZRgDIAEoCRIdChVvcHRpbWl6ZWRfZGVzY3JpcHRpb24YBCABKAkSVwoRc2NlbmFyaW9fc2V0dGluZ3MYBSABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0bxJWCgp2YWxpZGF0aW9uGAYgASgLMkIuaGFnaWNvZGUuc2Vzc2lvbi52MS5Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SGQoMcmF3X3Jlc3BvbnNlGAcgASgJSAKIAQFCEgoQX29wdGltaXplZF90aXRsZUIeChxfb3B0aW1pemVkX3Byb3Bvc2FsX21hcmtkb3duQg8KDV9yYXdfcmVzcG9uc2Ui0ggKJFByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIbChNyZXF1ZXN0X2ZpbmdlcnByaW50GAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgDIAEoCRIVCg1hcHBsaWVkX3RpdGxlGAQgASgJEh0KFWFwcGxpZWRfcHJvcG9zYWxfbmFtZRgFIAEoCRIgChhwcm9wb3NhbF9kcmFmdF9hdmFpbGFibGUYBiABKAgSIAoYc2NlbmFyaW9fc2V0dGluZ3Nfc3RhdHVzGAcgASgJEhoKEmFwcGxpZWRfdGl0bGVfbW9kZRgIIAEoCRIQCghpc192YWxpZBgJIAEoCBJLCgtkaWFnbm9zdGljcxgKIAMoCzI2LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25EaWFnbm9zdGljRHRvEiYKGW9wdGltaXplZF90aXRsZV9jYW5kaWRhdGUYCyABKAlIAIgBARIjChZwcm9wb3NhbF9kcmFmdF9wcmV2aWV3GAwgASgJSAGIAQESGgoNYXJ0aWZhY3RfcGF0aBgNIAEoCUgCiAEBEhsKDmNvcnJlbGF0aW9uX2lkGA4gASgJSAOIAQESHQoQcmVzb2x2ZWRfaGVyb19pZBgPIAEoCUgEiAEBEh8KEnJlc29sdmVkX2hlcm9fbmFtZRgQIAEoCUgFiAEBEh8KEnJlc29sdmVkX2hlcm9faWNvbhgRIAEoCUgGiAEBEigKG3Jlc29sdmVkX2hlcm9fZXhlY3V0b3JfdHlwZRgSIAEoCUgHiAEBEiIKFWhlcm9fc2VsZWN0aW9uX3NvdXJjZRgTIAEoCUgIiAEBEiMKFmhlcm9fcm91dGluZ19zdGFnZV9rZXkYFCABKAlICYgBARIkChdoZXJvX3JvdXRpbmdfc2NyaXB0X2tleRgVIAEoCUgKiAEBEiQKF29wdGltaXphdGlvbl9jZXNzaW9uX2lkGBYgASgJSAuIAQFCHAoaX29wdGltaXplZF90aXRsZV9jYW5kaWRhdGVCGQoXX3Byb3Bvc2FsX2RyYWZ0X3ByZXZpZXdCEAoOX2FydGlmYWN0X3BhdGhCEQoPX2NvcnJlbGF0aW9uX2lkQhMKEV9yZXNvbHZlZF9oZXJvX2lkQhUKE19yZXNvbHZlZF9oZXJvX25hbWVCFQoTX3Jlc29sdmVkX2hlcm9faWNvbkIeChxfcmVzb2x2ZWRfaGVyb19leGVjdXRvcl90eXBlQhgKFl9oZXJvX3NlbGVjdGlvbl9zb3VyY2VCGQoXX2hlcm9fcm91dGluZ19zdGFnZV9rZXlCGgoYX2hlcm9fcm91dGluZ19zY3JpcHRfa2V5QhoKGF9vcHRpbWl6YXRpb25fY2Vzc2lvbl9pZCLVAQolUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0bxJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlUmVzdWx0RHRvEkoKB3N1bW1hcnkYAiABKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgDIAEoCSKJAwoXT3B0aW1pemVQcm9wb3NhbFJlcXVlc3QSEwoLZGVzY3JpcHRpb24YASABKAkSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgCIAEoCUgAiAEBEiMKFm9wdGltaXphdGlvbl9kaXJlY3Rpb24YAyABKAlIAYgBARISCgV0aXRsZRgEIAEoCUgCiAEBEhgKEGlzX2RlZmF1bHRfdGl0bGUYBSABKAgSJQoYb3JpZ2luYWxfY2hpZWZfY29tcGxhaW50GAYgASgJSAOIAQESVwoRc2NlbmFyaW9fc2V0dGluZ3MYByABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0b0IcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIZChdfb3B0aW1pemF0aW9uX2RpcmVjdGlvbkIICgZfdGl0bGVCGwoZX29yaWdpbmFsX2NoaWVmX2NvbXBsYWludCJFChpQbGFubmluZ0RpcmVjdGlvbk9wdGlvbkR0bxIPCgJpZBgBIAEoCUgAiAEBEg8KB2VuYWJsZWQYAiABKAhCBQoDX2lkIowCChpHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdER0bxIgChNlbmFibGVfZXhwbG9yZV9tb2RlGAEgASgISACIAQESTAoTcGxhbm5pbmdfZGlyZWN0aW9ucxgCIAMoCzIvLmhhZ2ljb2RlLnNlc3Npb24udjEuUGxhbm5pbmdEaXJlY3Rpb25PcHRpb25EdG8SJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgDIAEoCUgBiAEBEhQKB2hlcm9faWQYBCABKAlIAogBAUIWChRfZW5hYmxlX2V4cGxvcmVfbW9kZUIcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIKCghfaGVyb19pZCI8ChhBcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIj0KGUV4ZWN1dGVQcm9wb3NhbFJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIlcKC0NvbmZsaWN0RHRvEgwKBHR5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhIKCnJlc29sdXRpb24YBCABKAkiawoSVmFsaWRhdGlvbklzc3VlRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIQCghzZXZlcml0eRgDIAEoCRIWCgllbnRpdHlfaWQYBCABKAlIAIgBAUIMCgpfZW50aXR5X2lkIoUBChRWYWxpZGF0aW9uU3VtbWFyeUR0bxIVCg1wcm9qZWN0X2NvdW50GAEgASgFEhUKDXNlc3Npb25fY291bnQYAiABKAUSHwoXZHVwbGljYXRlX3Byb2plY3RfY291bnQYAyABKAUSHgoWb3JwaGFuZWRfc2Vzc2lvbl9jb3VudBgEIAEoBSKMAgoTVmFsaWRhdGlvblJlc3VsdER0bxIQCghpc192YWxpZBgBIAEoCBI5Cgh3YXJuaW5ncxgCIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjcKBmVycm9ycxgDIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjMKCWNvbmZsaWN0cxgEIAMoCzIgLmhhZ2ljb2RlLnNlc3Npb24udjEuQ29uZmxpY3REdG8SOgoHc3VtbWFyeRgFIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblN1bW1hcnlEdG8yngwKFlNlc3Npb25Qcm9wb3NhbFNlcnZpY2UShAEKF09wdGltaXplU2Vzc2lvblByb3Bvc2FsEjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QaNC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wdGltaXplU2Vzc2lvblByb3Bvc2FsUmVzcG9uc2USbwoQR2VuZXJhdGVQcm9wb3NhbBIsLmhhZ2ljb2RlLnNlc3Npb24udjEuR2VuZXJhdGVQcm9wb3NhbFJlcXVlc3QaLS5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRJpCg5BcmNoaXZlU2Vzc2lvbhIqLmhhZ2ljb2RlLnNlc3Npb24udjEuQXJjaGl2ZVNlc3Npb25SZXF1ZXN0GisuaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlc3BvbnNlEmwKD0V4ZWN1dGVQcm9wb3NhbBIrLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdBosLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVzcG9uc2USbAoPQ29tcGxldGVTZXNzaW9uEisuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXF1ZXN0GiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXNwb25zZRKBAQoWVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZRIyLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QaMy5oYWdpY29kZS5zZXNzaW9uLnYxLlZhbGlkYXRlU2Vzc2lvbkV4ZWN1dGVSZXNwb25zZRJ7ChRWYWxpZGF0ZVNlc3Npb25TdGFydBIwLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uU3RhcnRSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25TdGFydFJlc3BvbnNlEoEBChZWYWxpZGF0ZVNlc3Npb25BcmNoaXZlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25BcmNoaXZlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEpABChtMaXN0VW5saW5rZWRPcGVuU3BlY0NoYW5nZXMSNy5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QaOC5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpMBChxDb3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzEjguaGFnaWNvZGUuc2Vzc2lvbi52MS5Db3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBo5LmhhZ2ljb2RlLnNlc3Npb24udjEuQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpYBCh1HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZRI5LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXF1ZXN0GjouaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlc3BvbnNlEn4KFUltcG9ydE9wZW5TcGVjQ2hhbmdlcxIxLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVxdWVzdBoyLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2VCKaoCJlBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5TZXNzaW9uLlYxYgZwcm90bzM",[Ne,de]),mb=v(Ie,15),hb=v(Ie,17),bb=v(Ie,19),gb=v(Ie,21),pb=v(Ie,23),Ab=v(Ie,36),fb=v(Ie,38),Zb=v(Ie,39),Rb=v(Ie,40),Eb=We(Ie,0),Vb=oe("CixoYWdpY29kZS9jb29yZGluYXRpb24vdjEvcmVzb3VyY2VfbG9jay5wcm90bxIYaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxIuMFCgpMb2NrU3RhdHVzEg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEhAKCHBvc2l0aW9uGAQgASgFEg0KBWVwb2NoGAUgASgDEjQKEGxlYXNlX2V4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKE21heF9ob2xkX2V4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2hvbGRlcl9vd25lcl9pZBgIIAEoCRIUCgxob2xkZXJfbGFiZWwYCSABKAkSFAoMcXVldWVfbGVuZ3RoGAogASgFEiIKGnN1Z2dlc3RlZF9wb2xsX2ludGVydmFsX21zGAsgASgFEicKH3N1Z2dlc3RlZF9oZWFydGJlYXRfaW50ZXJ2YWxfbXMYDCABKAUSLwoLc2VydmVyX3RpbWUYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiEKGXJlcXVpc2l0aW9uZWRfYnlfb3duZXJfaWQYDiABKAkSGgoScmVxdWlzaXRpb25fcmVhc29uGA8gASgJEjQKEHJlcXVpc2l0aW9uZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKFGNoZWNrX2luX2VhcmxpZXN0X2F0GBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChJjaGVja19pbl9sYXRlc3RfYXQYEiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKEHR1cm5fZWFybGllc3RfYXQYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDnR1cm5fbGF0ZXN0X2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKrAQoSQWNxdWlyZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGgoNbGVhc2Vfc2Vjb25kcxgDIAEoBUgAiAEBEhIKBWxhYmVsGAQgASgJSAGIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgCiAEBQhAKDl9sZWFzZV9zZWNvbmRzQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJLChNBY3F1aXJlTG9ja1Jlc3BvbnNlEjQKBnJlc3VsdBgBIAEoCzIkLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5Mb2NrU3RhdHVzImUKFEdldExvY2tTdGF0dXNSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGQoMd2FpdF9zZWNvbmRzGAMgASgFSACIAQFCDwoNX3dhaXRfc2Vjb25kcyJNChVHZXRMb2NrU3RhdHVzUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMigQEKEFJlbmV3TG9ja1JlcXVlc3QSDwoHbG9ja19pZBgBIAEoCRIQCghvd25lcl9pZBgCIAEoCRIaCg1sZWFzZV9zZWNvbmRzGAMgASgFSACIAQESEgoFZXBvY2gYBCABKANIAYgBAUIQCg5fbGVhc2Vfc2Vjb25kc0IICgZfZXBvY2giSQoRUmVuZXdMb2NrUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMiVQoSUmVsZWFzZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSEgoFZXBvY2gYAyABKANIAIgBAUIICgZfZXBvY2giWQoTUmVsZWFzZUxvY2tSZXNwb25zZRIQCghyZWxlYXNlZBgBIAEoCBIXCg9wcmV2aW91c19zdGF0dXMYAiABKAkSFwoPaG9sZGVyX293bmVyX2lkGAMgASgJIpEBChZSZXF1aXNpdGlvbkxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGcmVhc29uGAMgASgJEhIKBWxhYmVsGAQgASgJSACIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgBiAEBQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJPChdSZXF1aXNpdGlvbkxvY2tSZXNwb25zZRI0CgZyZXN1bHQYASABKAsyJC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N0YXR1cyIyChBMaXN0TG9ja3NSZXF1ZXN0EhMKBnByZWZpeBgBIAEoCUgAiAEBQgkKB19wcmVmaXgiSQoRTGlzdExvY2tzUmVzcG9uc2USNAoFbG9ja3MYASADKAsyJS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N1bW1hcnki3QEKC0xvY2tTdW1tYXJ5Eg8KB2xvY2tfaWQYASABKAkSFwoPaG9sZGVyX293bmVyX2lkGAIgASgJEhQKDGhvbGRlcl9sYWJlbBgDIAEoCRINCgVlcG9jaBgEIAEoAxI0ChBsZWFzZV9leHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9ob2xkX3N0YXJ0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHF1ZXVlX2xlbmd0aBgHIAEoBTKjBQoTUmVzb3VyY2VMb2NrU2VydmljZRJqCgtBY3F1aXJlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5BY3F1aXJlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuQWNxdWlyZUxvY2tSZXNwb25zZRJwCg1HZXRMb2NrU3RhdHVzEi4uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXF1ZXN0Gi8uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXNwb25zZRJkCglSZW5ld0xvY2sSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVuZXdMb2NrUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZW5ld0xvY2tSZXNwb25zZRJqCgtSZWxlYXNlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZWxlYXNlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVsZWFzZUxvY2tSZXNwb25zZRJ2Cg9SZXF1aXNpdGlvbkxvY2sSMC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVxdWlzaXRpb25Mb2NrUmVxdWVzdBoxLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZXF1aXNpdGlvbkxvY2tSZXNwb25zZRJkCglMaXN0TG9ja3MSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTGlzdExvY2tzUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5MaXN0TG9ja3NSZXNwb25zZUIuqgIrUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvb3JkaW5hdGlvbi5WMWIGcHJvdG8z",[Ne]),Gb=We(Vb,0),Hn=new Set([b.INT64,b.UINT64,b.SINT64,b.FIXED64,b.SFIXED64]),Ys=e=>e.typeName.startsWith("google.protobuf.");function Tn(e){if(typeof e!="string")return e;const t=Number(e);return Number.isSafeInteger(t)?t:e}function un(e,t){if(t==null||typeof t!="object"||Array.isArray(t)||Ys(e))return t;const n=t;for(const o of e.fields){const a=n[o.jsonName];a!==void 0&&(n[o.jsonName]=Sb(o,a))}return n}function Sb(e,t){switch(e.fieldKind){case"scalar":return Hn.has(e.scalar)?Tn(t):t;case"message":return un(e.message,t);case"list":return Array.isArray(t)?e.listKind==="scalar"?Hn.has(e.scalar)?t.map(Tn):t:e.listKind==="message"?t.map(n=>un(e.message,n)):t:t;case"map":{if(t===null||typeof t!="object"||Array.isArray(t))return t;const n=t;for(const o of Object.keys(n))e.mapKind==="scalar"&&Hn.has(e.scalar)?n[o]=Tn(n[o]):e.mapKind==="message"&&(n[o]=un(e.message,n[o]));return n}default:return t}}function Nb(e,t){return un(e,es(e,t,{alwaysEmitImplicit:!0}))}function vb(e,t){return Nb(e,t).result}function mn(e,t,n=0){if(t===null||typeof t!="object"||Array.isArray(t)||Ys(e)||n>8)return t;const o=t;for(const a of e.fields){const r=o[a.jsonName];if(!(r===null||typeof r!="object")){if(a.fieldKind==="message")mn(a.message,r,n+1);else if(a.fieldKind==="list"&&a.listKind==="message"&&Array.isArray(r))r.forEach(i=>mn(a.message,i,n+1));else if(a.fieldKind==="map"&&!Array.isArray(r)){const i=r;for(const s of Object.keys(i)){const l=i[s];a.mapKind==="scalar"&&a.scalar===b.STRING?l===null?delete i[s]:(typeof l=="number"||typeof l=="boolean")&&(i[s]=String(l)):a.mapKind==="message"&&mn(a.message,l,n+1)}}}}return t}function D(e,t){return is(e,t===void 0?t:mn(e,JSON.parse(JSON.stringify(t))),{ignoreUnknownFields:!0})}function Br(e,t){const n=Zs(e);if(n)throw t.forEach((o,a)=>{n.metadata.append(a,o)}),n;if(!t.has("Grpc-Status")&&!e.has("Grpc-Status"))throw new C("protocol error: missing status",E.Internal)}function Wb(e,t,n,o){var a,r;const i=new Headers(n??{});i.set(bm,e?Em:Vm),i.set(Rm,"1");const s=(r=(a=i.get("User-Agent"))!==null&&a!==void 0?a:i.get("X-User-Agent"))!==null&&r!==void 0?r:"connect-es/2.2.0";return i.set(Zm,s),o&&i.set(fm,s),t!==void 0&&i.set(pm,`${t}m`),i}function Cr(e,t,n,o,a,r){const i=Wb(e,t,n,r);return a!=null&&i.set(As,a.name),o.length>0&&i.set(gm,o.map(s=>s.name).join(",")),i}function yb(e){switch(e){case 400:return E.Internal;case 401:return E.Unauthenticated;case 403:return E.PermissionDenied;case 404:return E.Unimplemented;case 429:return E.Unavailable;case 502:return E.Unavailable;case 503:return E.Unavailable;case 504:return E.Unavailable;default:return E.Unknown}}function Ib(e,t){var n;if(e>=200&&e<300)return{foundStatus:t.has(fs),headerError:Zs(t)};throw new C(decodeURIComponent((n=t.get("Grpc-Message"))!==null&&n!==void 0?n:`HTTP ${e}`),yb(e),t)}function Fr(e,t,n){const{foundStatus:o,headerError:a}=Ib(t,n);let r;const i=n.get(As);if(i!==null&&i.toLowerCase()!=="identity"&&(r=e.find(s=>s.name===i),!r))throw new C(`unsupported response encoding "${i}"`,E.Internal,n);return{foundStatus:o,compression:r,headerError:a}}var wr=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(r){n[r]=e[r]&&function(i){return new Promise(function(s,l){i=e[r](i),a(s,l,i.done,i.value)})}}function a(r,i,s,l){Promise.resolve(l).then(function(c){r({value:c,done:s})},i)}},ze=function(e){return this instanceof ze?(this.v=e,this):new ze(e)},Yb=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),a,r=[];return a=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),a[Symbol.asyncIterator]=function(){return this},a;function i(Z){return function(G){return Promise.resolve(G).then(Z,h)}}function s(Z,G){o[Z]&&(a[Z]=function(S){return new Promise(function(X,J){r.push([Z,S,X,J])>1||l(Z,S)})},G&&(a[Z]=G(a[Z])))}function l(Z,G){try{c(o[Z](G))}catch(S){A(r[0][3],S)}}function c(Z){Z.value instanceof ze?Promise.resolve(Z.value.v).then(u,h):A(r[0][2],Z)}function u(Z){l("next",Z)}function h(Z){l("throw",Z)}function A(Z,G){Z(G),r.shift(),r.length&&l(r[0][0],r[0][1])}};function Xb(e){return{async unary(t,n,o,a,r,i){const s=vr(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,await Wm({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!1,service:t.parent,method:t,requestMethod:"POST",url:Nr(e.baseUrl,t),header:Cr(e.useBinaryFormat,o,a,e.acceptCompression,e.sendCompression,!0),contextValues:i??Gr(),message:r},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:dn(bs([l.message]),Ar(s.getI(e.useBinaryFormat)),Zr(e.sendCompression,e.compressMinBytes),Er(),{propagateDownStreamError:!0})}),{compression:u,headerError:h}=Fr(e.acceptCompression,c.status,c.header),{trailer:A,message:Z}=await tm(c.body,Vr(e.readMaxBytes),Rr(u??null,e.readMaxBytes),fr(s.getO(e.useBinaryFormat),128,Sr()),async G=>{var S,X,J,d;let m,p;try{for(var g=!0,f=wr(G),V;V=await f.next(),S=V.done,!S;g=!0){d=V.value,g=!1;const B=d;if(B.end){if(p!==void 0)throw new C("protocol error: received extra trailer",E.Unimplemented);p=B.value}else{if(m!==void 0)throw new C("protocol error: received extra output message for unary method",E.Unimplemented);m=B.value}}}catch(B){X={error:B}}finally{try{!g&&!S&&(J=f.return)&&await J.call(f)}finally{if(X)throw X.error}}return{trailer:p,message:m}},{propagateDownStreamError:!1});if(A===void 0)throw h??new C("protocol error: missing trailer",c.header.has("Grpc-Status")?E.Unimplemented:E.Unknown);if(Br(A,c.header),Z===void 0)throw new C("protocol error: missing output message for unary method",A.has("Grpc-Status")?E.Unimplemented:E.Unknown);return{stream:!1,service:t.parent,method:t,header:c.header,message:Z,trailer:A}}})},async stream(t,n,o,a,r,i){const s=vr(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,ym({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!0,service:t.parent,method:t,requestMethod:"POST",url:Nr(e.baseUrl,t),header:Cr(e.useBinaryFormat,o,a,e.acceptCompression,e.sendCompression,!0),contextValues:i??Gr(),message:r},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:dn(l.message,Ar(s.getI(e.useBinaryFormat)),Zr(e.sendCompression,e.compressMinBytes),Er(),{propagateDownStreamError:!0})}),{compression:u,foundStatus:h,headerError:A}=Fr(e.acceptCompression,c.status,c.header);if(A)throw A;const Z=Object.assign(Object.assign({},l),{header:c.header,trailer:new Headers,message:dn(c.body,Vr(e.readMaxBytes),Rr(u??null,e.readMaxBytes),fr(s.getO(e.useBinaryFormat),128,Sr()),function(G){return Yb(this,arguments,function*(){var S,X,J,d;if(h){if((yield ze(G[Symbol.asyncIterator]().next())).done!==!0)throw new C("protocol error: extra data for trailers-only",E.InvalidArgument);return yield ze(void 0)}let m=!1;try{for(var p=!0,g=wr(G),f;f=yield ze(g.next()),S=f.done,!S;p=!0){d=f.value,p=!1;const V=d;if(V.end){if(m)throw new C("protocol error: received extra trailer",E.InvalidArgument);m=!0,Br(V.value,c.header),V.value.forEach((B,K)=>Z.trailer.set(K,B));continue}if(m)throw new C("protocol error: received extra message after trailer",E.InvalidArgument);yield yield ze(V.value)}}catch(V){X={error:V}}finally{try{!p&&!S&&(J=g.return)&&(yield ze(J.call(g)))}finally{if(X)throw X.error}}if(!m)throw new C("protocol error: missing trailer",E.Internal)})},{propagateDownStreamError:!0})});return Z}})}}}function Wn(e){let t=E.Internal;const n=$o(e).map(yn);n.some(a=>a.code=="ERR_STREAM_WRITE_AFTER_END")||n.some(a=>a.code=="ERR_STREAM_DESTROYED"||a.code=="ERR_HTTP2_INVALID_STREAM"||a.code=="ECONNRESET")?t=E.Aborted:n.some(a=>a.code=="ETIMEDOUT"||a.code=="ENOTFOUND"||a.code=="EAI_AGAIN"||a.code=="ECONNREFUSED")&&(t=E.Unavailable);const o=C.from(e,t);return o!==e&&(o.cause=e),o}function $o(e){const t=[];for(;!(!(e instanceof Error)||t.includes(e)||(t.push(e),!("cause"in e)));)e=e.cause;return t}function yn(e){const t={};return e instanceof Error&&("code"in e&&typeof e.code=="string"&&(t.code=e.code),"syscall"in e&&typeof e.syscall=="string"&&(t.syscall=e.syscall)),t}function Bb(e){switch(e){case $.PROTOCOL_ERROR:case $.INTERNAL_ERROR:case $.FLOW_CONTROL_ERROR:case $.SETTINGS_TIMEOUT:case $.FRAME_SIZE_ERROR:case $.COMPRESSION_ERROR:case $.CONNECT_ERROR:return new C(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.Internal);case $.REFUSED_STREAM:return new C(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.Unavailable);case $.CANCEL:return new C(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.Canceled);case $.ENHANCE_YOUR_CALM:return new C(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.ResourceExhausted);case $.INADEQUATE_SECURITY:return new C(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.PermissionDenied);case $.HTTP_1_1_REQUIRED:return new C(`http/2 stream closed with error code ${$[e]} (0x${e.toString(16)})`,E.PermissionDenied);default:break}}var $;(function(e){e[e.PROTOCOL_ERROR=1]="PROTOCOL_ERROR",e[e.INTERNAL_ERROR=2]="INTERNAL_ERROR",e[e.FLOW_CONTROL_ERROR=3]="FLOW_CONTROL_ERROR",e[e.SETTINGS_TIMEOUT=4]="SETTINGS_TIMEOUT",e[e.STREAM_CLOSED=5]="STREAM_CLOSED",e[e.FRAME_SIZE_ERROR=6]="FRAME_SIZE_ERROR",e[e.REFUSED_STREAM=7]="REFUSED_STREAM",e[e.CANCEL=8]="CANCEL",e[e.COMPRESSION_ERROR=9]="COMPRESSION_ERROR",e[e.CONNECT_ERROR=10]="CONNECT_ERROR",e[e.ENHANCE_YOUR_CALM=11]="ENHANCE_YOUR_CALM",e[e.INADEQUATE_SECURITY=12]="INADEQUATE_SECURITY",e[e.HTTP_1_1_REQUIRED=13]="HTTP_1_1_REQUIRED"})($||($={}));var Cb=(0,Zn.promisify)(gt.gzip),Fb=(0,Zn.promisify)(gt.gunzip),wb=(0,Zn.promisify)(gt.brotliCompress),kb=(0,Zn.promisify)(gt.brotliDecompress),Ub={name:"gzip",compress(e){return gn(Cb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):gn(Xs(Fb(e,{maxOutputLength:t}),t))}},Jb={name:"br",compress(e){return gn(wb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):gn(Xs(kb(e,{maxOutputLength:t}),t))}};function gn(e){return e.then(t=>t.buffer instanceof ArrayBuffer?t:new Uint8Array(t))}function Xs(e,t){return e.catch(n=>{var o;const a=yn(n);let r=E.Internal,i="decompression failed";switch(a.code){case"ERR_BUFFER_TOO_LARGE":r=E.ResourceExhausted,i=`message is larger than configured readMaxBytes ${t} after decompression`;break;case"Z_DATA_ERROR":case"ERR_PADDING_2":r=E.InvalidArgument;break;default:!((o=a.code)===null||o===void 0)&&o.startsWith("ERR__ERROR_FORMAT_")&&(r=E.InvalidArgument);break}return Promise.reject(new C(i,r,void 0,void 0,n))})}function In(e){const t=new Headers;for(const[n,o]of Object.entries(e))if(!n.startsWith(":")&&o!==void 0)if(typeof o=="string")t.append(n,o);else if(typeof o=="number")t.append(n,String(o));else for(const a of o)t.append(n,a);return t}function Bs(e,t){if(e===void 0&&t===void 0)return;const n=Object.create(null);if(t!==void 0)if(Array.isArray(t))for(let o=0;o+1<t.length;o+=2){const a=t[o],r=t[o+1];Array.isArray(n[a])?n[a].push(r):typeof n[a]=="string"?n[a]=[n[a],r]:n[a]=r}else for(const[o,a]of Object.entries(t))Array.isArray(a)?n[o]=a.concat():a!==void 0&&(n[o]=a);if(e!==void 0)if(Array.isArray(e))for(const[o,a]of e)Qn(n,o,a);else if("forEach"in e)typeof e.forEach=="function"&&e.forEach((o,a)=>{Qn(n,a,o)});else for(const[o,a]of Object.entries(e))Qn(n,o,a);return n}function Qn(e,t,n){t=t.toLowerCase();const o=e[t];Array.isArray(o)?o.push(n):o===void 0?e[t]=n:e[t]=[o.toString(),n]}var Cs=class{state(){return this.s.t=="ready"?this.verifying!==void 0?"verifying":this.s.streamCount()>0?"open":"idle":this.s.t}error(){if(this.s.t=="error")return this.s.reason}constructor(e,t,n){var o,a,r,i;this.s=co(),this.shuttingDown=[],this.authority=new URL(e).origin,this.http2SessionOptions=n,this.options={pingIntervalMs:(o=t?.pingIntervalMs)!==null&&o!==void 0?o:Number.POSITIVE_INFINITY,pingTimeoutMs:(a=t?.pingTimeoutMs)!==null&&a!==void 0?a:1e3*15,pingIdleConnection:(r=t?.pingIdleConnection)!==null&&r!==void 0?r:!1,idleConnectionTimeoutMs:(i=t?.idleConnectionTimeoutMs)!==null&&i!==void 0?i:1e3*60*15}}async connect(){try{return(await this.gotoReady()).streamCount()>0?"open":"idle"}catch{return"error"}}async request(e,t,n,o){for(;;){const a=await this.gotoReady();try{const r=a.conn.request(Object.assign(Object.assign({},n),{":method":e,":path":t}),o);return a.registerRequest(r),r}catch(r){if(a.conn.closed||a.conn.destroyed)continue;throw r}}}notifyResponseByteRead(e){this.s.t=="ready"&&this.s.responseByteRead(e);for(const t of this.shuttingDown)t.responseByteRead(e)}abort(e){var t,n,o;const a=e??new C("connection aborted",E.Canceled);(n=(t=this.s).abort)===null||n===void 0||n.call(t,a);for(const r of this.shuttingDown)(o=r.abort)===null||o===void 0||o.call(r,a);this.setState(qt(a))}async gotoReady(){for(this.s.t=="ready"?this.s.isShuttingDown()||this.s.conn.closed||this.s.conn.destroyed?this.setState(Mn(this.authority,this.http2SessionOptions)):this.s.requiresVerify()&&await this.verify(this.s):(this.s.t=="closed"||this.s.t=="error")&&this.setState(Mn(this.authority,this.http2SessionOptions));this.s.t!=="ready";){if(this.s.t==="error")throw this.s.reason;this.s.t==="connecting"&&await this.s.conn}return this.s}setState(e){var t,n;if((n=(t=this.s).onExitState)===null||n===void 0||n.call(t),this.s.t=="ready"&&this.s.isShuttingDown()){const o=this.s;this.shuttingDown.push(o),o.onClose=o.onError=()=>{const a=this.shuttingDown.indexOf(o);a!==-1&&this.shuttingDown.splice(a,1)}}switch(e.t){case"connecting":e.conn.then(o=>{this.setState(Kb(o,this.options))},o=>{this.setState(qt(o))});break;case"ready":e.onClose=()=>this.setState(co()),e.onError=o=>this.setState(qt(o));break;case"closed":break;case"error":break}this.s=e}verify(e){return this.verifying!==void 0?this.verifying:(this.verifying=e.verify().then(t=>{t||this.setState(Mn(this.authority,this.http2SessionOptions))},t=>{this.setState(qt(t))}).finally(()=>{this.verifying=void 0}),this.verifying)}};function co(){return{t:"closed"}}function xb(e){return{t:"error",reason:e}}function qt(e){return e instanceof C&&C.from(e).code==E.Canceled?co():xb(e)}function Mn(e,t){let n,o;const a=new Promise((c,u)=>{n=c,o=u}),r=Re.connect(e,t);r.on("connect",i),r.on("error",s);function i(){n?.(r),l()}function s(c){o?.(Wn(c)),l()}function l(){r.off("connect",i),r.off("error",s)}return{t:"connecting",conn:a,abort(c){r.destroyed||r.destroy(void 0,Re.constants.NGHTTP2_CANCEL),o?.(c)},onExitState(){l()}}}function Kb(e,t){zb(e),e.unref();let n=Date.now(),o=0,a,r,i=!1,s=!1,l;S();const c={t:"ready",conn:e,streamCount(){return o},requiresVerify(){return Date.now()-n>t.pingIntervalMs},isShuttingDown(){return i},onClose:void 0,onError:void 0,registerRequest(g){o++,o==1&&(e.ref(),u(),G()),g.once("response",()=>{n=Date.now(),u()}),g.once("close",()=>{o--,o==0&&(e.unref(),u(),S())})},responseByteRead(g){g.session===e&&(e.closed||e.destroyed||o<=0||(n=Date.now(),u()))},verify(){return e.ref(),new Promise(g=>{const f=()=>{g(!1)};Z(()=>{o==0&&e.unref(),e.off("error",f),e.off("close",f),g(!0)}),e.once("error",f),e.once("close",f)})},abort(g){e.destroyed||(e.once("error",()=>{}),e.destroy(g,Re.constants.NGHTTP2_CANCEL))},onExitState(){c.isShuttingDown()||(p(),this.onError=void 0,this.onClose=void 0)}};function u(){h(),(o>0||t.pingIdleConnection)&&(a=On(A,t.pingIntervalMs))}function h(){clearTimeout(a),clearTimeout(r)}function A(){Z(u)}function Z(g){clearTimeout(r),r=On(()=>{e.destroy(new C("PING timed out",E.Unavailable),Re.constants.NGHTTP2_CANCEL)},t.pingTimeoutMs),e.ping((f,V)=>{if(clearTimeout(r),f===null){if(V>t.pingTimeoutMs){e.destroy(new C("PING timed out",E.Unavailable),Re.constants.NGHTTP2_CANCEL);return}n=Date.now(),g()}})}function G(){clearTimeout(l)}function S(){l=On(X,t.idleConnectionTimeoutMs)}function X(){e.close(),d()}function J(g,f,V){if(g===Re.constants.NGHTTP2_NO_ERROR&&o===0){e.destroy(new C("received GOAWAY without any open streams",E.Canceled),Re.constants.NGHTTP2_NO_ERROR);return}i=!0;const B=Buffer.from("too_many_pings","ascii");V?.equals(B)&&(t.pingIntervalMs=t.pingIntervalMs*2,s=!0)}function d(){var g;p(),(g=c.onClose)===null||g===void 0||g.call(c)}function m(g){var f,V;if(p(),s){const B=new C(`http/2 connection closed with error code ENHANCE_YOUR_CALM (0x${Re.constants.NGHTTP2_ENHANCE_YOUR_CALM.toString(16)}), too_many_pings, doubled the interval`,E.ResourceExhausted);(f=c.onError)===null||f===void 0||f.call(c,B)}else(V=c.onError)===null||V===void 0||V.call(c,Wn(g))}function p(){h(),G(),e.off("error",m),e.off("close",d),e.off("goaway",J)}return e.on("error",m),e.on("close",d),e.on("goaway",J),c}function On(e,t){if(!(t>2147483647))return setTimeout(e,t).unref()}function zb(e){if(e.connecting)throw new C("expected open session, but it is connecting",E.Internal);if(e.destroyed)throw new C("expected open session, but it is destroyed",E.Internal);if(e.closed)throw new C("expected open session, but it is closed",E.Internal)}function kr(e){var t;return e.httpVersion=="1.1"?Lb(e.nodeOptions):jb((t=e.sessionProvider)!==null&&t!==void 0?t:(n=>new Cs(n)))}function Lb(e){return async function(n){const o=ws(n.signal);return new Promise((a,r)=>{o.onError(i=>{r(i)}),Hb(o,n.url,Object.assign(Object.assign({},e),{headers:Bs(n.header,e?.headers),method:n.method}),i=>{Fs(n,i,o),i.on("response",s=>{var l;s.on("error",o.error),o.onError(u=>s.destroy(u));const c=new Headers;a({status:(l=s.statusCode)!==null&&l!==void 0?l:0,header:In(s.headers),body:Tb(o,s,c),trailer:c})})})})}}function jb(e){return function(n){const o=ws(n.signal),a=e(n.url);return new Promise((r,i)=>{o.onError(s=>{i(s)}),Qb(o,a,n.url,n.method,Bs(n.header),{},s=>{Fs(n,s,o),s.on("response",l=>{var c;r({status:(c=l[":status"])!==null&&c!==void 0?c:0,header:In(l),body:Ob(o,s,a),trailer:Mb(s)})})})})}}function Hb(e,t,n,o){let a;new URL(t).protocol.startsWith("https")?a=qn.request(t,n):a=Pn.request(t,n),e.onError(r=>a.destroy(r)),a.flushHeaders(),a.on("error",e.error),a.on("socket",function(i){function s(){i.off("connect",s),o(a)}i.readyState==="open"?o(a):i.on("connect",s)})}function Tb(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const a=await e.race(o.next());return a.done===!0&&(In(t.trailers).forEach((r,i)=>{n.set(i,r)}),e.close()),a},throw(a){throw e.error(a),a}}}}}function Qb(e,t,n,o,a,r,i){const s=new URL(n);if(s.origin!==t.authority){const l=`cannot make a request to ${s.origin}: the http2 session is connected to ${t.authority}`;e.error(new C(l,E.Internal));return}t.request(o,s.pathname+s.search,a,{}).then(l=>{e.onError(c=>{if(l.closed)return;const u=c.code==E.Canceled?$.CANCEL:$.INTERNAL_ERROR;return new Promise(h=>l.close(u,h))}),l.on("error",function(u){l.writableEnded&&$o(u).map(yn).some(h=>h.code=="ERR_STREAM_WRITE_AFTER_END")||e.error(u)}),l.on("close",function(){const u=Bb(l.rstCode);u&&e.error(u)}),i(l)},l=>{e.error(l)})}function Mb(e){const t=new Headers;return e.on("trailers",n=>{In(n).forEach((o,a)=>{t.set(a,o)})}),t}function Ob(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const a=await e.race(o.next());return a.done===!0&&e.close(),n?.notifyResponseByteRead(t),a},throw(a){throw e.error(a),a}}}}}async function Fs(e,t,n){if(e.body===void 0){await new Promise(a=>t.end(a));return}const o=e.body[Symbol.asyncIterator]();return new Promise(a=>{r();function r(){n.isClosed()||o.next().then(i=>{if(i.done===!0){t.end(a);return}t.write(i.value,"binary",s=>{if(s==null){r();return}o.throw!==void 0&&o.throw(Wn(s)).catch(()=>{}),!(t.writableEnded&&$o(s).map(yn).some(l=>l.code=="ERR_STREAM_WRITE_AFTER_END"))&&n.error(s)})},i=>{n.error(i)})}})}function ws(e){let t,n=!1,o,a=[];const r={error(l){if(!n){n=!0,o=l instanceof C?l:Wn(l),t?.(o);for(const c of a)c(o);i()}},close(){n||(n=!0,t&&t(new C("sentinel completed early",E.Internal)),i())},isClosed(){return n},onError(l){n?o!==void 0&&l(o):a.push(l)},race(l){let c;const u=new Promise((h,A)=>{c=h,t=A});return l.then(h=>{c?.(h)},h=>{t?.(h)}),n&&t?.(o??new C("sentinel completed early",E.Internal)),u}};function i(){e&&e.removeEventListener("abort",s),a=[],t=void 0}function s(){r.error(Lt(this))}return e&&(e.addEventListener("abort",s),e.aborted&&r.error(Lt(e))),r}function Db(e){var t,n,o,a;let r;if(e.httpVersion=="2"){let i;e.sessionManager?i=e.sessionManager:i=new Cs(e.baseUrl,{pingIntervalMs:e.pingIntervalMs,pingIdleConnection:e.pingIdleConnection,pingTimeoutMs:e.pingTimeoutMs,idleConnectionTimeoutMs:e.idleConnectionTimeoutMs},e.nodeOptions),r=kr({httpVersion:"2",sessionProvider:()=>i})}else r=kr({httpVersion:"1.1",nodeOptions:e.nodeOptions});return Object.assign(Object.assign(Object.assign({},e),{httpClient:r,useBinaryFormat:(t=e.useBinaryFormat)!==null&&t!==void 0?t:!0,interceptors:(n=e.interceptors)!==null&&n!==void 0?n:[],sendCompression:(o=e.sendCompression)!==null&&o!==void 0?o:null,acceptCompression:(a=e.acceptCompression)!==null&&a!==void 0?a:[Ub,Jb]}),Mu(e.readMaxBytes,e.writeMaxBytes,e.compressMinBytes))}function _b(e){return Xb(Db(e))}function $b(e){return`cli/${e??"unknown"}`}var Pb=$b("0.1.0-dev.50.1.674e23d"),qb="/grpc";function eg(e){return`${e.replace(/\/+$/,"")}${qb}`}var tg=e=>async t=>{const{token:n,lang:o}=ys();return t.header.set("X-Hagi-Client",Pb),n&&t.header.set("Authorization",`Bearer ${n}`),o&&t.header.set("Accept-Language",o),e(t)},en;function Ye(){const e=eg(ys().baseUrl);return(!en||en.baseUrl!==e)&&(en={baseUrl:e,transport:_b({baseUrl:e,httpVersion:"1.1",useBinaryFormat:!0,interceptors:[tg]})}),en.transport}function Le(e){return e?Ud(e).toISOString():null}function pn(e){return e.length>0?e:null}function Ur(e,t){const n={earliestAt:Le(e),latestAt:Le(t)};return n.earliestAt||n.latestAt?n:null}function tn(e){return{lockId:e.lockId,ownerId:e.ownerId,status:e.status,myTurn:e.status==="Holding",position:e.position,epoch:Number(e.epoch),leaseExpiresAt:Le(e.leaseExpiresAt),maxHoldExpiresAt:Le(e.maxHoldExpiresAt),holder:e.holderOwnerId.length>0?{ownerId:e.holderOwnerId,label:pn(e.holderLabel)}:null,queueLength:e.queueLength,suggestedPollIntervalMs:e.suggestedPollIntervalMs,suggestedHeartbeatIntervalMs:e.suggestedHeartbeatIntervalMs,serverTime:Le(e.serverTime),requisition:e.requisitionedByOwnerId.length>0?{byOwnerId:e.requisitionedByOwnerId,reason:e.requisitionReason,at:Le(e.requisitionedAt)}:null,checkInWindow:Ur(e.checkInEarliestAt,e.checkInLatestAt),turnWindow:Ur(e.turnEarliestAt,e.turnLatestAt)}}function ng(e){return{lockId:e.lockId,holderOwnerId:pn(e.holderOwnerId),holderLabel:pn(e.holderLabel),epoch:Number(e.epoch),leaseExpiresAt:Le(e.leaseExpiresAt),holdStartedAt:Le(e.holdStartedAt),queueLength:e.queueLength}}function og(e){return e.locks.map(ng)}var Ze=()=>ve(rh,Ye()),lt=()=>ve(bh,Ye()),De=()=>ve(Eh,Ye()),Jr=()=>ve(Nh,Ye()),he=()=>ve(Lh,Ye()),ag=()=>ve(Hh,Ye()),xe=()=>ve(ob,Ye()),nn=()=>ve(ub,Ye()),Ct=()=>ve(Eb,Ye()),ct=()=>ve(Gb,Ye());async function w(e,t){return vb(e,await t)}function rg(){return{listSessions:async e=>w(Dh,xe().listSessions({type:e.type,activeOnly:e.activeOnly,includeArchived:e.includeArchived,projectId:e.projectId,projectIds:e.projectIds??[]})),getSession:async e=>w(Mh,xe().getSession({sessionId:e})),getSessionMessages:async(e,t={})=>w(ab,nn().getSessionMessages({sessionId:e,page:t.page,pageSize:t.pageSize,historyScope:t.historyScope,order:t.order})),createProposalSession:async e=>w(Qh,xe().openSession({body:D(eb,e)})),createChatSession:async e=>w(Th,xe().openChatSession({body:D(qh,e)})),createHagiTaskSession:async e=>w(Ph,xe().startHagiTaskSession({body:D(nb,e)})),listHagiTaskSchemas:async()=>w(Gh,Jr().listPresetTaskSchemas({})),getHagiTaskSchema:async e=>w(Sh,Jr().getPresetTaskSchema({presetTaskId:e})),updateSession:async(e,t)=>w(Oh,xe().saveSession({sessionId:e,body:D(tb,t)})),deleteSession:async(e,t)=>w(_h,xe().deleteSession({sessionId:e,deleteFiles:t??!1})),sendMessage:async(e,t)=>w(ib,nn().postSessionMessage({sessionId:e,body:D(cb,t)})),steerSession:async(e,t)=>w(rb,nn().steerSession({sessionId:e,body:D(lb,t)})),optimizeProposal:async(e,t)=>w(mb,Ct().optimizeSessionProposal({sessionId:e,body:D(Ab,t)})),generateProposal:async(e,t)=>w(hb,Ct().generateProposal({sessionId:e,body:D(fb,t)})),executeProposal:async(e,t)=>w(gb,Ct().executeProposal({sessionId:e,body:D(Rb,t??{})})),archiveProposal:async(e,t)=>w(bb,Ct().archiveSession({sessionId:e,body:D(Zb,t??{})})),completeProposal:async e=>w(pb,Ct().completeSession({sessionId:e})),submitAnnotations:async(e,t)=>w(sb,nn().submitSessionAnnotations({sessionId:e,body:D(db,t)})),listProjects:async()=>w(jh,ag().getAggregatedData({forceRefresh:!1})),createProject:async e=>w(Tm,Ze().createProject({body:D(eh,e)})),updateProject:async(e,t)=>w(Qm,Ze().updateProject({id:e,body:D(th,t)})),deleteProject:async e=>{await Ze().deleteProject({id:e})},getMonoSpecsManagement:async e=>w(Mm,Ze().getMonoSpecsManagement({projectId:e})),saveMonoSpecsManagement:async(e,t)=>w(Pm,Ze().updateMonoSpecsManagement({projectId:e,body:D(oh,t)})),initializeMonoSpecsManagement:async e=>w($m,Ze().initializeMonoSpecs({projectId:e})),reloadMonoSpecsManagement:async e=>w(Om,Ze().reloadMonoSpecs({projectId:e})),validateMonoSpecs:async e=>w(qm,Ze().validateMonoSpecsConfig({body:D(ah,e)})),cloneMonoSpecsRepositories:async(e,t)=>w(Dm,Ze().cloneMonoSpecsRepositories({projectId:e,body:D(nh,t)})),removeMonoSpecsRepositoryCheckout:async(e,t,n)=>w(_m,Ze().removeMonoSpecsRepositoryCheckout({projectId:e,path:t,force:n})),listPlans:async()=>w(gh,De().listScheduledPlans({})),getPlan:async e=>w(ph,De().getScheduledPlan({id:e})),createPlan:async e=>w(Ah,De().createScheduledPlan({body:D(Xr,e)})),updatePlan:async(e,t)=>w(fh,De().updateScheduledPlan({id:e,body:D(Xr,t)})),deletePlan:async e=>{await De().deleteScheduledPlan({id:e})},runPlan:async e=>w(Zh,De().runScheduledPlan({id:e})),startPlan:async e=>w(Rh,De().startScheduledPlan({id:e})),listVaults:async()=>w(ih,lt().listVaults({})),createVault:async e=>w(sh,lt().createVault({body:D(mh,e)})),updateVault:async(e,t)=>w(lh,lt().updateVault({id:e,body:D(hh,t)})),deleteVault:async(e,t)=>w(ch,lt().deleteVault({id:e,deleteLocalFiles:t??!1})),listVaultFiles:async(e,t)=>w(dh,lt().getVaultFiles({id:e,path:t})),previewVaultFile:async(e,t)=>w(uh,lt().getVaultFilePreview({id:e,path:t})),archiveChat:async e=>w($h,xe().archiveChatSession({sessionId:e})),listLocalSkills:async()=>w(vh,he().getLocalSkills({})),uninstallLocalSkill:async e=>w(Wh,he().uninstallLocalSkill({body:D(Uh,e)})),setBuiltInSkillAvailability:async e=>w(yh,he().setBuiltInSkillAvailability({body:D(Jh,e)})),searchSkillGallery:async e=>w(Ih,he().getSkillGallery({query:e})),getSkillGalleryDetail:async(e,t)=>w(Yh,he().getSkillGalleryDetail({id:e,source:t})),getSkillGalleryAudit:async(e,t)=>w(Xh,he().getSkillGalleryAudit({id:e,source:t})),installGallerySkill:async e=>w(kh,he().installSkill({body:D(zh,e)})),listTrustedSkillProviders:async()=>w(Bh,he().getTrustedSkillProviders({})),upsertTrustedSkillProvider:async e=>w(Ch,he().upsertTrustedSkillProvider({body:D(xh,e)})),deleteTrustedSkillProvider:async e=>w(Fh,he().deleteTrustedSkillProvider({body:D(Kh,e)})),resetTrustedSkillProviders:async()=>w(wh,he().resetTrustedSkillProviders({})),acquireLock:async e=>tn((await ct().acquireLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,label:e.label,sessionId:e.sessionId})).result),getLockStatus:async(e,t)=>tn((await ct().getLockStatus({lockId:e.lockId,ownerId:e.ownerId,waitSeconds:e.waitSeconds},{signal:t})).result),renewLock:async(e,t)=>tn((await ct().renewLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,epoch:e.epoch===void 0?void 0:BigInt(e.epoch)},{signal:t})).result),releaseLock:async e=>{const t=await ct().releaseLock({lockId:e.lockId,ownerId:e.ownerId,epoch:e.epoch===void 0?void 0:BigInt(e.epoch)});return{lockId:e.lockId,ownerId:e.ownerId,released:t.released,previousStatus:t.previousStatus,holderOwnerId:pn(t.holderOwnerId)}},requisitionLock:async e=>tn((await ct().requisitionLock({lockId:e.lockId,ownerId:e.ownerId,reason:e.reason,label:e.label,sessionId:e.sessionId})).result),listLocks:async e=>og(await ct().listLocks({prefix:e}))}}function ks(e){return process.on("SIGINT",e),process.on("SIGTERM",e),()=>{process.off("SIGINT",e),process.off("SIGTERM",e)}}function Po(e){return new Promise(t=>{setTimeout(t,e)})}function k(e){const t=e?.trim();return t||void 0}function x(e,t){const n=k(e);if(!n)throw new N(`${t} is required.`);return n}function uo(e){const t=e?.map(n=>k(n)).filter(Boolean);return t&&t.length>0?t:void 0}function Us(e=process.env,t={stdout:n=>{process.stdout.write(n)},stderr:n=>{process.stderr.write(n)}}){return{api:rg(),env:e,io:t,sleep:Po}}function ig(e){return e.option("--base-url <url>",'Backend API base URL. Overrides HAGI_API_BASE_URL and the "baseUrl" config file entry.').option("--token <token>","Bearer token for backend API calls. Overrides HAGI_API_TOKEN.").option("--lang <lang>","Accept-Language value for backend API calls. Overrides HAGI_API_LANG.")}function y(e){return e.option("--json","Emit deterministic JSON instead of human-readable text.")}function I(e,t){const n=e.optsWithGlobals();return{api:t.api,env:t.env,io:t.io,outputJson:n.json===!0,runtime:jm({baseUrl:n.baseUrl,token:n.token,lang:n.lang},t.env)}}var sg=5e3,lg=1e3,cg=1e4;function Js(e){return Math.min(lg*2**Math.max(0,e-1),cg)}async function mo(e,t,n){if(!n){await e.sleep(t);return}if(n.aborted)return;let o=()=>{};const a=new Promise(r=>{o=r,n.addEventListener("abort",o,{once:!0})});try{await Promise.race([e.sleep(t),a])}finally{n.removeEventListener("abort",o)}}function dg(e,t){return e.position!==t.position||e.holder?.ownerId!==t.holder?.ownerId}async function ug(e){const{read:t,clock:n,signal:o}=e,a=n.now(),r=e.timeoutSeconds*1e3;let i=e.initial,s=0,l=0;const c=u=>({outcome:u,status:i,polls:s,elapsedSeconds:Math.round((n.now()-a)/100)/10});for(;;){if(o?.aborted)return c("cancelled");const u=r-(n.now()-a);if(u<=0)return c("timeout");const h=Math.min(20,Math.max(1,Math.ceil(u/1e3))),A=n.now();let Z;try{Z=await t(h,o)}catch(X){if(o?.aborted)return c("cancelled");if(!Ss(X))throw X;l+=1,await mo(n,Math.min(Js(l),u),o);continue}l=0,s+=1;const G=i;if(i=Z,Z.status==="Holding")return c("holding");if(Z.status!=="Queued")return c("lost");const S=dg(G,Z);if(S&&e.onChange?.(Z),!S&&n.now()-A<1e3){const X=Z.suggestedPollIntervalMs>0?Z.suggestedPollIntervalMs:sg;await mo(n,Math.min(X,Math.max(0,r-(n.now()-a))),o)}}}var mg="HAGI_LOCK_OWNER",hg="HAGI_SESSION_ID";function bt(e){const t=e?.trim();return t||void 0}function bg(e,t){const n=bt(e)??bt(t.HAGI_LOCK_OWNER)??bt(t.HAGI_SESSION_ID);if(!n)throw new N(`No lock owner. Pass your own session ID as --owner <session-id>, or set ${mg} (or ${hg}). The CLI does not invent an owner ID.`);return n}function gg(e){const t=bt(e.lockId),n=bt(e.server),o=bt(e.game);if(t&&(n||o))throw new N("Use either --lock-id or the pair --server and --game, not both.");if(t)return t;if(n&&o)return`${n}/${o}`;throw n||o?new N("--server and --game must be given together."):new N("A lock is required: pass --lock-id <id>, or --server <name> and --game <name>.")}function St(e){return e.option("--lock-id <id>","Lock to use, for example eu-1/duckov. Alternative to --server and --game.").option("--server <name>","Server name; with --game, the lock is <server>/<game>.").option("--game <name>","Game name; with --server, the lock is <server>/<game>.").option("--owner <id>","Owner ID: your own session ID. Defaults to HAGI_LOCK_OWNER, then HAGI_SESSION_ID.")}function Nt(e,t){return{lockId:gg(e),ownerId:bg(e.owner,t)}}function Vt(e,t,n){if(e===void 0)return;const o=e.trim();if(!/^\d+$/.test(o))throw new N(`${t} must be a whole number of seconds.`);const a=Number(o);if(a<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return a}function qo(e){if(e!==void 0){if(!/^\d+$/.test(e.trim()))throw new N("--epoch must be a whole number, the epoch an acquire printed.");return Number(e.trim())}}async function vt(e){try{return await e()}catch(t){throw Gs(t)??t}}function xs(e){return{now:e.now??Date.now,sleep:e.sleep??Po}}function pg(e,t){St(y(e.command("acquire").description("Take the lock or join its queue. Without --wait: one call, exit 0 for Holding and Queued. With --wait: wait for the turn, exit 0 only when Holding. There is no force option."))).option("--wait","Keep waiting in the queue (long-poll) until you hold the lock. Run it as a continuous watcher.").option("--timeout <seconds>","With --wait: give up after this many seconds (default 900), release the queue entry, exit code 31.").option("--lease-seconds <n>","Requested lease length in seconds (the backend clamps it to 30 to 600).").option("--label <text>","Short label shown to others as the holder (at most 200 characters).").action(async function(o){if(!o.wait&&o.timeout!==void 0)throw new N("--timeout needs --wait.");const a=o.wait?Vt(o.timeout,"--timeout",1)??900:void 0,r=Vt(o.leaseSeconds,"--lease-seconds",1),i=I(this,t),s=Nt(o,i.env),l=await vt(()=>i.api.acquireLock({...s,leaseSeconds:r,label:k(o.label)})),c=S=>i.io.stdout(i.outputJson?W(S):pt(S,"acquire"));if(a===void 0||l.status==="Holding"){c(l);return}if(l.status!=="Queued")throw c(l),new et(`Owner ${s.ownerId} neither holds nor queues for lock ${s.lockId} (${l.status}).`,{reported:!0});i.outputJson||c(l);const u=new AbortController,h=(t.onInterrupt??ks)(()=>u.abort());let A;try{A=await ug({initial:l,read:(S,X)=>i.api.getLockStatus({...s,waitSeconds:S},X),timeoutSeconds:a,clock:xs(t),signal:u.signal,onChange:S=>{i.outputJson||i.io.stdout(ec(S))}})}finally{h()}let Z;(A.outcome==="timeout"||A.outcome==="cancelled")&&(Z=await i.api.releaseLock(s).then(()=>!0,()=>!1));const G={outcome:A.outcome,polls:A.polls,elapsedSeconds:A.elapsedSeconds,released:Z};switch(i.outputJson?i.io.stdout(W({...A.status,wait:G})):i.io.stdout(A.outcome==="holding"?pt(A.status,"status"):tc(A,Z)),A.outcome){case"timeout":throw new Qo(`Timed out after ${A.elapsedSeconds}s waiting for lock ${s.lockId}; last status ${A.status.status}.`);case"cancelled":throw new U(`Interrupted while waiting for lock ${s.lockId}; the lock was not acquired.`);case"lost":throw new et(`The queue entry for lock ${s.lockId} was dropped (${A.status.status}).`,{reported:!0});default:}})}var Ag=6e4,xr=[30*6e4,5*6e4],wt="Stop using the resource now.";function Kr(e,t){switch(t.status){case"Requisitioned":{const n=t.requisition;return`Lock ${e} LOST: requisitioned by ${n?.byOwnerId??"another owner"}${n?.at?` at ${n.at}`:""}, reason: ${n?.reason??"not given"}. ${wt}`}case"Expired":return`Lock ${e} LOST: the lease expired or the hard cap passed. ${wt}`;case"Queued":return`Lock ${e} LOST: this owner is queued at position ${t.position}, not holding. ${wt}`;default:return`Lock ${e} LOST: the backend has no hold for this owner (${t.status}). ${wt}`}}function zr(e,t,n){if(!t)return null;const o=Date.parse(t),a=n?Date.parse(n):NaN;return Number.isNaN(a)?o:e.now()+(o-a)}async function fg(e){const{lockId:t,ownerId:n,api:o,clock:a,signal:r}=e;let i=e.epoch,s=e.intervalSeconds===void 0?void 0:e.intervalSeconds*1e3,l=!1,c=0,u=a.now(),h=null,A=null;const Z=new Set;let G=0,S=null,X=!1,J=!1;const d=(p,g,f)=>e.emit({kind:p,message:g,errorCode:f}),m=()=>{if(A===null)return;const p=xr.filter(f=>!Z.has(f)&&a.now()>=A-f);if(p.length===0)return;p.forEach(f=>Z.add(f));const g=Math.min(...p)/6e4;d("cap-warning",`Lock ${t}: the hard cap (${new Date(A).toISOString()}) is about ${g} minutes away. The lock is taken back at the cap even while heartbeating: finish and release before then.`)};for(;;){if(r.aborted)return{outcome:"stopped",beats:c};let p=u;if(A!==null)for(const f of xr)Z.has(f)||(p=Math.min(p,A-f));if(p>a.now()&&(await mo(a,p-a.now(),r),r.aborted))return{outcome:"stopped",beats:c};if(m(),a.now()<u)continue;let g;try{if(i===void 0){const f=await o.getLockStatus({lockId:t,ownerId:n},r);if(f.status!=="Holding"){const V=`Refusing to start: owner ${n} does not hold lock ${t}. ${Kr(t,f)}`;return d("refused",V),{outcome:"refused",message:V,beats:c}}i=f.epoch}g=await o.renewLock({lockId:t,ownerId:n,epoch:i,leaseSeconds:e.leaseSeconds},r)}catch(f){if(r.aborted)return{outcome:"stopped",beats:c};const V=Gs(f);if(V){const K=`Lock ${t} LOST: ${V.message}${/stop using/i.test(V.message)?"":` ${wt}`}`;return d("lost",K,V.errorCode),{outcome:"lost",message:K,beats:c}}if(!Ss(f))throw f;G+=1;const B=a.now();S??=B,!X&&B-S>=Ag&&(X=!0,d("outage",`Backend unreachable for ${Math.round((B-S)/1e3)}s; still retrying. The lock is only lost when the backend says so, but it is released after the lease runs out.`)),!J&&h!==null&&B>=h&&(J=!0,d("maybe-lost",`Lock ${t} may already be lost: the last known lease deadline passed during the outage.`)),u=a.now()+Js(G);continue}if(g.status!=="Holding"){const f=Kr(t,g);return d("lost",f),{outcome:"lost",message:f,beats:c}}c+=1,S!==null&&(X&&d("recovered",`Backend reachable again after ${Math.round((a.now()-S)/1e3)}s; heartbeat resumed.`),S=null,X=!1,J=!1),G=0,h=zr(a,g.leaseExpiresAt,g.serverTime),A=zr(a,g.maxHoldExpiresAt,g.serverTime)??A,s??=g.suggestedHeartbeatIntervalMs>0?g.suggestedHeartbeatIntervalMs:120*1e3,l?e.verbose&&d("beat",`Heartbeat ok: valid until ${g.leaseExpiresAt??"unknown"}, hard cap ${g.maxHoldExpiresAt??"unknown"}.`):(l=!0,d("started",`Heartbeat started for lock ${t} as ${n} (epoch ${g.epoch}): renewing every ${s/1e3}s, valid until ${g.leaseExpiresAt??"unknown"}, hard cap ${g.maxHoldExpiresAt??"unknown"}. Quiet unless something needs you.`)),u=a.now()+s}}function Zg(e,t){St(y(e.command("heartbeat").description("Keep a held lock alive: renew now and then every interval. Long-running and quiet on success; run it under a watcher. Exit code 32 when the lock is lost. Stopping it (SIGINT or SIGTERM) exits 0 and does not release."))).option("--epoch <n>","Epoch of your grant. Without it, the epoch of the first status read is used, and only while you hold the lock.").option("--interval <seconds>","Seconds between renewals (default: the interval the backend suggests, 120).").option("--lease-seconds <n>","Requested lease length in seconds on every renewal (the backend clamps it to 30 to 600).").option("--verbose","Also print one line per successful renewal.").action(async function(o){const a=qo(o.epoch),r=Vt(o.interval,"--interval",1),i=Vt(o.leaseSeconds,"--lease-seconds",1),s=I(this,t),l=Nt(o,s.env),c=new AbortController,u=(t.onInterrupt??ks)(()=>c.abort());try{const h=await fg({...l,epoch:a,intervalSeconds:r,leaseSeconds:i,verbose:o.verbose===!0,api:s.api,clock:xs(t),signal:c.signal,emit:A=>{s.io.stdout(s.outputJson?`${JSON.stringify({event:A.kind,...l,message:A.message,errorCode:A.errorCode})}
|
|
59
|
+
`:`${A.message}
|
|
60
|
+
`)}});if(h.outcome!=="stopped")throw new et(h.message??`Lock ${l.lockId} is lost.`,{reported:!0})}finally{u()}})}function Rg(e,t){y(e.command("list").description("List the locks that have a holder or a queue. An empty result exits 0.")).option("--prefix <text>","Only locks whose ID starts with this text.").action(async function(o){const a=I(this,t),r=await vt(()=>a.api.listLocks(k(o.prefix)));a.io.stdout(a.outputJson?W({locks:r}):oc(r))})}function Eg(e,t){St(y(e.command("release").description("Give the lock back, or leave the queue. Exit code 0 whether or not something was released. Stop the heartbeat first."))).option("--epoch <n>","Epoch of your grant, as printed by acquire. A stale epoch is refused, so a slow old holder cannot release a newer grant.").action(async function(o){const a=qo(o.epoch),r=I(this,t),i=Nt(o,r.env),s=await vt(()=>r.api.releaseLock({...i,epoch:a}));r.io.stdout(r.outputJson?W(s):nc(s))})}function Vg(e,t){St(y(e.command("renew").description("Renew the lease once (one heartbeat). Exit code 32 when the lock is no longer yours. Prefer `heartbeat` for keeping a lock alive."))).option("--epoch <n>","Epoch of your grant, as printed by acquire. A stale epoch is refused.").option("--lease-seconds <n>","Requested lease length in seconds (the backend clamps it to 30 to 600).").action(async function(o){const a=qo(o.epoch),r=Vt(o.leaseSeconds,"--lease-seconds",1),i=I(this,t),s=Nt(o,i.env),l=await vt(()=>i.api.renewLock({...s,epoch:a,leaseSeconds:r}));if(l.status!=="Holding")throw i.io.stdout(i.outputJson?W(l):pt(l,"renew")),new et(`Owner ${s.ownerId} no longer holds lock ${s.lockId} (${l.status}).`,{reported:!0});i.io.stdout(i.outputJson?W(l):pt(l,"renew"))})}var Lr=200;function Gg(e,t){St(y(e.command("requisition").description("EMERGENCY: take the lock at once and displace the holder. Only when the user explicitly ordered a forced take; otherwise use acquire and queue."))).requiredOption("--reason <text>","Why the lock is taken (1 to 200 characters). Quote the user's order; the displaced owner is told.").option("--label <text>","Short label shown to others as the holder (at most 200 characters).").action(async function(o){const a=k(o.reason);if(!a||a.length>Lr)throw new N(`--reason must be 1 to ${Lr} characters.`);const r=I(this,t),i=Nt(o,r.env),s=await vt(()=>r.api.requisitionLock({...i,reason:a,label:k(o.label)}));r.io.stdout(r.outputJson?W(s):pt(s,"requisition"))})}function Sg(e,t){St(y(e.command("status").description("Read this owner's state on a lock: Holding, Queued, Expired, Requisitioned or None. Exit code 0 for all of them."))).option("--wait-seconds <n>","Long-poll: return early when the state changes, or after this many seconds (the server caps it at 25).").action(async function(o){const a=Vt(o.waitSeconds,"--wait-seconds",0),r=I(this,t),i=Nt(o,r.env),s=await vt(()=>r.api.getLockStatus({...i,waitSeconds:a}));r.io.stdout(r.outputJson?W(s):pt(s,"status"))})}function Ng(e,t){const n=e.command("lock").description("Take turns on a shared resource with other agents: a fair queue lock with a heartbeat.");pg(n,t),Sg(n,t),Vg(n,t),Zg(n,t),Eg(n,t),Gg(n,t),Rg(n,t)}var vg=[Ng];function Wg(e,t,n=vg){const o=e.command("agent").description("Manage agent-facing capabilities, such as the shared resource lock.");for(const a of n)a(o,t)}function yg(e,t){y(e.command("archive").description("Archive a chat session through the dedicated chat archive endpoint.")).requiredOption("--session-id <id>","Chat session id to archive.").action(async function(o){const a=I(this,t),r=o.sessionId.trim(),i=await a.api.archiveChat(r);if(a.outputJson){a.io.stdout(W({sessionId:r,message:i.message}));return}a.io.stdout(`Chat archived
|
|
61
61
|
sessionId ${r}
|
|
62
62
|
message ${i.message}
|
|
63
|
-
`)})}var
|
|
63
|
+
`)})}var Ks=(function(e){return e.INIT="Init",e.COMPLETED="Completed",e.ARCHIVED="Archived",e.DRAFTING="Drafting",e.EXECUTION_COMPLETED="ExecutionCompleted",e.OPTIMIZING="Optimizing",e.OPENSPECING="Openspecing",e.REVIEWING="Reviewing",e.EXECUTING="Executing",e.ARCHIVING="Archiving",e})({});function jr(e){return typeof e=="string"?e.trim():e?.value?.trim()??""}function Ig(e){const t=e.userMetadata;return t&&Object.keys(t).length>0?{...t}:void 0}function Yg(e){return Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(", ")}function Ae(e){const t=Ig(e);return{sessionId:jr(e.sessionId),title:e.title,type:e.type,status:e.status,projectId:jr(e.projectId),proposalName:e.proposalName??void 0,archived:e.status===Ks.ARCHIVED,lastActiveAt:e.lastActiveAt??void 0,enableIndependentWorkspace:e.enableIndependentWorkspace,baseBranch:e.baseBranch??void 0,metadata:e.metadata??void 0,...t?{userMetadata:t}:{},chatExecutorType:e.chatExecutorType??void 0}}function zs(e){return{sessions:e.sessions.map(Ae)}}function Ls(e,t){return t.length===0?`No ${e.toLowerCase()} found.
|
|
64
64
|
`:`${e} (${t.length})
|
|
65
65
|
${ie([{header:"Session ID",value:n=>n.sessionId},{header:"Title",value:n=>n.title},{header:"Status",value:n=>n.status},{header:"Project ID",value:n=>n.projectId},{header:"Archived",value:n=>n.archived?"yes":"no"}],t)}
|
|
66
|
-
`}function we(e,t=[]){return q([["sessionId",e.sessionId],["type",e.type],["title",e.title],["status",e.status],["projectId",e.projectId],["proposalName",e.proposalName],["independentWorkspace",String(e.enableIndependentWorkspace)],["baseBranch",e.baseBranch],["chatExecutorType",e.chatExecutorType],["metadata",e.metadata],["userMetadata",e.userMetadata?
|
|
66
|
+
`}function we(e,t=[]){return q([["sessionId",e.sessionId],["type",e.type],["title",e.title],["status",e.status],["projectId",e.projectId],["proposalName",e.proposalName],["independentWorkspace",String(e.enableIndependentWorkspace)],["baseBranch",e.baseBranch],["chatExecutorType",e.chatExecutorType],["metadata",e.metadata],["userMetadata",e.userMetadata?Yg(e.userMetadata):void 0],...t])}var Xg="No running task took the message, so it was sent as the next message.";function ea(e){return{requested:e.requested,source:e.source,effective:e.effective,...e.outcome!==void 0?{outcome:e.outcome}:{},...e.messageId!==void 0?{messageId:e.messageId}:{},...e.reason!==void 0?{reason:e.reason}:{}}}function ta(e,t,n,o=[],a){const r=a&&a.source!=="default"?[["steer",`${a.requested?"on":"off"} (${a.source})`],["effective",a.effective?"yes":"no"],["outcome",a.outcome],["messageId",a.messageId],["reason",a.reason]]:[],i=a?.effective&&a.outcome==="queued"?`${Xg}
|
|
67
67
|
`:"";return`${e}
|
|
68
|
-
${q([["sessionId",t],["message",n.message],...o,...r])}${i}`}function
|
|
68
|
+
${q([["sessionId",t],["message",n.message],...o,...r])}${i}`}function Bg(e,t){if(e.timedOut)return`wait: timed out after ${e.elapsedSeconds}s; status is still ${t}
|
|
69
69
|
`;if(t==="WaitingForReply")return`wait: settled at ${t} after ${e.elapsedSeconds}s; a person must answer
|
|
70
70
|
`;const n=e.transitionSeen?"a status change was seen":"no status change was seen";return`wait: settled at ${t} after ${e.polls} poll(s) in ${e.elapsedSeconds}s; ${n}
|
|
71
|
-
`}function
|
|
71
|
+
`}function Cg(e){if(e.messages.length===0)return`No messages found.
|
|
72
72
|
`;const t=e.messages.map(n=>{const o=n.contentBlocks??[],a=o.filter(s=>s.type==="Text"&&typeof s.text=="string"),r=o.length-a.length,i=[`[${n.timestamp}] ${n.type}`];for(const s of a)for(const l of s.text.split(`
|
|
73
73
|
`))i.push(` ${l}`);return r>0&&i.push(` (${r} other block${r===1?"":"s"} not shown)`),i.join(`
|
|
74
74
|
`)});return`Messages (${e.messages.length} of ${e.totalCount})
|
|
75
75
|
${t.join(`
|
|
76
76
|
|
|
77
77
|
`)}
|
|
78
|
-
`}var
|
|
79
|
-
`)}function
|
|
80
|
-
`)}function
|
|
81
|
-
${
|
|
82
|
-
`)}function
|
|
83
|
-
${we(l)}`)})}function
|
|
78
|
+
`}var Fg={readFile:e=>(0,Y.readFileSync)(e,"utf8"),readStdin:()=>(0,Y.readFileSync)(0,"utf8")},wg=['Session metadata entry as key=value (repeatable). Split at the first "=", so a value may contain "=".',"Write-once and visible to every reader of the session: do not put secrets in it."].join(" "),kg=["Read session metadata from a JSON object of string values, from a file or from stdin (-). Repeatable.","Keys and values follow the same rules as --metadata."].join(" ");function js(){return["Metadata limits (the backend checks them and reports a violation as an error):"," - at most 16 entries in total;",' - key: 1 to 64 characters matching ^[a-z][a-z0-9._-]{0,63}$ (lowercase letters, digits, "." "_" "-", starting with a letter);'," - value: 1 to 512 characters, with no control characters;"," - each key may appear once across --metadata and --metadata-json."].join(`
|
|
79
|
+
`)}function Ug(e,t){return[js(),"","The metadata is returned as userMetadata in --json output and is shown in the human output when present.","","Example (a master session and a worker session that carry role markers, the worker naming its master):",` hagi ${e} ${t} --metadata role=master --metadata batch=2026-11-07`,` hagi ${e} ${t} --metadata role=worker --metadata master=<master-session-id>`].join(`
|
|
80
|
+
`)}function Hr(e,t){return[...t??[],e]}function Hs(e,t,n){return e.option("--metadata <key=value>",wg,Hr).option("--metadata-json <file|->",kg,Hr).addHelpText("after",`
|
|
81
|
+
${Ug(t,n)}
|
|
82
|
+
`)}function Jg(e){const t=e.indexOf("=");if(t===-1)throw new N(`--metadata expects key=value, got "${e}".`);const n=e.slice(0,t);if(n==="")throw new N(`--metadata key is empty in "${e}".`);return[n,e.slice(t+1)]}function xg(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n]==="\\")n+=1;else if(e[n]==='"')return n;return e.length-1}function Kg(e){const t=[];let n=0;for(let o=0;o<e.length;o+=1){const a=e[o];if(a==='"'){const r=xg(e,o);let i=r+1;for(;i<e.length&&/\s/.test(e[i]);)i+=1;n===1&&e[i]===":"&&t.push(JSON.parse(e.slice(o,r+1))),o=r}else a==="{"||a==="["?n+=1:(a==="}"||a==="]")&&(n-=1)}return t}function na(e){return e==="-"?"stdin":e}function zg(e,t){const n=na(t);let o;try{o=JSON.parse(e)}catch(r){throw new N(`--metadata-json ${n} is not valid JSON: ${r instanceof Error?r.message:String(r)}`)}if(o===null||typeof o!="object"||Array.isArray(o))throw new N(`--metadata-json ${n} must be a JSON object of string values.`);const a=[];for(const[r,i]of Object.entries(o)){if(r==="")throw new N(`--metadata-json ${n} has an empty key.`);if(typeof i!="string")throw new N(`--metadata-json ${n}: the value of "${r}" must be a string.`);a.push([r,i])}return{entries:a,keys:Kg(e)}}function Ts(e,t=Fg){const n=new Map,o=(a,r)=>{if(n.has(a))throw new N(`Metadata key "${a}" is given more than once. Each key may appear once across --metadata and --metadata-json.`);n.set(a,r)};for(const a of e.entries??[]){const[r,i]=Jg(a);o(r,i)}for(const a of e.jsonSources??[]){const{entries:r,keys:i}=zg(Lg(a,t),a),s=new Set;for(const l of i){if(s.has(l))throw new N(`Metadata key "${l}" is given more than once in --metadata-json ${na(a)}.`);s.add(l)}for(const[l,c]of r)o(l,c)}return n.size===0?void 0:Object.fromEntries(n)}function Lg(e,t){let n;try{n=e==="-"?t.readStdin():t.readFile(e)}catch(o){const a=o instanceof Error?o.message:String(o);throw new N(`Could not read --metadata-json ${na(e)}: ${a}`)}return n.replace(/^\uFEFF/,"")}var Yn=(function(e){return e.CLAUDE_CODE_CLI="ClaudeCodeCli",e.CODEX_CLI="CodexCli",e.GIT_HUB_COPILOT="GitHubCopilot",e.CODEBUDDY_CLI="CodebuddyCli",e.OPEN_CODE_CLI="OpenCodeCli",e.IFLOW_CLI="IFlowCli",e.HERMES_CLI="HermesCli",e.QODER_CLI="QoderCli",e.KIRO_CLI="KiroCli",e.KIMI_CLI="KimiCli",e.GEMINI_CLI="GeminiCli",e.DEEP_AGENTS_CLI="DeepAgentsCli",e})({});function jg(e,t){Hs(y(e.command("create").description("Create a normal chat session.")).requiredOption("--title <title>","Chat session title.").requiredOption("--project-id <id>","Owning project id.").option("--hero-id <id>","Optional bound hero id.").addOption(new Ve("--executor-type <type>","Optional executor override.").choices(Object.values(Yn))),"chat create",'--title "<title>" --project-id <id>').action(async function(o){const a=I(this,t),r=x(o.title,"--title"),i=x(o.projectId,"--project-id"),s=Ts({entries:o.metadata,jsonSources:o.metadataJson}),l=Ae(await a.api.createChatSession({title:r,projectId:i,heroId:k(o.heroId),executorType:o.executorType,...s?{metadata:s}:{}}));if(a.outputJson){a.io.stdout(W({session:l}));return}a.io.stdout(`Chat session created
|
|
83
|
+
${we(l)}`)})}function Hg(e,t){y(e.command("delete").description("Delete a chat session.")).requiredOption("--session-id <id>","Chat session id to delete.").action(async function(o){const a=I(this,t),r=o.sessionId.trim(),i=await a.api.deleteSession(r,!1);if(a.outputJson){a.io.stdout(W({sessionId:r,deleted:!0,message:i.message}));return}a.io.stdout(`Chat deleted
|
|
84
84
|
sessionId ${r}
|
|
85
85
|
message ${i.message}
|
|
86
|
-
`)})}var
|
|
87
|
-
${we(c,[["presetTaskId",l.presetTaskId??void 0],["presetTaskLocale",l.presetTaskLocale??void 0],["promptId",l.promptId??void 0],["repositoryPath",l.repositoryPath??void 0],["targetBranchMode",l.targetBranchMode??void 0],["targetBranchName",l.targetBranchName??void 0],["scriptKey",l.scriptKey??void 0],["heroId",l.heroId??void 0],["heroSelectionMode",l.heroSelectionMode??void 0]])}`)})}var
|
|
88
|
-
`;const t=
|
|
86
|
+
`)})}var oa=(function(e){return e.CHAT="Chat",e.PROPOSAL="Proposal",e})({});function Tg(e,t){y(e.command("list").description("List normal chat sessions.")).action(async function(o){if(o.projectId&&o.projectIds?.length)throw new N("Use either --project-id or --project-ids, not both.");const a=I(this,t),r=zs(await a.api.listSessions({type:oa.CHAT,projectId:k(o.projectId),projectIds:uo(o.projectIds),activeOnly:o.activeOnly?!0:void 0,includeArchived:o.includeArchived?!0:void 0}));if(a.outputJson){a.io.stdout(W(r));return}a.io.stdout(Ls("Chat sessions",r.sessions))}).option("--project-id <id>","Filter chat sessions by a single project id.").option("--project-ids <ids...>","Filter chat sessions by multiple project ids.").option("--active-only","Only return non-archived chat sessions.").option("--include-archived","Include archived chat sessions.")}var Qg="the backend does not support Steer",Tr="HAGI_SEND_STEER";function aa(){return new Ve("--steer","Deliver the message to the running task as a Steer. Overrides HAGI_SEND_STEER and the config file.")}function ra(){return new Ve("--no-steer","Send a normal message, even when HAGI_SEND_STEER or the config file asks for Steer.")}var Mg=new Set(["1","true","yes","on"]),Og=new Set(["0","false","no","off"]);function Dg(e){const t=Ee(e[Tr]);if(t===void 0)return;const n=t.toLowerCase();if(Mg.has(n))return!0;if(Og.has(n))return!1;throw new N(`${Tr} has an unrecognized value "${t}". Accepted values: 1, true, yes, on (Steer) or 0, false, no, off (no Steer).`)}function _g({flag:e,env:t}){if(e!==void 0)return{requested:e,source:"flag"};const n=Dg(t);if(n!==void 0)return{requested:n,source:"env"};const o=zm(t);return o!==void 0?{requested:o,source:"config"}:{requested:!1,source:"default"}}async function ia(e){const{context:t,sessionId:n,content:o,mode:a,executorType:r,steerFlag:i}=e,s=_g({flag:i,env:t.env}),l=async u=>({message:(await t.api.sendMessage(n,{content:o,mode:a,executorType:r})).message,steer:{requested:s.requested,source:s.source,effective:!1,...s.requested&&u!==void 0?{reason:u}:{}}});if(!s.requested)return l();const c=[...a!==void 0?["--mode"]:[],...r!==void 0?["--executor-type"]:[]];if(c.length>0){if(s.source==="flag")throw new N(`--steer cannot be combined with ${c.join(" or ")}.`);return l(`${c.join(" or ")} cannot be combined with Steer`)}try{const u=await t.api.steerSession(n,{content:o}),h=u.outcome==="steered"?"steered":"queued";return{message:h==="steered"?"Steered":"Queued",steer:{requested:!0,source:s.source,effective:!0,outcome:h,...u.messageId!==void 0?{messageId:u.messageId}:{}}}}catch(u){if(s.source!=="flag"&&u instanceof C&&u.code===E.Unimplemented)return l(Qg);throw u}}var sa=(function(e){return e.READONLY="Readonly",e.EDIT="Edit",e})({});function $g(e,t){y(e.command("send").description("Send a follow-up message to a chat session.")).requiredOption("--session-id <id>","Chat session id.").requiredOption("--content <text>","Message content.").addOption(new Ve("--mode <mode>","Message mode override.").choices(Object.values(sa))).addOption(new Ve("--executor-type <type>","Executor override for this message.").choices(Object.values(Yn))).addOption(aa()).addOption(ra()).action(async function(o){const a=I(this,t),r=o.sessionId.trim(),i=await ia({context:a,sessionId:r,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(a.outputJson){a.io.stdout(W({sessionId:r,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:ea(i.steer)}));return}a.io.stdout(ta("Chat message sent",r,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function Pg(e,t){const n=e.command("chat").description("Manage normal chat sessions.");Tg(n,t),jg(n,t),yg(n,t),Hg(n,t),$g(n,t)}async function qg(){const e=[];for await(const t of process.stdin)e.push(typeof t=="string"?Buffer.from(t):t);return Buffer.concat(e).toString("utf8")}async function Xn(e){const t=e.trim();if(!t)throw new N("Provide --input <file> or --input - for stdin.");const n=t==="-"?await qg():await(0,Ql.readFile)(t,"utf8");try{return JSON.parse(n)}catch(o){throw new N(`Invalid JSON input from ${t}: ${o instanceof Error?o.message:String(o)}`)}}var ep=["first","random"];async function tp(e){let t;try{t=await Xn(e)}catch(n){throw n instanceof N?n:new N(`Cannot read HagiTask input from ${e}: ${n instanceof Error?n.message:String(n)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new N(`HagiTask input from ${e} must be a JSON object.`);return t}function np(e,t,n){if(!t&&!n)throw new N("Provide --task-id or --prompt-id.");if(e.input!==void 0&&!t)throw new N("--input requires --task-id.");if(e.targetBranchName&&e.targetBranchMode!=="new-custom")throw new N("--target-branch-name requires --target-branch-mode new-custom.");if(e.targetBranchMode==="new-custom"&&!k(e.targetBranchName))throw new N("--target-branch-name is required when --target-branch-mode is new-custom.");const o=k(e.heroSelectionMode);if(o&&!ep.includes(o))throw new N("--hero-selection-mode must be first or random.")}function op(e,t){y(e.command("create").description("Create a HagiTask session. Read the task schema first with `hagitask schema --task-id <id>`, then pass the input JSON with --input.")).requiredOption("--title <title>","HagiTask session title.").requiredOption("--project-id <id>","Owning project id.").option("--task-id <id>","HagiTask id from `hagitask list`. Required with --input.").option("--prompt-id <id>","Prompt template id, for example auto-compose-commit.en-US. Used when there is no --task-id.").option("--input <file|->","Structured task input: a JSON object file, or - to read it from stdin. Needs --task-id.").option("--message <text>","Optional message that overrides the prompt template.").option("--locale <locale>","Locale for the HagiTask prompt, for example en-US.").option("--repository-path <path>","Optional MonoSpecs sub-repository path, for example repos/cli.").option("--target-type <type>","Explicit target type: repository or vault.").option("--vault-id <id>","Registered vault id for vault-targeted execution.").option("--output-vault-id <id>","Output vault id for research-investigation tasks.").option("--reference-vault-id <ids...>","Reference vault ids the session may read.").option("--editable-vault-id <ids...>","Vault ids the session may edit.").option("--hero-id <id>","Preferred hero id. Takes precedence over --hero-selection-mode.").option("--hero-selection-mode <mode>","Hero choice when --hero-id is not given: first (default) or random.").option("--need-push","Request a push after commit creation when supported.").option("--pull-rebase","Run git pull --rebase before pushing, when push is requested.").option("--target-branch-mode <mode>","Target branch mode: current, new-custom or ai-generated-new. new-custom needs --target-branch-name.").option("--target-branch-name <name>","Custom target branch name. Requires --target-branch-mode new-custom.").option("--script-key <key>","Optional stable scenario script key.").action(async function(o){const a=k(o.taskId),r=k(o.promptId);np(o,a,r);const i=o.input!==void 0?await tp(x(o.input,"--input")):void 0,s=I(this,t),l={title:x(o.title,"--title"),projectId:x(o.projectId,"--project-id"),promptId:r,presetTaskId:a,presetTaskLocale:k(o.locale),presetTaskInput:i,message:k(o.message),repositoryPath:k(o.repositoryPath),targetType:k(o.targetType),vaultId:k(o.vaultId),outputVaultId:k(o.outputVaultId),referenceVaultIds:uo(o.referenceVaultId),editableVaultIds:uo(o.editableVaultId),heroId:k(o.heroId),heroSelectionMode:k(o.heroSelectionMode),needPush:o.needPush?!0:void 0,pullRebaseBeforePush:o.pullRebase?!0:void 0,targetBranchMode:k(o.targetBranchMode),targetBranchName:k(o.targetBranchName),scriptKey:k(o.scriptKey)},c=Ae(await s.api.createHagiTaskSession(l));if(s.outputJson){s.io.stdout(W({session:c,presetTaskId:l.presetTaskId??null,promptId:l.promptId??null,requested:l}));return}s.io.stdout(`HagiTask session created
|
|
87
|
+
${we(c,[["presetTaskId",l.presetTaskId??void 0],["presetTaskLocale",l.presetTaskLocale??void 0],["promptId",l.promptId??void 0],["repositoryPath",l.repositoryPath??void 0],["targetBranchMode",l.targetBranchMode??void 0],["targetBranchName",l.targetBranchName??void 0],["scriptKey",l.scriptKey??void 0],["heroId",l.heroId??void 0],["heroSelectionMode",l.heroSelectionMode??void 0]])}`)})}var ap=new Set(["Optimizing","Openspecing","Executing","Archiving"]);function rp(e){return ap.has(e)}async function ip(e,t,n){const o=n.now(),a=t.timeoutSeconds*1e3,r=t.graceSeconds*1e3,i=t.intervalSeconds*1e3;let s=0,l=!1;for(;;){const u=await e();s+=1;const h=n.now()-o,A=rp(u.status);if(l=l||A,!A&&(l||h>=r||h>=a))return c(u,{settled:!0,timedOut:!1});if(h>=a)return c(u,{settled:!1,timedOut:!0});await n.sleep(Math.min(i,a-h))}function c(u,h){return{session:u,...h,transitionSeen:l,polls:s,elapsedSeconds:Math.round((n.now()-o)/100)/10}}}function Dn(e,t,n){const o=e.trim();if(!/^\d+$/.test(o))throw new N(`${t} must be a whole number of seconds.`);const a=Number(o);if(a<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return a}function sp(e){const t=[["--timeout",e.timeout],["--interval",e.interval],["--grace",e.grace]].filter(([,r])=>r!==void 0).map(([r])=>r);if(!e.wait){if(t.length>0)throw new N(`${t.join(", ")} needs --wait.`);return}const n=e.timeout===void 0?900:Dn(e.timeout,"--timeout",1),o=e.interval===void 0?5:Dn(e.interval,"--interval",1),a=e.grace===void 0?10:Dn(e.grace,"--grace",0);if(o>=n)throw new N("--interval must be less than --timeout.");return{intervalSeconds:o,timeoutSeconds:n,graceSeconds:a}}function Qs(e,t,n){y(e.command("get").description(n.description)).requiredOption("--session-id <id>","Session id to read.").option("--wait","Poll until the status settles: not Optimizing, Openspecing, Executing or Archiving. WaitingForReply counts as settled.").option("--timeout <seconds>","With --wait: stop waiting after this many seconds (default 900). Exit code 31 on timeout.").option("--interval <seconds>","With --wait: seconds between reads (default 5). Must be less than --timeout.").option("--grace <seconds>","With --wait: keep polling a stable status that never transitioned for this long (default 10, 0 disables).").action(async function(a){const r=sp(a),i=x(a.sessionId,"--session-id"),s=I(this,t);if(!r){const h=Ae(await s.api.getSession(i));if(s.outputJson){s.io.stdout(W({session:h}));return}s.io.stdout(we(h));return}const l=await ip(()=>s.api.getSession(i),r,{now:t.now??Date.now,sleep:t.sleep??Po}),c=Ae(l.session),u={settled:l.settled,timedOut:l.timedOut,transitionSeen:l.transitionSeen,polls:l.polls,elapsedSeconds:l.elapsedSeconds};if(s.outputJson?s.io.stdout(W({session:c,wait:u})):s.io.stdout(`${we(c)}${Bg(u,c.status)}`),l.timedOut)throw new Qo(`Timed out after ${l.elapsedSeconds}s waiting for ${n.label} ${i} to settle; last status ${c.status}.`)})}function lp(e,t){Qs(e,t,{description:"Read one HagiTask session by id, including a Super Commit session. With --wait, poll until its status settles.",label:"HagiTask session"})}function cp(e){if(e===void 0)return;const t=e.trim();if(!/^\d+$/.test(t)||Number(t)<1)throw new N("--last must be a positive whole number.");return Number(t)}function Ms(e,t,n){y(e.command("messages").description(n.description)).requiredOption("--session-id <id>","Session id whose messages to read.").option("--last <n>","Read only the n newest messages. Omit it to read the backend default page (50 messages).").action(async function(a){const r=cp(a.last),i=x(a.sessionId,"--session-id"),s=I(this,t),l=await s.api.getSessionMessages(i,r===void 0?{page:1,order:"desc"}:{page:1,pageSize:r,order:"desc"});if(s.outputJson){s.io.stdout(W(l));return}s.io.stdout(Cg(l))})}function dp(e,t){Ms(e,t,{description:"Read a HagiTask session's messages, newest first. For a Super Commit, --last 1 reads the final result message."})}var M="-";function Qr(e){return e?"yes":"no"}function Mr(e){return e&&e.length>0?e.join(", "):M}function An(e){if(Array.isArray(e))return e.map(t=>An(t));if(e&&typeof e=="object"){const t=e;return Object.fromEntries(Object.keys(t).sort().map(n=>[n,An(t[n])]))}return e}function Os(e){return[...e].sort((t,n)=>{const o=t.id??"",a=n.id??"";return o<a?-1:o>a?1:0})}function up(e){return An({tasks:Os(e)})}function mp(e){if(e.length===0)return`No HagiTask is available.
|
|
88
|
+
`;const t=Os(e);return`HagiTasks (${t.length})
|
|
89
89
|
${ie([{header:"ID",value:n=>n.id??M},{header:"Version",value:n=>n.version??M},{header:"Title",value:n=>n.title??M},{header:"Description",value:n=>n.description??M}],t)}
|
|
90
|
-
`}function
|
|
90
|
+
`}function hp(e){const t=[];e.origin==="derived"&&t.push(e.producer?`derived by ${e.producer}`:"derived");for(const n of e.aliases??[])n.key&&t.push(`alias ${n.key} (deprecated)`);return e.options&&e.options.length>0&&t.push(`options: ${e.options.map(n=>n.value??"").join(", ")}`),t.length>0?t.join("; "):M}function bp(e){const t=e.id??M,n=[];n.push(q([["id",e.id??void 0],["title",e.title??void 0],["version",e.version??void 0],["locale",e.locale??void 0],["description",e.description??void 0]]));const o=e.scope?.targets??[];n.push(`Target scope (default ${e.scope?.defaultTargetType??M})${o.length===0?`
|
|
91
91
|
None.
|
|
92
92
|
`:`
|
|
93
|
-
${ie([{header:"ID",value:c=>c.id??M},{header:"Kind",value:c=>c.kind??M},{header:"Selection",value:c=>c.selectionMode??M},{header:"Required",value:c=>
|
|
93
|
+
${ie([{header:"ID",value:c=>c.id??M},{header:"Kind",value:c=>c.kind??M},{header:"Selection",value:c=>c.selectionMode??M},{header:"Required",value:c=>Qr(c.required)},{header:"Access",value:c=>Mr(c.allowedAccessTypes)},{header:"Input key",value:c=>c.requestKey??M},{header:"Scope key",value:c=>c.scopeRequestKey??M}],o)}
|
|
94
94
|
`}`);const a=e.commands?.commands??[];n.push(`Commands${a.length===0?`
|
|
95
95
|
None.
|
|
96
96
|
`:`
|
|
@@ -98,11 +98,11 @@ ${ie([{header:"ID",value:c=>c.id??M},{header:"Group",value:c=>c.groupId??M},{hea
|
|
|
98
98
|
`}`);const r=e.parameters??[];n.push(`Parameters${r.length===0?`
|
|
99
99
|
None.
|
|
100
100
|
`:`
|
|
101
|
-
${ie([{header:"Key",value:c=>c.key??M},{header:"Required",value:c=>
|
|
101
|
+
${ie([{header:"Key",value:c=>c.key??M},{header:"Required",value:c=>Qr(c.required)},{header:"Origin",value:c=>c.origin??M},{header:"Type",value:c=>c.valueType??M},{header:"Label",value:c=>c.label??M},{header:"Notes",value:hp}],r)}
|
|
102
102
|
`}`);const i=e.requirements??[];n.push(`Requirements${i.length===0?`
|
|
103
103
|
None.
|
|
104
104
|
`:`
|
|
105
|
-
${i.map(c=>`- ${c.type??M}: ${c.name??
|
|
105
|
+
${i.map(c=>`- ${c.type??M}: ${c.name??Mr(c.names)}`).join(`
|
|
106
106
|
`)}
|
|
107
107
|
`}`);const s=e.scenes?.registrations??[];n.push(`Scenes${s.length===0?`
|
|
108
108
|
None.
|
|
@@ -113,146 +113,148 @@ ${s.map(c=>`- ${c.sceneKey??M}: ${c.title??M}`).join(`
|
|
|
113
113
|
hagi hagitask schema --task-id ${t} --json # full input JSON Schema and example body
|
|
114
114
|
hagi hagitask create --title "<title>" --project-id <project-id> --task-id ${t} --input input.json
|
|
115
115
|
`),n.join(`
|
|
116
|
-
`)}function
|
|
117
|
-
`),o.body)}}throw n}}function
|
|
116
|
+
`)}function gp(e){return An(e)}function pp(e,t){y(e.command("list").description("List the active HagiTasks with their id, version, title and description.")).action(async function(){const o=I(this,t),a=await o.api.listHagiTaskSchemas();if(o.outputJson){o.io.stdout(W(up(a)));return}o.io.stdout(mp(a))})}function Ap(e,t){const n=e&&typeof e=="object"?e[t]:void 0;return typeof n=="string"&&n.trim()?n.trim():void 0}function fp(e){const t=e&&typeof e=="object"?e.diagnostics:void 0;return Array.isArray(t)?t:[]}async function Zp(e,t){try{return await e.getHagiTaskSchema(t)}catch(n){const o=vn(n);if(o?.status===404){const a=fp(o.body);if(a.length>0){const r=a.map(i=>{const s=i.path?` (${i.path})`:"";return` - ${i.code??"diagnostic"}: ${i.message??""}${s}`});throw new ye(404,[Ap(o.body,"error")??`HagiTask ${t} is not available.`,...r].join(`
|
|
117
|
+
`),o.body)}}throw n}}function Rp(e,t){y(e.command("schema").description("Show the creation schema of one HagiTask: scope, commands, parameters, requirements, scenes and an example. --json prints the full schema, including the input JSON Schema.")).requiredOption("--task-id <id>","HagiTask id to read.").action(async function(o){const a=x(o.taskId,"--task-id"),r=I(this,t),i=await Zp(r.api,a);if(r.outputJson){r.io.stdout(W(gp(i)));return}r.io.stdout(bp(i))})}function Ep(e,t){y(e.command("send").description("Send a follow-up message to a HagiTask session.")).requiredOption("--session-id <id>","HagiTask session id.").requiredOption("--content <text>","Message content.").addOption(new Ve("--mode <mode>","Message mode override.").choices(Object.values(sa))).addOption(new Ve("--executor-type <type>","Executor override for this message.").choices(Object.values(Yn))).addOption(aa()).addOption(ra()).action(async function(o){const a=I(this,t),r=o.sessionId.trim(),i=await ia({context:a,sessionId:r,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(a.outputJson){a.io.stdout(W({sessionId:r,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:ea(i.steer)}));return}a.io.stdout(ta("HagiTask message sent",r,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function Vp(e,t){const n=e.command("hagitask").description("Manage HagiTask sessions: list tasks, read a task schema, create a session from it, read one session with get (--wait to follow a run) and its messages, and send follow-up messages.");pp(n,t),Rp(n,t),op(n,t),Ep(n,t),lp(n,t),dp(n,t)}function ge(e){const t=e?.trim();return t||void 0}function Ds(e){if(!e)return"";const t=ge(e.mode);if(t==="once")return["once",ge(e.runAt)].filter(Boolean).join(" ");const n=ge(e.repeat?.rule)??t??"";return[n,n==="weekly"?(e.repeat?.weekdays??[]).map(o=>o.trim().slice(0,3).toLowerCase()).join(","):void 0,ge(e.timeOfDay),ge(e.timeZone)].filter(Boolean).join(" ")}function _e(e){return{id:ge(e.id)??"",type:ge(e.type)??"",name:ge(e.name)??"",enabled:e.enabled===!0,state:ge(e.state)??"",nextRunAt:ge(e.nextRunAt)??null,schedule:e.schedule,agentPool:e.agentPool,payload:e.payload}}function Gp(e){return{plans:e.map(_e)}}function Sp(e){return e.length===0?`No scheduled plans found.
|
|
118
118
|
`:`Plans (${e.length})
|
|
119
|
-
${ie([{header:"ID",value:t=>t.id},{header:"Type",value:t=>t.type},{header:"Name",value:t=>t.name},{header:"Enabled",value:t=>t.enabled?"yes":"no"},{header:"State",value:t=>t.state},{header:"Next Run",value:t=>t.nextRunAt??"-"},{header:"Schedule",value:t=>
|
|
120
|
-
`}function
|
|
121
|
-
${q([["planId",e.planId],["deleted",String(e.deleted)]])}`}function
|
|
122
|
-
${q([["planId",e.planId],["accepted",String(e.accepted)]])}`}var
|
|
123
|
-
${
|
|
124
|
-
${
|
|
125
|
-
${
|
|
126
|
-
${we(i)}`)})}function
|
|
127
|
-
${
|
|
119
|
+
${ie([{header:"ID",value:t=>t.id},{header:"Type",value:t=>t.type},{header:"Name",value:t=>t.name},{header:"Enabled",value:t=>t.enabled?"yes":"no"},{header:"State",value:t=>t.state},{header:"Next Run",value:t=>t.nextRunAt??"-"},{header:"Schedule",value:t=>Ds(t.schedule)}],e)}
|
|
120
|
+
`}function Qt(e){return q([["id",e.id],["type",e.type],["name",e.name],["enabled",e.enabled?"yes":"no"],["state",e.state],["nextRun",e.nextRunAt??"-"],["schedule",Ds(e.schedule)]])}function Np(e){return{planId:e,deleted:!0}}function vp(e){return`Plan deleted
|
|
121
|
+
${q([["planId",e.planId],["deleted",String(e.deleted)]])}`}function Wp(e){return{planId:ge(e.planId)??"",accepted:!0}}function yp(e){return`Plan run accepted
|
|
122
|
+
${q([["planId",e.planId],["accepted",String(e.accepted)]])}`}var Ip=["id","createdAt","updatedAt","state","nextRunAt"];async function _s(e){let t;try{t=await Xn(e)}catch(n){throw n instanceof N?n:new N(`Cannot read plan input from ${e}: ${n instanceof Error?n.message:String(n)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new N(`Plan input from ${e} must be a JSON object.`);return t}function fn(e){const t={...e};for(const n of Ip)delete t[n];return t}function Yp(e){return{strategy:"random",agents:[{heroId:e}]}}function $s(e){return{...e.name!==void 0?{name:e.name}:{},...e.heroId!==void 0?{agentPool:Yp(e.heroId)}:{},...e.enabled!==void 0?{enabled:e.enabled}:{}}}function Ps(e,t){return{...fn(e),...fn(t)}}function Xp(e,t){y(e.command("create").description("Create a scheduled plan from a JSON document. Plans are enabled unless --disabled or the document says otherwise.")).requiredOption("--input <file|->","Plan JSON file path, or - to read from stdin.").option("--name <name>","Plan name. Overrides the document name.").option("--hero-id <id>","Hero for a single-agent pool. Replaces the document agent pool.").option("--disabled","Create the plan disabled. Overrides the document enabled value.").action(async function(o){const a=I(this,t),r=fn(await _s(o.input)),i=_e(await a.api.createPlan({enabled:!0,...r,...$s({name:k(o.name),heroId:k(o.heroId),enabled:o.disabled?!1:void 0})}));if(a.outputJson){a.io.stdout(W({plan:i}));return}a.io.stdout(`Plan created
|
|
123
|
+
${Qt(i)}`)})}function Bp(e,t){y(e.command("delete").description("Delete a scheduled plan by id.")).requiredOption("--id <id>","Plan id to delete.").action(async function(o){const a=I(this,t),r=x(o.id,"--id");await a.api.deletePlan(r);const i=Np(r);if(a.outputJson){a.io.stdout(W(i));return}a.io.stdout(vp(i))})}async function qs(e,t,n){const o=await e.api.getPlan(t);return _e(o).enabled===n?{view:_e(o),changed:!1}:{view:_e(await e.api.updatePlan(t,Ps(o,{enabled:n}))),changed:!0}}function Cp(e,t){y(e.command("disable").description("Disable a scheduled plan. Nothing is sent when it is already disabled.")).requiredOption("--id <id>","Plan id to disable.").action(async function(o){const a=I(this,t),{view:r,changed:i}=await qs(a,x(o.id,"--id"),!1);if(a.outputJson){a.io.stdout(W({plan:r,changed:i}));return}a.io.stdout(`${i?"Plan disabled":"Plan was already disabled"}
|
|
124
|
+
${Qt(r)}`)})}function Fp(e,t){y(e.command("enable").description("Enable a scheduled plan. Nothing is sent when it is already enabled.")).requiredOption("--id <id>","Plan id to enable.").action(async function(o){const a=I(this,t),{view:r,changed:i}=await qs(a,x(o.id,"--id"),!0);if(a.outputJson){a.io.stdout(W({plan:r,changed:i}));return}a.io.stdout(`${i?"Plan enabled":"Plan was already enabled"}
|
|
125
|
+
${Qt(r)}`)})}function wp(e,t){y(e.command("get").description("Show one scheduled plan, including its schedule, agent pool and payload in --json mode.")).requiredOption("--id <id>","Plan id to read.").action(async function(o){const a=I(this,t),r=_e(await a.api.getPlan(x(o.id,"--id")));if(a.outputJson){a.io.stdout(W({plan:r}));return}a.io.stdout(Qt(r))})}function kp(e,t){y(e.command("list").description("List scheduled plans with their state, next run time and schedule.")).action(async function(){const o=I(this,t),a=Gp(await o.api.listPlans());if(o.outputJson){o.io.stdout(W(a));return}o.io.stdout(Sp(a.plans))})}function Up(e,t){y(e.command("run").description("Run a scheduled plan now from its stored inputs. The schedule is not changed.")).requiredOption("--id <id>","Plan id to run.").option("--background","Start the run and print the accepted plan id without waiting for the session.").action(async function(o){const a=I(this,t),r=x(o.id,"--id");if(o.background){const s=Wp(await a.api.startPlan(r));if(a.outputJson){a.io.stdout(W(s));return}a.io.stdout(yp(s));return}const i=Ae(await a.api.runPlan(r));if(a.outputJson){a.io.stdout(W({session:i}));return}a.io.stdout(`Plan run created a session
|
|
126
|
+
${we(i)}`)})}function Jp(e,t){y(e.command("update").description("Update a scheduled plan. The current plan is read first and only the given fields change.")).requiredOption("--id <id>","Plan id to update.").option("--input <file|->","JSON document whose top-level fields replace the same fields of the plan.").option("--name <name>","Updated plan name.").option("--hero-id <id>","Hero for a single-agent pool. Replaces the agent pool.").option("--enabled","Enable the plan.").option("--disabled","Disable the plan.").action(async function(o){const a=x(o.id,"--id"),r=k(o.input),i=k(o.name),s=k(o.heroId);if(o.enabled&&o.disabled)throw new N("Pass either --enabled or --disabled, not both.");const l=o.enabled?!0:o.disabled?!1:void 0;if(!r&&!i&&!s&&l===void 0)throw new N("Provide at least one change: --input, --name, --enabled, --disabled, or --hero-id.");const c=r?fn(await _s(r)):{},u=I(this,t),h=await u.api.getPlan(a),A=_e(await u.api.updatePlan(a,Ps(h,{...c,...$s({name:i,heroId:s,enabled:l})})));if(u.outputJson){u.io.stdout(W({plan:A}));return}u.io.stdout(`Plan updated
|
|
127
|
+
${Qt(A)}`)})}function xp(e,t){const n=e.command("plan").description("Manage scheduled plans: saved proposal or HagiTask inputs that run on a schedule.");kp(n,t),wp(n,t),Xp(n,t),Jp(n,t),Fp(n,t),Cp(n,t),Bp(n,t),Up(n,t)}function ue(e){const t=e?.trim();return t||void 0}function la(e){return{id:ue(e.id)??"",name:ue(e.name)??"",path:ue(e.path)??"",description:ue(e.description),isMonoSpecs:e.isMonoSpecs===!0,monoSpecsVersion:ue(e.monoSpecsVersion),monoSpecsRepoDirectory:ue(e.monoSpecsRepoDirectory),monoSpecsCommitWhenArchive:typeof e.monoSpecsCommitWhenArchive=="boolean"?e.monoSpecsCommitWhenArchive:void 0,hasError:"hasError"in e?e.hasError===!0:!1,error:"error"in e?ue(e.error):void 0}}function el(e){return{projects:(e??[]).map(la)}}function Kp(e){return e.length===0?`No projects found.
|
|
128
128
|
`:`Projects (${e.length})
|
|
129
129
|
${ie([{header:"Project ID",value:t=>t.id},{header:"Name",value:t=>t.name},{header:"Path",value:t=>t.path},{header:"MonoSpecs",value:t=>t.isMonoSpecs?"yes":"no"},{header:"Error",value:t=>t.hasError?"yes":"no"}],e)}
|
|
130
|
-
`}function
|
|
130
|
+
`}function tl(e,t=[]){return q([["id",e.id],["name",e.name],["path",e.path],["description",e.description],["isMonoSpecs",String(e.isMonoSpecs)],["monoSpecsVersion",e.monoSpecsVersion],["monoSpecsRepoDirectory",e.monoSpecsRepoDirectory],["monoSpecsCommitWhenArchive",typeof e.monoSpecsCommitWhenArchive=="boolean"?String(e.monoSpecsCommitWhenArchive):void 0],["hasError",String(e.hasError)],["error",e.error],...t])}function zp(e){return{projectId:ue(e.id)??"",name:ue(e.name)??"",isMonoSpecs:e.isMonoSpecs===!0,hasError:e.hasError===!0,error:ue(e.error),repositories:(e.repositories??[]).map(t=>({name:ue(t.name),path:t.path??void 0,displayName:ue(t.displayName),type:ue(t.type),branch:ue(t.branch),isValidGitRepo:typeof t.isValidGitRepo=="boolean"?t.isValidGitRepo:void 0}))}}function Lp(e){return`${q([["projectId",e.projectId],["name",e.name],["isMonoSpecs",String(e.isMonoSpecs)],["hasError",String(e.hasError)],["error",e.error??(e.hasError?"The project failed to load; its repository list may be incomplete.":void 0)]])}
|
|
131
131
|
${e.repositories.length===0?`This project lists no repositories.
|
|
132
132
|
`:`${ie([{header:"Name",value:t=>t.name??""},{header:"Path",value:t=>t.path??""},{header:"Display name",value:t=>t.displayName??""},{header:"Type",value:t=>t.type??""},{header:"Branch",value:t=>t.branch??""}],e.repositories)}
|
|
133
|
-
`}`}function
|
|
134
|
-
${
|
|
133
|
+
`}`}function jp(e,t){y(e.command("create").description("Create a project through the generated project client.")).requiredOption("--name <name>","Project display name.").requiredOption("--path <path>","Project root path.").option("--description <text>","Optional project description.").action(async function(o){const a=I(this,t),r=la(await a.api.createProject({name:x(o.name,"--name"),path:x(o.path,"--path"),description:k(o.description)}));if(a.outputJson){a.io.stdout(W({project:r}));return}a.io.stdout(`Project created
|
|
134
|
+
${tl(r)}`)})}function Hp(e,t){y(e.command("delete").description("Delete a project by id.")).requiredOption("--id <id>","Project id to delete.").action(async function(o){const a=I(this,t),r=o.id.trim();if(await a.api.deleteProject(r),a.outputJson){a.io.stdout(W({projectId:r,deleted:!0}));return}a.io.stdout(`Project deleted
|
|
135
135
|
projectId ${r}
|
|
136
|
-
`)})}function
|
|
136
|
+
`)})}function Tp(e,t){y(e.command("list").description("List projects from the aggregation endpoint.")).action(async function(){const o=I(this,t),a=el((await o.api.listProjects()).projects);if(o.outputJson){o.io.stdout(W(a));return}o.io.stdout(Kp(a.projects))})}function re(e){const t=e?.trim();return t||void 0}function nl(e){return{key:e.key??"",value:e.value??"",valueKind:e.valueKind??"string"}}function Qp(e){const t=e.isValidGitRepo===!0;return{name:re(e.name),code:re(e.code),path:e.path??"",url:re(e.url),displayName:re(e.displayName),type:re(e.type),icon:re(e.icon),optional:e.optional===!0,tags:e.tags??[],metadata:(e.metadata??[]).map(nl),isValidGitRepo:t,branch:t?re(e.branch):void 0,hasUncommittedChanges:e.hasUncommittedChanges===!0,unpushedCommitCount:e.unpushedCommitCount??0,hasTrackingBranch:e.hasTrackingBranch===!0,trackingBranch:re(e.trackingBranch),aheadCount:e.aheadCount??0,behindCount:e.behindCount??0,syncState:t?re(e.syncState):void 0}}function ol(e){return{version:re(e.version)??"",repoDirectory:re(e.repoDirectory)??"",configPath:re(e.configPath)??"",commitWhenArchive:e.commitWhenArchive===!0,yamlPreview:e.yamlPreview??"",metadata:(e.metadata??[]).map(nl),repositories:(e.repositories??[]).map(Qp)}}function Mp(e){return e.isValidGitRepo?[e.branch??"no branch",e.syncState,e.hasUncommittedChanges?"uncommitted changes":void 0].filter(Boolean).join(", "):"missing or not a Git repository"}function al(e,t={}){return`${q([["version",e.version],["repoDirectory",e.repoDirectory],["configPath",e.configPath],["commitWhenArchive",String(e.commitWhenArchive)]])}
|
|
137
137
|
${e.repositories.length===0?`This document lists no repositories.
|
|
138
|
-
`:`${ie([{header:"Path",value:n=>n.path},{header:"Name",value:n=>n.name??""},{header:"Type",value:n=>n.type??""},{header:"URL",value:n=>n.url??""},{header:"Local state",value:n=>
|
|
138
|
+
`:`${ie([{header:"Path",value:n=>n.path},{header:"Name",value:n=>n.name??""},{header:"Type",value:n=>n.type??""},{header:"URL",value:n=>n.url??""},{header:"Local state",value:n=>Mp(n)}],e.repositories)}
|
|
139
139
|
`}${t.yaml?`
|
|
140
140
|
YAML
|
|
141
141
|
${e.yamlPreview}${e.yamlPreview.endsWith(`
|
|
142
142
|
`)?"":`
|
|
143
|
-
`}`:""}`}function
|
|
143
|
+
`}`:""}`}function rl(e){return{results:(e??[]).map(t=>({path:t.path??"",status:t.status??"",message:re(t.message)}))}}function il(e){return e.results.length===0?`No repositories were selected for cloning.
|
|
144
144
|
`:`${ie([{header:"Path",value:t=>t.path},{header:"Status",value:t=>t.status},{header:"Message",value:t=>t.message??""}],e.results)}
|
|
145
|
-
`}function
|
|
145
|
+
`}function Op(e){return{isValid:e.isValid===!0,config:e.config?{version:re(e.config.version),repoDirectory:re(e.config.repoDirectory)}:null,warnings:e.warnings??[],errors:e.errors??[]}}function Dp(e){const t=e.isValid?"MonoSpecs configuration is valid.":"MonoSpecs configuration is invalid.",n=q([["version",e.config?.version],["repoDirectory",e.config?.repoDirectory]]),o=e.warnings.map(r=>` - ${r}
|
|
146
146
|
`).join(""),a=e.errors.map(r=>` - ${r}
|
|
147
147
|
`).join("");return[t,n.trimEnd(),e.warnings.length>0?`Warnings:
|
|
148
148
|
${o}`.trimEnd():"",e.errors.length>0?`Errors:
|
|
149
149
|
${a}`.trimEnd():""].filter(Boolean).join(`
|
|
150
150
|
`)+`
|
|
151
|
-
`}function
|
|
151
|
+
`}function _p(e){return{path:e.path??"",removed:e.removed===!0,message:re(e.message)}}function $p(e){const t=e.removed?`Removed checkout ${e.path}`:`Checkout ${e.path} was not removed`;return`${e.message?`${t}
|
|
152
152
|
${e.message}`:t}
|
|
153
|
-
`}function
|
|
154
|
-
`:"";e.io.stdout(`${a}${
|
|
155
|
-
Re-run with --force to delete this checkout anyway.`,h.details):u}const c=
|
|
156
|
-
${
|
|
153
|
+
`}function ca(e,t,n={}){const o=ol(t);if(e.outputJson){e.io.stdout(W(o));return}const a=n.heading?`${n.heading}
|
|
154
|
+
`:"";e.io.stdout(`${a}${al(o,{yaml:n.yaml})}`)}function ho(e,t){return[...t,e]}function mt(e){const t=e.trim().replace(/\\/g,"/").replace(/^(\.\/)+/,"").replace(/\/+$/,"");if(!t||t===".")throw new N(`Repository path must name a directory below the project root: "${e}".`);return t}function Pp(e,t){y(e.command("clone").description("Clone the configured repositories that are missing on the backend host. Exits with code 30 when any clone fails.")).requiredOption("--id <id>","Project id.").option("--path <path>","Configured repository path to clone. Repeatable; omit to clone every missing repository.",ho,[]).option("--include-optional","Also clone optional repositories when no --path is given.").action(async function(o){const a=o.path.map(mt),r=I(this,t),i=x(o.id,"--id"),s=o.includeOptional===!0,l=rl((await r.api.cloneMonoSpecsRepositories(i,a.length>0?{paths:a,includeOptional:s}:{includeOptional:s})).results);r.outputJson?r.io.stdout(W(l)):r.io.stdout(il(l));const c=l.results.filter(u=>u.status==="failed");if(c.length>0)throw new U(`${c.length} repository clone(s) failed. See the results above.`)})}function qp(e,t){y(e.command("init").description("Initialize the MonoSpecs configuration of a project. An initialized project returns its existing document.")).requiredOption("--id <id>","Project id.").action(async function(o){const a=I(this,t);ca(a,await a.api.initializeMonoSpecsManagement(x(o.id,"--id")),{heading:"MonoSpecs configuration initialized."})})}function eA(e,t){y(e.command("reload").description("Reread monospecs.yaml on the backend host and refresh the local Git state of its repositories.")).requiredOption("--id <id>","Project id.").action(async function(o){const a=I(this,t);ca(a,await a.api.reloadMonoSpecsManagement(x(o.id,"--id")),{heading:"MonoSpecs configuration reloaded."})})}function tA(e,t){y(e.command("remove-checkout").description("Delete the local checkout of one configured repository on the backend host. monospecs.yaml is not changed.")).requiredOption("--id <id>","Project id.").requiredOption("--path <path>","Configured repository path whose local checkout to delete.").option("--force","Delete the checkout even with uncommitted changes, unpushed commits or no upstream branch.").action(async function(o){const a=I(this,t),r=x(o.id,"--id"),i=mt(x(o.path,"--path")),s=o.force===!0;let l;try{l=await a.api.removeMonoSpecsRepositoryCheckout(r,i,s)}catch(u){const h=Ns(u);throw h.status===409&&!s&&/force/i.test(h.message)?new ye(409,`${h.message}
|
|
155
|
+
Re-run with --force to delete this checkout anyway.`,h.details):u}const c=_p(l);a.outputJson?a.io.stdout(W(c)):a.io.stdout($p(c))})}var nA="--version, --repo-directory, --commit-when-archive, --add-repository, --remove-repository";function oA(e){return{name:e.name,code:e.code,path:e.path,url:e.url,displayName:e.displayName,type:e.type,icon:e.icon,optional:e.optional,tags:e.tags,metadata:e.metadata}}function aA(e){return e.split("/").at(-1)??e}function _n(e,t,n){const o=ol(t),a=n?rl(n.results):void 0;if(e.outputJson){e.io.stdout(W(a?{...o,clone:a}:o));return}e.io.stdout(`MonoSpecs configuration saved.
|
|
156
|
+
${al(o)}`),a&&e.io.stdout(`
|
|
157
157
|
Clone results
|
|
158
|
-
${
|
|
159
|
-
${
|
|
158
|
+
${il(a)}`)}function rA(e,t){y(e.command("set").description("Change the MonoSpecs metadata or repositories. Reads the document, applies the given options and saves it.")).requiredOption("--id <id>","Project id.").option("--version <value>","MonoSpecs configuration version.").option("--repo-directory <dir>","Repository directory relative to the project root.").option("--commit-when-archive <true|false>","Whether archiving commits the MonoSpecs changes.").option("--add-repository <path>","Configured repository path to add. Repeatable.",ho,[]).option("--remove-repository <path>","Configured repository path to remove. Repeatable.",ho,[]).option("--url <url>","Clone URL of the single added repository.").option("--name <name>","Name of the single added repository. Defaults to the last path segment.").option("--display-name <name>","Display name of the single added repository.").option("--type <type>","Type of the single added repository.").option("--clone","Clone the added repositories after saving. Requires at least one --add-repository.").action(async function(o){const a=o.addRepository.map(mt),r=o.removeRepository.map(mt);if(!(o.version!==void 0||o.repoDirectory!==void 0||o.commitWhenArchive!==void 0)&&a.length===0&&r.length===0)throw new N(`Provide at least one change: ${nA}.`);if(o.clone&&a.length===0)throw new N("--clone requires at least one --add-repository.");const i=[o.url!==void 0?"--url":void 0,o.name!==void 0?"--name":void 0,o.displayName!==void 0?"--display-name":void 0,o.type!==void 0?"--type":void 0].filter(Boolean);if(i.length>0&&a.length!==1)throw new N(`${i.join(", ")} apply to a single --add-repository only.`);let s;if(o.commitWhenArchive!==void 0){if(o.commitWhenArchive!=="true"&&o.commitWhenArchive!=="false")throw new N("--commit-when-archive must be true or false.");s=o.commitWhenArchive==="true"}const l=I(this,t),c=x(o.id,"--id"),u=await l.api.getMonoSpecsManagement(c),h=(u.repositories??[]).map(oA);for(const S of r){const X=h.findIndex(J=>mt(J.path??"")===S);if(X<0)throw new N(`Repository path ${S} is not configured, so it cannot be removed.`);h.splice(X,1)}for(const S of a){if(h.some(X=>mt(X.path??"")===S))throw new N(`Repository path ${S} is already configured.`);h.push({name:o.name??aA(S),code:null,path:S,url:o.url??null,displayName:o.displayName??null,type:o.type??null,icon:null,optional:!1,tags:[],metadata:[]})}const A=await l.api.saveMonoSpecsManagement(c,{version:o.version??u.version,repoDirectory:o.repoDirectory??u.repoDirectory,commitWhenArchive:s??u.commitWhenArchive,repositories:h,metadata:u.metadata??[]});if(!o.clone){_n(l,A);return}let Z;try{Z=(await l.api.cloneMonoSpecsRepositories(c,{paths:a,includeOptional:!1})).results??[]}catch(S){throw _n(l,A),S}_n(l,A,{results:Z});const G=Z.filter(S=>S.status==="failed");if(G.length>0)throw new U(`The configuration was saved, but ${G.length} repository clone(s) failed. See the clone results above.`)})}function iA(e,t){y(e.command("show").description("Show the MonoSpecs management document of a project, with local Git state per repository.")).requiredOption("--id <id>","Project id.").option("--yaml","Also print the YAML preview in human-readable mode.").action(async function(o){const a=I(this,t);ca(a,await a.api.getMonoSpecsManagement(x(o.id,"--id")),{yaml:o.yaml===!0})})}function sA(e,t){y(e.command("validate").description("Validate the MonoSpecs configuration of a project. Exits with code 30 when it is invalid.")).requiredOption("--id <id>","Project id.").action(async function(o){const a=I(this,t),r=x(o.id,"--id"),i=((await a.api.listProjects()).projects??[]).find(l=>l.id===r);if(!i?.path)throw new ye(404,`Project ${r} was not found in the aggregation snapshot.`);const s=Op(await a.api.validateMonoSpecs({projectPath:i.path}));if(a.outputJson?a.io.stdout(W(s)):a.io.stdout(Dp(s)),!s.isValid)throw new U("MonoSpecs configuration is invalid. See the errors above.")})}function lA(e,t){const n=e.command("monospecs").description("Manage the MonoSpecs configuration and the local repository checkouts of a project.");iA(n,t),qp(n,t),rA(n,t),sA(n,t),eA(n,t),Pp(n,t),tA(n,t)}function cA(e,t){y(e.command("repositories").description("List the repositories of one project from the aggregation snapshot.")).requiredOption("--id <id>","Project id whose repositories to list.").action(async function(o){const a=I(this,t),r=o.id.trim(),i=((await a.api.listProjects()).projects??[]).find(l=>l.id===r);if(!i)throw new ye(404,`Project ${r} was not found in the aggregation snapshot.`);const s=zp(i);if(a.outputJson){a.io.stdout(W(s));return}a.io.stdout(Lp(s))})}function dA(e,t){y(e.command("update").description("Update a project by merging provided fields into the aggregation snapshot.")).requiredOption("--id <id>","Project id to update.").option("--name <name>","Updated project name.").option("--path <path>","Updated project path.").option("--description <text>","Updated project description.").option("--clear-description","Clear the stored description.").action(async function(o){if(!o.name&&!o.path&&!o.description&&!o.clearDescription)throw new N("Provide at least one field to update: --name, --path, --description, or --clear-description.");if(o.description&&o.clearDescription)throw new N("Use either --description or --clear-description, not both.");const a=I(this,t),r=o.id.trim(),i=el((await a.api.listProjects()).projects).projects.find(l=>l.id===r);if(!i)throw new ye(404,`Project ${r} was not found in the aggregation snapshot.`);const s=la(await a.api.updateProject(r,{name:k(o.name)??i.name,path:k(o.path)??i.path,description:o.clearDescription?null:k(o.description)??i.description??null}));if(a.outputJson){a.io.stdout(W({project:s}));return}a.io.stdout(`Project updated
|
|
159
|
+
${tl(s)}`)})}function uA(e,t){const n=e.command("project").description("Manage Hagi projects through generated project and aggregation APIs.");Tp(n,t),cA(n,t),jp(n,t),dA(n,t),Hp(n,t),lA(n,t)}function mA(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new N("Annotation input must be a JSON object.");const n=t;if(!Array.isArray(n.files))throw new N("Annotation input must include a files array.");const o=typeof n.totalAnnotations=="number"?n.totalAnnotations:n.files.length,a=typeof n.submittedAt=="string"&&n.submittedAt.trim()?n.submittedAt:new Date().toISOString();return{...n,sessionId:e,totalAnnotations:o,submittedAt:a,files:n.files}}function hA(e,t){y(e.command("annotate").description("Submit proposal annotations from structured JSON input.")).requiredOption("--session-id <id>","Proposal session id.").requiredOption("--input <file>","JSON file path, or - to read from stdin.").action(async function(o){const a=I(this,t),r=o.sessionId.trim(),i=mA(r,await Xn(o.input)),s=await a.api.submitAnnotations(r,i);if(a.outputJson){a.io.stdout(W({sessionId:r,message:s.message,annotationCount:s.annotationCount??i.totalAnnotations,fileCount:s.fileCount??i.files.length}));return}a.io.stdout(`Proposal annotations submitted
|
|
160
160
|
sessionId ${r}
|
|
161
161
|
message ${s.message}
|
|
162
162
|
annotationCount ${s.annotationCount??i.totalAnnotations}
|
|
163
163
|
fileCount ${s.fileCount??i.files.length}
|
|
164
|
-
`)})}function
|
|
165
|
-
${we(r)}`)})}function
|
|
166
|
-
${we(r)}`)})}function
|
|
167
|
-
${
|
|
164
|
+
`)})}function bA(e,t){y(e.command("archive").description("Archive a proposal session through the explicit archive endpoint.")).requiredOption("--session-id <id>","Proposal session id to archive.").option("--hero-id <id>","Optional hero override for archiving.").action(async function(o){const a=I(this,t),r=Ae(await a.api.archiveProposal(o.sessionId.trim(),{heroId:k(o.heroId)}));if(a.outputJson){a.io.stdout(W({session:r}));return}a.io.stdout(`Proposal archive started
|
|
165
|
+
${we(r)}`)})}function gA(e,t){y(e.command("complete").description("Mark a proposal session as completed through the dedicated completion endpoint.")).requiredOption("--session-id <id>","Proposal session id to complete.").action(async function(o){const a=I(this,t),r=Ae(await a.api.completeProposal(o.sessionId.trim()));if(a.outputJson){a.io.stdout(W({session:r}));return}a.io.stdout(`Proposal completed
|
|
166
|
+
${we(r)}`)})}function pA(e){return Ae(e)}function AA(e){return zs(e)}function fA(e){return Ls("Proposal sessions",e)}function ZA(e,t=[]){return we(e,t)}var sl="New Proposal";function RA(e){const t=k(e.title);if(t)return t;if(e.defaultTitle)return sl;throw new N("Provide --title or pass --default-title to use the placeholder proposal title.")}function EA(e,t){Hs(y(e.command("create").description("Create a proposal session only. This command does not trigger later lifecycle APIs.")).requiredOption("--project-id <id>","Project id that owns the new proposal session.").requiredOption("--chief-complaint <text>","Proposal chief complaint to store on the new session.").option("--original-chief-complaint <text>","Optional raw chief complaint text to keep alongside the stitched content.").option("--title <title>","Explicit proposal session title.").option("--default-title",`Mark the title as the placeholder title (${sl}).`).option("--enable-independent-workspace","Request an independent workspace for the proposal session.").option("--base-branch <branch>","Optional base branch for the independent workspace."),"proposal create",'--project-id <id> --chief-complaint "<text>" --default-title').action(async function(o){const a=I(this,t),r=RA(o),i=Ts({entries:o.metadata,jsonSources:o.metadataJson}),s=pA(await a.api.createProposalSession({title:r,chiefComplaint:o.chiefComplaint.trim(),originalChiefComplaint:k(o.originalChiefComplaint),type:oa.PROPOSAL,projectId:o.projectId.trim(),enableIndependentWorkspace:o.enableIndependentWorkspace?!0:void 0,baseBranch:k(o.baseBranch),isDefaultTitle:!!o.defaultTitle,...i?{metadata:i}:{}})),l=`hagi proposal optimize-description --session-id ${s.sessionId} --description "<description>"`;if(a.outputJson){a.io.stdout(W({session:s,nextCommand:l}));return}a.io.stdout(`Proposal session created
|
|
167
|
+
${ZA(s,[["next",l]])}`)})}function VA(e,t){y(e.command("execute").description("Start proposal execution only. This command maps to the execute-proposal backend action.")).requiredOption("--session-id <id>","Proposal session id to execute.").option("--hero-id <id>","Optional hero override for the execute stage.").action(async function(o){const a=I(this,t),r=o.sessionId.trim(),i=k(o.heroId),s=await a.api.executeProposal(r,{heroId:i});if(a.outputJson){a.io.stdout(W({sessionId:r,message:s.message,requested:{heroId:i}}));return}a.io.stdout(`Proposal execution started
|
|
168
168
|
sessionId ${r}
|
|
169
169
|
message ${s.message}
|
|
170
|
-
`)})}var
|
|
170
|
+
`)})}var bo=["zh-CN","zh-Hant","en-US","ja-JP","ko-KR","de-DE","fr-FR","es-ES","pt-BR","ru-RU"];function GA(e){if(e.enableExploreMode&&e.disableExploreMode)throw new N("Use either --enable-explore-mode or --disable-explore-mode, not both.");if(e.enableExploreMode)return!0;if(e.disableExploreMode)return!1}function SA(e){const t=e.trim();if(!bo.includes(t))throw new N(`--proposal-content-language must be one of: ${bo.join(", ")}.`);return t}function NA(e,t){y(e.command("generate").description("Start proposal generation only. This command does not execute the proposal.")).requiredOption("--session-id <id>","Proposal session id to generate.").requiredOption("--proposal-content-language <language>",`Language of the generated proposal content (${bo.join(", ")}).`).option("--enable-explore-mode","Explicitly enable explore mode for proposal generation.").option("--disable-explore-mode","Explicitly disable explore mode for proposal generation.").option("--hero-id <id>","Optional hero override for the generate stage.").action(async function(o){const a=I(this,t),r=o.sessionId.trim(),i=GA(o),s=SA(o.proposalContentLanguage),l=await a.api.generateProposal(r,{enableExploreMode:i,heroId:k(o.heroId),proposalContentLanguage:s}),c=`hagi proposal execute --session-id ${r}`;if(a.outputJson){a.io.stdout(W({sessionId:r,message:l.message,requested:{enableExploreMode:i,heroId:k(o.heroId),proposalContentLanguage:s},nextCommand:c}));return}a.io.stdout(`Proposal generation started
|
|
171
171
|
sessionId ${r}
|
|
172
172
|
message ${l.message}
|
|
173
173
|
next Wait for the session to reach Reviewing, then run ${c}
|
|
174
|
-
`)})}function
|
|
174
|
+
`)})}function vA(e,t){Qs(e,t,{description:"Read one proposal session by id. With --wait, poll until its status settles, so a stage can be followed without guessing.",label:"proposal session"})}function WA(e,t){Ms(e,t,{description:"Read a proposal session's messages, newest first. Use --last 1 to read the final message of a run."})}function yA(e,t){y(e.command("list").description("List proposal sessions from the backend Sessions API.")).option("--project-id <id>","Filter proposal sessions by a single project id.").option("--project-ids <ids...>","Filter proposal sessions by multiple project ids.").option("--active-only","Only return non-archived proposal sessions.").option("--include-archived","Include archived proposal sessions in the result set.").action(async function(o){if(o.projectId&&o.projectIds?.length)throw new N("Use either --project-id or --project-ids, not both.");const a=I(this,t),r=AA(await a.api.listSessions({type:oa.PROPOSAL,projectId:k(o.projectId),projectIds:o.projectIds?.map(k).filter(Boolean),activeOnly:o.activeOnly?!0:void 0,includeArchived:o.includeArchived?!0:void 0}));if(a.outputJson){a.io.stdout(W(r));return}a.io.stdout(fA(r.sessions))})}function IA(e,t){const n=t.summary,o=t.result,a=o?.validation?.isValid===!0,r=n?.appliedTitle||o?.optimizedTitle||"",i=n?.appliedProposalName||o?.optimizedProposalName||"",s=o?.validation?.diagnostics??[],l=[a?"Proposal optimized":"Proposal optimization returned diagnostics",`sessionId ${e}`,`title ${r}`,`proposalName ${i}`,`valid ${a?"yes":"no"}`];for(const c of s)l.push(`diagnostic ${c.code??"UNKNOWN"}: ${c.message??""}`.trimEnd());return a&&l.push(`next hagi proposal generate --session-id ${e}`),`${l.join(`
|
|
175
175
|
`)}
|
|
176
|
-
`}function
|
|
177
|
-
${we(s)}`)})}function
|
|
176
|
+
`}function YA(e,t){y(e.command("optimize-description").description("Optimize the proposal description, title, and name in one backend step.")).requiredOption("--session-id <id>","Proposal session id to optimize.").requiredOption("--description <text>","Description text to optimize.").option("--title <title>","Current title snapshot. The session title is used when omitted.").option("--default-title","Treat the current title as the placeholder title.").option("--optimization-direction <text>","Optional optimization direction for AI guidance.").option("--original-chief-complaint <text>","Optional original chief complaint to keep as context.").action(async function(o){const a=I(this,t),r=x(o.sessionId,"--session-id"),i=await a.api.optimizeProposal(r,{description:x(o.description,"--description"),title:k(o.title),isDefaultTitle:o.defaultTitle?!0:void 0,optimizationDirection:k(o.optimizationDirection),originalChiefComplaint:k(o.originalChiefComplaint)});if(a.outputJson){a.io.stdout(W({sessionId:r,...i}));return}a.io.stdout(IA(r,i))})}function XA(e,t){y(e.command("send").description("Send a follow-up message to a proposal session.")).requiredOption("--session-id <id>","Proposal session id.").requiredOption("--content <text>","Message content.").addOption(new Ve("--mode <mode>","Message mode override.").choices(Object.values(sa))).addOption(new Ve("--executor-type <type>","Executor override for this message.").choices(Object.values(Yn))).addOption(aa()).addOption(ra()).action(async function(o){const a=I(this,t),r=o.sessionId.trim(),i=await ia({context:a,sessionId:r,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(a.outputJson){a.io.stdout(W({sessionId:r,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:ea(i.steer)}));return}a.io.stdout(ta("Proposal message sent",r,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function BA(e,t){y(e.command("status").description("Update proposal session status through read-before-write merging.")).requiredOption("--session-id <id>","Proposal session id.").addOption(new Ve("--status <status>","Target session status.").choices(Object.values(Ks)).makeOptionMandatory()).action(async function(o){const a=I(this,t),r=o.sessionId.trim(),i=await a.api.getSession(r);await a.api.updateSession(r,{title:i.title,description:i.description,status:o.status,metadata:i.metadata});const s=Ae({...i,status:o.status});if(a.outputJson){a.io.stdout(W({session:s}));return}a.io.stdout(`Proposal status updated
|
|
177
|
+
${we(s)}`)})}function CA(e,t){const n=e.command("proposal").description("Manage proposal sessions through backend session APIs: create, generate, execute and archive stages, read one session with get (--wait to follow a stage), and read its messages.");yA(n,t),EA(n,t),YA(n,t),NA(n,t),hA(n,t),VA(n,t),bA(n,t),BA(n,t),vA(n,t),WA(n,t),gA(n,t),XA(n,t)}function FA(e){const t=["created","unchanged","merged"],n=["Saga resource installation",`root ${e.root}`,`force ${e.force?"yes":"no"}`];for(const o of t){const a=e.files.filter(r=>r.outcome===o).map(r=>r.path);n.push(`${o.padEnd(10)}${a.length>0?a.join(", "):"none"}`)}return`${n.join(`
|
|
178
178
|
`)}
|
|
179
|
-
`}function
|
|
180
|
-
`)}function
|
|
181
|
-
`:[`Active Sagas (${e.sagas.length})`,...e.sagas.map(t=>`${t.sagaId} ${t.state} revision ${t.revision} ${
|
|
182
|
-
`)}function
|
|
183
|
-
`)}function
|
|
179
|
+
`}function wA(e){return["Saga created",`id ${e.id}`,`directory ${e.directory}`,`createdAt ${e.metadata.createdAt}`,`method ${e.metadata.method}`,'next read the planning method with "hagi saga method goal", then write goal.md, research.md, acceptance.md and progress.md',""].join(`
|
|
180
|
+
`)}function ll(e){return`total ${e.total}, done ${e.done}, blocked ${e.blocked}, pending ${e.pending}, superseded ${e.superseded}`}function kA(e){return e.sagas.length===0?`No active Sagas found.
|
|
181
|
+
`:[`Active Sagas (${e.sagas.length})`,...e.sagas.map(t=>`${t.sagaId} ${t.state} revision ${t.revision} ${ll(t.counts)} open amendments ${t.openAmendments}`),""].join(`
|
|
182
|
+
`)}function UA(e){const t=Object.entries(e.artifacts).map(([o,a])=>`${o}=${a?"written":"missing"}`).join(", "),n=e.nextArtifact?`next artifact ${e.nextArtifact}: read the method with "hagi saga method ${e.nextArtifact}"`:"next artifact none";return[`Saga ${e.sagaId}`,`state ${e.state}`,`revision ${e.revision}`,`observed ${e.updatedAt}`,`artifacts ${t}`,n,`counts ${ll(e.counts)}`,`open amendments ${e.openAmendments}`,""].join(`
|
|
183
|
+
`)}function JA(e){return e.items.length===0?`No plan items for Saga ${e.sagaId}.
|
|
184
184
|
`:[`Saga ${e.sagaId} items (${e.items.length})`,...e.items.map(t=>{const n=[t.cmd?`cmd: ${t.cmd}`:void 0,t.note?`note: ${t.note}`:void 0].filter(Boolean);return`- [${t.state}] ${t.id} ${t.title}${n.length>0?` | ${n.join(" | ")}`:""}`}),""].join(`
|
|
185
|
-
`)}function
|
|
186
|
-
`)}function
|
|
187
|
-
`)
|
|
185
|
+
`)}function xA(e){const t=Object.entries(e.session.userMetadata??{}).map(([n,o])=>`${n}=${o}`).join(", ");return[`session created: ${e.session.sessionId}`,`saga ${e.sagaId}`,`metadata ${t||"none"}`,`recorded in ${e.record}`,""].join(`
|
|
186
|
+
`)}function cl(e){return e?e.drift.map(t=>`notice: method ${t.name} differs from the digest recorded at freeze (recorded ${t.recorded??"none"}, installed ${t.current}); confirm before resuming
|
|
187
|
+
`).join(""):""}function KA(e){return cl(e.methods)}function go(e,t,n){return[`refused: ${e} ${t}`,...n.map(o=>` - ${o}`),""].join(`
|
|
188
|
+
`)}function Or(e){const t=Array.isArray(e)?e.map(String):[];return t.length>0?`[${t.map(n=>`'${n}'`).join(", ")}]`:"none"}function zA(e,t){const n=String(t.sagaId);switch(e){case"claim":return[`claimed: ${n}`,`owner session ${String(t.ownerSession)}`,`token ${String(t.token)}`,`created at ${String(t.createdAt)}`,""].join(`
|
|
188
189
|
`);case"assert-owner":return t.locked?`owner ok: ${n} is owned by session ${String(t.ownerSession)}
|
|
189
190
|
`:`no owner: ${n} has no execution lock
|
|
190
191
|
`;case"release":return`released: ${n} (owner session ${String(t.ownerSession)})
|
|
191
192
|
`;case"check":return`check passed: ${n} (${String(t.phase)})
|
|
192
|
-
|
|
193
|
+
`+cl(t.methods);case"set-status":return`status set: ${n} ${String(t.state)} (revision ${String(t.revision)})
|
|
193
194
|
`;case"tick":return`ticked: ${n} ${String(t.itemId)} (${String(t.evidence)})
|
|
194
195
|
`;case"block":return`blocked: ${n} ${String(t.itemId)}: ${String(t.reason)}
|
|
195
196
|
`;case"amend":return`amendment: ${n} ${String(t.name)} (open)
|
|
196
197
|
`;case"archive":return`archived: ${n} -> ${String(t.destination)}
|
|
197
198
|
`;case"freeze":return t.unchanged?`freeze unchanged: ${n} stays at revision ${String(t.revision)}
|
|
198
|
-
`:[`frozen: ${n} revision ${String(t.revision)}`+(t.previousRevision===null?"":` (revised from ${String(t.previousRevision)})`),`reopened: ${
|
|
199
|
+
`:[`frozen: ${n} revision ${String(t.revision)}`+(t.previousRevision===null?"":` (revised from ${String(t.previousRevision)})`),`reopened: ${Or(t.reopened)} added: ${Or(t.added)}`,""].join(`
|
|
199
200
|
`);default:return`${e}: ${n}
|
|
200
|
-
`}}var
|
|
201
|
-
`)}function
|
|
201
|
+
`}}var da=["goal","research","acceptance","plan","run","amend"],LA=".gitignore";function jA(){return typeof __filename=="string"?(0,ai.pathToFileURL)(__filename).href:{}.url}function HA(e){let t=R.default.dirname((0,ai.fileURLToPath)(e));for(;;){const n=R.default.join(t,"resources","saga");if(Y.default.existsSync(n))return n;const o=R.default.dirname(t);if(o===t)break;t=o}throw new Error(`Unable to locate package resources/saga from ${e}`)}function dl(e,t){let n;try{n=Y.default.lstatSync(e)}catch(o){throw new U(`Unable to read ${t} at ${e}: ${o instanceof Error?o.message:String(o)}`)}if(!n.isFile())throw new U(`${t} is not a regular file: ${e}`);return Y.default.readFileSync(e)}function Dr(e,t,n,o){if(!e||typeof e!="object"||Array.isArray(e))throw new U(`Invalid Saga asset manifest at ${o}: ${n} must be an object`);const a=e,r=Object.keys(a).sort(),i=[...t].sort();if(r.length!==i.length||r.some((s,l)=>s!==i[l]))throw new U(`Invalid Saga asset manifest at ${o}: ${n} must list exactly ${t.join(", ")}`);for(const s of r)if(typeof a[s]!="string")throw new U(`Invalid Saga asset manifest at ${o}: ${n}.${s} must be a digest`);return a}function TA(e,t){let n;try{n=JSON.parse(e.toString("utf8"))}catch(a){throw new U(`Invalid Saga asset manifest at ${t}: ${a instanceof Error?a.message:String(a)}`)}if(!n||typeof n!="object"||Array.isArray(n))throw new U(`Invalid Saga asset manifest at ${t}: expected an object`);const o=n;if(o.schemaVersion!==2)throw new U(`Unsupported Saga asset manifest schema at ${t}`);return{schemaVersion:2,install:Dr(o.install,[LA],"install",t),methods:Dr(o.methods,da,"methods",t)}}function _r(e,t,n){const o=dl(R.default.join(e,...t.split("/")),`Saga asset ${t}`);if(!/^[0-9a-f]{64}$/.test(n)||(0,je.createHash)("sha256").update(o).digest("hex")!==n)throw new U(`Saga asset integrity check failed for ${t}`);return o}function Bn(e=jA()){const t=HA(e),n=R.default.join(t,"manifest.json"),o=TA(dl(n,"Saga asset manifest"),n),a=new Map;for(const[i,s]of Object.entries(o.install))a.set(i,_r(t,i,s));const r=new Map;for(const i of da)r.set(i,_r(t,`prompts/${i}.md`,o.methods[i]));return{directory:t,install:a,methods:r}}var QA=/^- \[( |x)\] (\S+) (.*?)\s*\|\s*(.*)$/,MA=/^- ~ (\S+) (.*?)\s*\|\s*(.*)$/,OA=new Set(["## 待决问题","## Open questions"]),DA=["[已决定","[decided"],_A=new Set(["- 无","- none"]);function tt(){return new Date().toISOString().replace(/\.\d{3}Z$/,"Z")}function $e(e){return(0,je.createHash)("sha256").update(e).digest("hex")}function Mt(e){if(!e)return[];const t=e.split(/\r?\n/);return t.at(-1)===""&&t.pop(),t}function ul(e){const t=[],n=[];return Mt(e).forEach((o,a)=>{const r=QA.exec(o);if(r){t.push({line:a,id:r[2],title:r[3],done:r[1]==="x",note:r[4].trim()});return}const i=MA.exec(o);i&&n.push({id:i[1],title:i[2]})}),{active:t,superseded:n}}function ml(e){const t={};let n;for(const o of Mt(e)){const a=/^## (\S+)/.exec(o);a&&(n=a[1]);const r=/^cmd:\s*(.+)$/.exec(o);r&&n&&(t[n]=r[1].trim())}return t}function $A(e){const t=[];let n=!1;for(const o of Mt(e)){if(o.startsWith("## ")){n=OA.has(o.trim());continue}n&&o.startsWith("- ")&&!DA.some(a=>o.includes(a))&&!_A.has(o.trim().toLowerCase())&&t.push(o.slice(2).trim())}return t}function PA(e){const t=/^merged-in:[ \t]*(\S*)[ \t]*$/m.exec(e);return t?t[1]:""}function qA(e){return[...e.active.map(t=>`${t.id} ${t.title}`),...e.superseded.map(t=>`~ ${t.id} ${t.title}`)].join(`
|
|
202
|
+
`)}function ef(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,$e(n)]))}function $r(e){const t=n=>Object.entries(n).map(([o,a])=>` ${o}: ${a}
|
|
202
203
|
`).join("");return`revision: ${e.revision}
|
|
203
204
|
`+(e.frozenAt===void 0?"":`frozen-at: ${e.frozenAt}
|
|
204
205
|
`)+(e.prev===void 0?"":`prev: ${e.prev}
|
|
205
206
|
`)+`hashes:
|
|
206
207
|
${t(e.hashes)}acceptance-by-item:
|
|
207
|
-
${t(e.acceptanceByItem)}
|
|
208
|
-
|
|
209
|
-
`
|
|
210
|
-
|
|
208
|
+
${t(e.acceptanceByItem)}`+(e.methods===void 0?"":`methods:
|
|
209
|
+
${t(e.methods)}`)+`items: ${e.items.join(" ")}
|
|
210
|
+
`}function hl(e,t="contract.lock"){const n=/^revision:\s*(\d+)/m.exec(e),o=/^hashes:\r?\n/m.exec(e),a=/^acceptance-by-item:\r?\n/m.exec(e),r=/^items:[ \t]*(.*)$/m.exec(e);if(!n||!o||!a||!r)throw new U(`Invalid Saga data in "${t}": malformed contract lock.`);const i=Number(n[1]);if(!Number.isSafeInteger(i))throw new U(`Invalid Saga data in "${t}": invalid revision.`);return{revision:i,frozenAt:/^frozen-at:[ \t]*(\S*)/m.exec(e)?.[1],prev:/^prev:[ \t]*(\S*)/m.exec(e)?.[1],hashes:$n(e,"hashes"),acceptanceByItem:$n(e,"acceptance-by-item"),methods:/^methods:\r?\n/m.test(e)?$n(e,"methods"):void 0,items:r[1].split(/\s+/).filter(Boolean)}}function $n(e,t){const n=new RegExp(`^${t}:\\r?\\n((?: .*\\r?\\n?)*)`,"m").exec(e);return n?Object.fromEntries([...n[1].matchAll(/^ {2}(\S+):\s*(\S+)\s*$/gm)].map(o=>[o[1],o[2]])):{}}var po="**/runtime/";function Gt(e){try{return(0,Y.lstatSync)(e)}catch(t){if(t.code==="ENOENT")return;throw t}}function tf(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function ne(e,t){const n=R.default.resolve(e),o=R.default.resolve(t),a=R.default.relative(n,o);if(a==="")return o;if(a===".."||a.startsWith(`..${R.default.sep}`)||R.default.isAbsolute(a))throw new H([`path escapes the Saga root: ${t}`]);const r=Gt(n);if(r&&(r.isSymbolicLink()||!tf((0,Y.realpathSync)(n),n)))throw new H([`Saga root is redirected through a link: ${n}`]);let i=n;for(const s of a.split(R.default.sep)){i=R.default.join(i,s);const l=Gt(i);if(!l)break;if(l.isSymbolicLink())throw new H([`refusing a redirected Saga path: ${i}`])}return o}function ke(e,t){const n=ne(e,t);try{(0,Y.mkdirSync)(n,{recursive:!0})}catch(o){throw new U(`Cannot create Saga directory "${t}": ${Fn(o)}`)}}function Cn(e,t,n){const o=ne(e,t);let a;try{a=(0,Y.openSync)(o,"wx"),(0,Y.writeSync)(a,ma(n))}finally{a!==void 0&&(0,Y.closeSync)(a)}}function ht(e,t,n){const o=ne(e,t),a=R.default.join(R.default.dirname(o),`${R.default.basename(o)}.${(0,je.randomUUID)()}.tmp`);let r;try{r=(0,Y.openSync)(a,"wx"),(0,Y.writeSync)(r,ma(n)),(0,Y.closeSync)(r),r=void 0,(0,Y.renameSync)(a,o)}finally{r!==void 0&&(0,Y.closeSync)(r),Gt(a)&&(0,Y.unlinkSync)(a)}}function ua(e,t,n){ht(e,t,`${JSON.stringify(n,null,2)}
|
|
211
|
+
`)}function nf(e,t,n){const o=ne(e,t),a=Wt(e,t),r=a!==void 0&&a.length>0&&a[a.length-1]!==10;let i;try{i=(0,Y.openSync)(o,"a"),(0,Y.writeSync)(i,ma(r?`
|
|
212
|
+
${n}`:n))}catch(s){throw new U(`Cannot append to Saga data "${t}": ${Fn(s)}`)}finally{i!==void 0&&(0,Y.closeSync)(i)}}function bl(e,t){(0,Y.unlinkSync)(ne(e,t))}function of(e,t,n){(0,Y.linkSync)(ne(e,t),ne(e,n))}function af(e,t,n){const o=ne(e,t),a=ne(e,n);if(Gt(a))throw new H([`destination already exists: ${n}`]);(0,Y.renameSync)(o,a)}function Wt(e,t){const n=ne(e,t);try{return(0,Y.readFileSync)(n)}catch(o){if(o.code==="ENOENT")return;throw new U(`Cannot read Saga data "${t}": ${Fn(o)}`)}}function Pe(e,t){return Wt(e,t)?.toString("utf8")}function rf(e,t,n){const o=ne(e,t),a=ne(e,n);if(Gt(a))throw new H([`destination already exists: ${n}`]);(0,Y.renameSync)(o,a)}function sf(e){return e.split(/\r?\n/).includes(po)}function yt(e){ke(e,e);const t=ne(e,R.default.join(e,".gitignore"));let n;try{if(n=Gt(t)?(0,Y.readFileSync)(t,"utf8"):void 0,n!==void 0&&sf(n))return;if(n===void 0){Cn(e,t,`${po}
|
|
211
213
|
`);return}const o=n.includes(`\r
|
|
212
214
|
`)?`\r
|
|
213
215
|
`:`
|
|
214
|
-
`;(0,
|
|
215
|
-
`)?o:""}${
|
|
216
|
-
`)}catch(a){throw(0,
|
|
216
|
+
`;(0,Y.appendFileSync)(t,`${n.length>0&&!n.endsWith(`
|
|
217
|
+
`)?o:""}${po}${o}`)}catch(o){throw o instanceof H?o:new U(`Cannot write the runtime ignore rule in "${t}": ${Fn(o)}. No runtime files were created.`)}}function ma(e){return typeof e=="string"?Buffer.from(e,"utf8"):e}function Fn(e){return e instanceof Error?e.message:String(e)}var lf=/^[a-z0-9][a-z0-9-]{0,62}$/,cf=new Set(["prompts","tools","archive","runtime","amendments","revisions"]);function Ao(e){try{return(0,Y.lstatSync)(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}function df(e){try{return(0,Y.statSync)(e).isDirectory()}catch(t){if(t.code==="ENOENT")return!1;throw t}}function uf(e,t){if(!lf.test(e))throw new N(`Invalid Saga ID ${JSON.stringify(e)}: use 1-63 lowercase letters, digits, or hyphens, beginning with a letter or digit.`);if(cf.has(e))throw new N(`Saga ID ${JSON.stringify(e)} is reserved.`);const n=R.default.join(t,e);if(Ao(n))throw new U(`Saga "${e}" already exists at ${n}.`);const o=R.default.join(t,"archive");if(df(o)){const a=(0,Y.readdirSync)(o).find(r=>r.endsWith(`-${e}`));if(a)throw new U(`Saga "${e}" already exists in the archive as "${a}".`)}}function mf(e){return`hagi saga init ${e.kind==="path"?"--path":"--project-id"} ${JSON.stringify(e.value)}`}function hf(e,t){const n=R.default.dirname(R.default.dirname(e)),o=[".hagicode",".hagicode/sagas"],a=[".gitignore"],r=s=>{throw new U(`Saga resource path "${s}" is missing or unsafe. Run ${mf(t)} after correcting the target.`)};for(const s of o){const l=R.default.join(n,s);Ao(l)||r(s);const c=(0,Y.lstatSync)(l);(c.isSymbolicLink()||!c.isDirectory())&&r(s)}for(const s of a){const l=R.default.join(e,...s.split("/"));Ao(l)||r(s);const c=(0,Y.lstatSync)(l);(c.isSymbolicLink()||!c.isFile())&&r(s)}const i=(0,Y.readFileSync)(R.default.join(e,".gitignore"),"utf8").split(/\r?\n/);!i.includes("**/runtime/")&&!i.includes("*/runtime/")&&r(".gitignore (runtime ignore rule)")}function bf(e,t){const n=ne(t,R.default.join(t,e));try{(0,Y.mkdirSync)(n)}catch(a){throw a.code==="EEXIST"?new U(`Saga "${e}" already exists at ${n}.`):a}const o={id:e,createdAt:tt(),method:1};try{Cn(t,R.default.join(n,"saga.json"),`${JSON.stringify(o,null,2)}
|
|
218
|
+
`)}catch(a){throw(0,Y.rmSync)(n,{recursive:!0,force:!0}),a}return o}var gl=[".hagicode",".hagicode/sagas"];function pl(e){return e.toString("utf8").split(/\r?\n/).includes("**/runtime/")}function gf(e){if(pl(e))return e;const t=e.toString("utf8"),n=t.match(/\r\n|\n/)?.[0]??`
|
|
217
219
|
`,o=e.length>0&&!t.endsWith(`
|
|
218
|
-
`)?n:"";return Buffer.concat([e,Buffer.from(`${o}**/runtime/`)])}function
|
|
219
|
-
`);try{
|
|
220
|
-
`}function
|
|
220
|
+
`)?n:"";return Buffer.concat([e,Buffer.from(`${o}**/runtime/`)])}function Ht(e){try{return(0,Y.lstatSync)(e)}catch(t){if(t.code==="ENOENT")return;throw t}}function Pr(e,t,n){const o=R.default.join(R.default.dirname(e),`.${R.default.basename(e)}.${(0,je.randomUUID)()}.tmp`);let a;try{a=(0,Y.openSync)(o,"wx",n??438),(0,Y.writeFileSync)(a,t),(0,Y.closeSync)(a),a=void 0,(0,Y.renameSync)(o,e)}finally{a!==void 0&&(0,Y.closeSync)(a),Ht(o)&&(0,Y.unlinkSync)(o)}}function qr(e,t,n){const o=R.default.relative(e,n);if(o===".."||o.startsWith(`..${R.default.sep}`)||R.default.isAbsolute(o))throw new U(`Saga installation path escapes the selected project: ${t}`);const a=R.default.resolve(t),r=R.default.resolve(n);if(process.platform==="win32"?a.toLowerCase()!==r.toLowerCase():a!==r)throw new U(`Saga installation path is redirected: ${t}`)}function on(e,t){const n=(0,Y.realpathSync)(e);if(!(0,Y.statSync)(n).isDirectory())throw new U(`Selected project path is not a directory: ${e}`);const o=R.default.join(n,".hagicode","sagas");for(const a of gl){const r=R.default.join(n,a),i=Ht(r);if(i){if(i.isSymbolicLink())throw new U(`Refusing redirected Saga installation directory: ${r}`);if(!i.isDirectory())throw new U(`Saga installation path is not a directory: ${r}`);qr(n,r,(0,Y.realpathSync)(r))}}for(const a of t.install.keys()){const r=R.default.join(o,...a.split("/")),i=Ht(r);if(i){if(i.isSymbolicLink())throw new U(`Refusing redirected Saga resource: ${r}`);if(!i.isFile())throw new U(`Saga resource is not a regular file: ${r}`);if(qr(o,r,(0,Y.realpathSync)(r)),i.nlink>1&&!pl((0,Y.readFileSync)(r)))throw new U(`Refusing to overwrite hard-linked Saga resource: ${r}`)}}return o}function pf(e,t,n=!1){const o=on(e,t),a=R.default.dirname(R.default.dirname(o));for(const i of gl){const s=R.default.join(a,i);Ht(s)||(0,Y.mkdirSync)(s)}on(a,t);const r=[];for(const[i,s]of t.install){const l=R.default.join(o,...i.split("/")),c=Ht(l);if(!c){on(a,t),Pr(l,s),r.push({path:i,outcome:"created"});continue}const u=(0,Y.readFileSync)(l),h=gf(u);u.equals(h)?r.push({path:i,outcome:"unchanged"}):(on(a,t),Pr(l,h,c.mode&511),r.push({path:i,outcome:"merged"}))}return{root:o,force:n,files:r,conflicts:[]}}var Ot=da;function Af(e){return Ot.includes(e)}function ff(e){return(0,je.createHash)("sha256").update(e).digest("hex")}function Al(e,t=Bn()){const n=t.methods.get(e);if(!n)throw new Error(`Saga method ${e} is missing from the verified bundle`);return{name:e,sha256:ff(n),bytes:n}}function fl(e=Bn()){return Object.fromEntries(Ot.map(t=>[t,Al(t,e).sha256]))}var Zl=/^[a-z0-9][a-z0-9-]{0,62}$/,Rl=new Set(["prompts","tools","archive","runtime","amendments","revisions"]),Zf=[["goal","goal.md"],["research","research.md"],["acceptance","acceptance.md"],["plan","progress.md"]];function wn(e){return e instanceof Error&&"code"in e&&e.code==="ENOENT"}function It(e){let t;try{t=(0,Y.statSync)(e)}catch(n){if(wn(n))return;throw new U(`Cannot inspect Saga data "${e}": ${n instanceof Error?n.message:String(n)}`)}if(!t.isFile())throw new U(`Cannot read Saga data "${e}": not a regular file.`);try{return(0,Y.readFileSync)(e,"utf8")}catch(n){throw new U(`Cannot read Saga data "${e}": ${n instanceof Error?n.message:String(n)}`)}}function Rf(e){const t=ul(It(R.default.join(e,"progress.md"))??"");return{active:t.active.map(({id:n,title:o,done:a,note:r})=>({id:n,title:o,done:a,note:r})),superseded:t.superseded}}function Ef(e){return ml(It(R.default.join(e,"acceptance.md"))??"")}function Vf(e){const t=R.default.join(e,"runtime","blocked.json"),n=It(t);if(n===void 0)return{};let o;try{o=JSON.parse(n)}catch(a){throw new U(`Invalid Saga data in "${t}": ${a instanceof Error?a.message:String(a)}`)}if(!o||typeof o!="object"||Array.isArray(o))throw new U(`Invalid Saga data in "${t}": expected a JSON object.`);return o}function Gf(e){const t=R.default.join(e,"contract.lock"),n=It(t);return n===void 0?0:hl(n,t).revision}function ha(e){const t=R.default.join(e,"amendments");let n;try{if(!(0,Y.statSync)(t).isDirectory())return[];n=(0,Y.readdirSync)(t).filter(o=>o.endsWith(".md")).sort()}catch(o){if(wn(o))return[];throw new U(`Cannot read Saga amendments "${t}": ${o instanceof Error?o.message:String(o)}`)}return n.map(o=>{const a=R.default.join(t,o),r=It(a);if(r===void 0)throw new U(`Cannot read Saga amendment "${a}": not a regular file.`);return{name:o,mergedIn:PA(r)}})}function Sf(e){const t=n=>{const o=It(R.default.join(e,n));return o!==void 0&&o.trim()!==""};return{goal:t("goal.md"),research:t("research.md"),acceptance:t("acceptance.md"),plan:t("progress.md")}}function El(e){const t=Rf(e),n=Ef(e),o=Vf(e);return[...t.active.map(a=>({id:a.id,title:a.title,state:a.done?"done":a.id in o?"blocked":"pending",cmd:n[a.id]||"",note:a.note})),...t.superseded.map(a=>({id:a.id,title:a.title,state:"superseded",cmd:"",note:""}))]}function Nf(e){return El(e)}function ba(e,t){const n=Gf(t),o=El(t),a=Sf(t),r=o.filter(l=>l.state!=="superseded"),i=o.filter(l=>l.state==="done").length,s=Zf.find(([l])=>!a[l])?.[0]??null;return{schema:"saga-status/2",sagaId:e,revision:n,state:n===0?s?"draft":"planned":i===r.length?"done":"running",updatedAt:new Date().toISOString().replace(/\.\d{3}Z$/,"Z"),note:"",artifacts:a,nextArtifact:s,counts:{total:r.length,done:i,blocked:o.filter(l=>l.state==="blocked").length,pending:o.filter(l=>l.state==="pending").length,superseded:o.filter(l=>l.state==="superseded").length},openAmendments:ha(t).filter(l=>!l.mergedIn).length,items:o.map(({id:l,title:c,state:u})=>({id:l,title:c,state:u}))}}function kn(e,t){const n=()=>{throw new ye(404,`Saga "${t}" was not found.`)};(!Zl.test(t)||Rl.has(t))&&n();const o=R.default.join(e,t);let a;try{a=(0,Y.lstatSync)(o)}catch(r){throw wn(r)&&n(),new U(`Cannot inspect Saga "${o}": ${r instanceof Error?r.message:String(r)}`)}return a.isDirectory()||n(),o}function vf(e){let t;try{t=(0,Y.readdirSync)(e,{withFileTypes:!0})}catch(n){if(wn(n))return[];throw new U(`Cannot list Sagas in "${e}": ${n instanceof Error?n.message:String(n)}`)}return t.filter(n=>n.isDirectory()&&Zl.test(n.name)&&!Rl.has(n.name)).map(n=>n.name).sort()}function Wf(e){return vf(e).map(t=>{const n=ba(t,R.default.join(e,t));return{sagaId:n.sagaId,state:n.state,revision:n.revision,counts:n.counts,openAmendments:n.openAmendments,updatedAt:n.updatedAt}})}function yf(e){return{sagas:Wf(e)}}function If(e,t){return{sagaId:t,items:Nf(kn(e,t))}}function ga(e,t){return R.default.join(e,t)}function pa(e,t){return R.default.join(ga(e,t),"runtime","execute.lock")}function Yf(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return typeof t.token=="string"&&typeof t.ownerSession=="string"&&typeof t.createdAt=="string"}function Aa(e,t){const n=ne(e,pa(e,t));let o;try{o=(0,Y.readFileSync)(n,"utf8")}catch(r){if(r.code==="ENOENT")return;throw new U(`Cannot read the execution lock of Saga "${t}": ${r.message}`)}let a;try{a=JSON.parse(o)}catch{throw new U(`The execution lock of Saga "${t}" is not valid JSON.`)}if(!Yf(a))throw new U(`The execution lock of Saga "${t}" has an unexpected shape.`);return a}function Vl(e,t){return t===void 0||t===""?!1:(0,je.timingSafeEqual)(Buffer.from($e(e),"hex"),Buffer.from($e(t),"hex"))}function Gl(e,t){return`Saga "${e}" is owned by session ${t}; reconcile the prior orchestrator and its workers. Ownership is never taken over by age.`}function Xf(e,t,n){const o=n?.trim();if(!o)throw new N("claim requires a nonempty --session <owner-session-id>.");yt(e),ke(e,R.default.join(ga(e,t),"runtime"));const a={token:(0,je.randomUUID)(),ownerSession:o,createdAt:tt()},r=pa(e,t),i=R.default.join(R.default.dirname(r),`.execute.lock.${(0,je.randomUUID)()}.tmp`);Cn(e,i,`${JSON.stringify(a,null,2)}
|
|
221
|
+
`);try{of(e,i,r)}catch(s){throw s.code!=="EEXIST"?s:new H([Gl(t,Aa(e,t)?.ownerSession??"unknown")])}finally{bl(e,i)}return a}function fa(e,t,n){const o=Aa(e,t);if(!o)return{locked:!1};if(!Vl(o.token,n))throw new H([`${Gl(t,o.ownerSession)} Supply the execution token with --token or SAGA_EXECUTION_TOKEN.`]);return{locked:!0,ownerSession:o.ownerSession}}function Bf(e,t){const n=ne(e,R.default.join(ga(e,t),"runtime","status.json"));let o;try{o=(0,Y.readFileSync)(n,"utf8")}catch(a){if(a.code==="ENOENT")return;throw a}try{const a=JSON.parse(o).state;return typeof a=="string"?a:void 0}catch{return}}function Cf(e,t,n){const o=Aa(e,t);if(!o)throw new H([`Saga "${t}" has no execution lock; there is nothing to release.`]);if(!Vl(o.token,n.token))throw new H([`the execution token does not match the owner session ${o.ownerSession}.`]);if(!n.workersSettled)throw new H(["confirm that every worker has settled with --workers-settled."]);const a=Bf(e,t);if(a!=="paused"&&a!=="done")throw new H([`the stored status is ${a??"missing"}; write a paused or done snapshot with set-status before releasing.`]);return bl(e,pa(e,t)),{ownerSession:o.ownerSession}}function Za(e){const t=R.default.resolve(e);let n;try{n=(0,Y.realpathSync)(t)}catch(o){throw new U(`Cannot use local project path "${e}": ${o instanceof Error?o.message:String(o)}`)}if(!(0,Y.statSync)(n).isDirectory())throw new U(`Local project path is not a directory: "${e}"`);return n}function fo(e){if(!Array.isArray(e.projects))throw new U("Backend project list did not include a projects collection.");return e.projects}function Sl(e,t){if(typeof e.path!="string"||e.path.length===0)throw new U(`Backend project "${t}" has no host-local project path.`);return Za(e.path)}async function Ff(e,t,n){if(e.kind==="path")return Za(e.value);const o=fo(await I(t,n).api.listProjects()).find(a=>a.id===e.value);if(!o)throw new ye(404,`Project "${e.value}" was not found.`);return Sl(o,e.value)}function wf(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function kf(e){try{return(0,Y.realpathSync)(R.default.resolve(e))}catch{return}}function Uf(e,t){const n=e.flatMap(o=>{if(typeof o.id!="string"||typeof o.path!="string"||o.path.length===0)return[];const a=kf(o.path);return a!==void 0&&wf(a,t)?[{id:o.id}]:[]});if(n.length===0)throw new H([`no registered project has the path ${t}; register the project or pass --project-id.`]);if(n.length>1){const o=n.map(a=>a.id).join(", ");throw new H([`${n.length} registered projects have the path ${t} (${o}); pass --project-id to choose one.`])}return{projectId:n[0].id,projectDirectory:t}}async function Jf(e,t){if(e.kind==="path"){const o=Za(e.value);return Uf(fo(await t()),o)}const n=fo(await t()).find(o=>o.id===e.value);if(!n)throw new ye(404,`Project "${e.value}" was not found.`);return{projectId:e.value,projectDirectory:Sl(n,e.value)}}var ei=["implementation","verification"],xf="worker";function Kf(e){const t={"saga.id":e.sagaId,"saga.role":xf,"saga.worker":e.role,"saga.master":e.masterSessionId};return e.item!==void 0&&(t["saga.item"]=e.item),t}function zf(e){const t=e.title.replace(/\s+/g," ").trim(),n=e.createdAt??tt();return`- ${e.sessionId} | ${n} | ${e.role} | ${e.item??"-"} | ${t}
|
|
222
|
+
`}function Nl(e){const t=e.path!==void 0;if(t===(e.projectId!==void 0))throw new N("Specify exactly one of --path <directory> or --project-id <id>.");if(t){const o=e.path;if(o===void 0||o==="")throw new N("--path <directory> must not be empty.");return{kind:"path",value:o}}const n=e.projectId?.trim();if(!n)throw new N("--project-id <id> must not be empty.");return{kind:"project-id",value:n}}function Lf(e,t){const n=e.opts().token??e.optsWithGlobals().token;if(e.optsWithGlobals().projectId!==void 0&&n!==void 0)throw new N("--token is the backend bearer token with --project-id; set SAGA_EXECUTION_TOKEN to pass the execution token.");return n!==void 0&&n!==""?n:t.SAGA_EXECUTION_TOKEN||void 0}async function Yt(e,t){const n=e.optsWithGlobals(),o=Nl(n),a=await Ff(o,e,t);return{env:t.env,io:t.io,outputJson:n.json===!0,projectDirectory:a,sagaRoot:R.default.join(a,".hagicode","sagas"),selector:o}}var Ft="session create",jf=/[\\/]/;function an(e,t){if(typeof e!="string"||e.trim()==="")throw new N(`session create requires a nonblank ${t} <value>.`);return e.trim()}function ti(e,t){if(jf.test(e)||e==="."||e===".."||e.includes("\0"))throw new N(`${t} must not contain a path separator or a traversal segment: ${JSON.stringify(e)}.`);return e}function Hf(e){if(typeof e!="string"||!ei.includes(e))throw new N(`--role must be one of ${ei.join(", ")}.`);return e}function Tf(e,t){const n=ti(an(e.saga,"--saga"),"--saga"),o=an(e.title,"--title"),a=Hf(e.role),r=an(e.master,"--master"),i=e.item===void 0?void 0:ti(an(e.item,"--item"),"--item");if(e.token!==void 0)throw new N("--token is the backend bearer token; the Saga execution token comes only from SAGA_EXECUTION_TOKEN.");const s=t.SAGA_EXECUTION_TOKEN;if(s===void 0||s.trim()==="")throw new N("session create requires SAGA_EXECUTION_TOKEN to hold the execution token claimed for this Saga.");return{sagaId:n,title:o,role:a,masterSessionId:r,item:i,executionToken:s,selector:Nl(e)}}function Qf(e,t){const n=R.default.join(e,t,"runtime"),o=R.default.join(n,"sessions.md");return ne(e,o),yt(e),ke(e,n),o}function Mf(e){return e instanceof Error?e.message:String(e)}function Of(e){return async function(){const n=Tf(this.optsWithGlobals(),e.env),o=I(this,e),a=i=>o.io.stdout(i),{sagaId:r}=n;try{const i=await Jf(n.selector,()=>o.api.listProjects()),s=R.default.join(i.projectDirectory,".hagicode","sagas");kn(s,r),fa(s,r,n.executionToken);const l=Qf(s,r),c=Ae(await o.api.createChatSession({title:n.title,projectId:i.projectId,metadata:Kf({sagaId:r,role:n.role,masterSessionId:n.masterSessionId,item:n.item})}));try{nf(s,l,zf({sessionId:c.sessionId,role:n.role,item:n.item,title:n.title}))}catch(h){const A=`session ${c.sessionId} was created but its record could not be written to ${l}: ${Mf(h)}`,Z={sagaId:r,command:Ft,ok:!1,errors:[A],session:c};throw a(o.outputJson?W(Z):go(Ft,r,[A])),new H([A],{reported:!0})}const u={sagaId:r,command:Ft,ok:!0,session:c,record:l};a(o.outputJson?W(u):xA(u))}catch(i){if(i instanceof H&&!i.reported){const s={sagaId:r,command:Ft,ok:!1,errors:i.reasons};a(o.outputJson?W(s):go(Ft,r,i.reasons)),i.reported=!0}throw i}}}var Df=["goal.md","research.md","acceptance.md","progress.md"],vl=/^(状态|Status):\s*PASS\s*$/m;function Oe(e,t){const n=R.default.join(e,t),o=Pe(e,R.default.join(n,"progress.md")),a=Pe(e,R.default.join(n,"acceptance.md"));return{sagaRoot:e,sagaId:t,directory:n,goal:Wt(e,R.default.join(n,"goal.md")),research:Pe(e,R.default.join(n,"research.md")),acceptance:a,progress:o,plan:ul(o??""),commands:ml(a??"")}}function _f(e){return/[\\/]/.test(e)||e==="."||e===".."}function Un(e){const t=[],n={"goal.md":e.goal!==void 0,"research.md":e.research!==void 0,"acceptance.md":e.acceptance!==void 0,"progress.md":e.progress!==void 0};for(const a of Df)n[a]||t.push(`${a} is missing`);const o=e.plan.active.map(a=>a.id);o.length===0&&n["progress.md"]&&t.push("progress.md has no active items"),new Set(o).size!==o.length&&t.push("progress.md has duplicate item IDs");for(const a of[...o,...e.plan.superseded.map(r=>r.id)])_f(a)&&t.push(`unsafe item ID: ${a}`);for(const a of o)a in e.commands||t.push(`item ${a} has no acceptance cmd in acceptance.md`);for(const a of Object.keys(e.commands))o.includes(a)||t.push(`acceptance entry ${a} is not an active item in progress.md`);return t}function Wl(e){return{goal:$e(e.goal??Buffer.alloc(0)),acceptance:$e(e.acceptance!==void 0?Buffer.from(e.acceptance,"utf8"):Buffer.alloc(0)),"plan-items":$e(qA(e.plan))}}function Ra(e){return ha(e.directory).filter(t=>!t.mergedIn).map(t=>`open amendment ${t.name}: merge it into the artifacts and set merged-in`)}function yl(e){return $A(e.research??"").map(t=>`open question not decided by a human: ${t}`)}function Ea(e){const t=Pe(e.sagaRoot,R.default.join(e.directory,"contract.lock"));if(t!==void 0)return{text:t,lock:hl(t,R.default.join(e.directory,"contract.lock"))}}function Il(e){const t=[],n=Ea(e);if(!n)t.push("contract.lock missing: run freeze first");else{const o=Wl(e);for(const[a,r]of Object.entries(o))n.lock.hashes[a]!==r&&t.push(`hash mismatch for ${a}: frozen contract (r${n.lock.revision}) changed, run freeze after merging an amendment`)}return t.push(...Ra(e)),t.push(...yl(e)),t.push(...$f(e)),t}function $f(e){const t=[],n=R.default.join(e.directory,"runtime");for(const o of e.plan.active.filter(a=>a.done)){if(!o.note)t.push(`item ${o.id} is ticked but has no evidence reference`);else{const r=R.default.resolve(n,o.note);r.startsWith(`${R.default.resolve(n)}${R.default.sep}`)?Wt(e.sagaRoot,r)===void 0&&t.push(`item ${o.id} is ticked but evidence file is missing: ${o.note}`):t.push(`item ${o.id} evidence reference escapes the runtime directory: ${o.note}`)}const a=Pe(e.sagaRoot,R.default.join(n,"reports",`${o.id}.md`));(a===void 0||!vl.test(a))&&t.push(`item ${o.id} is ticked but its PASS report is missing`)}return t}function Yl(e,t,n){const o=Oe(e,t),a=Un(o);return n==="run"?[...a,...Il(o)]:a}function Pf(e){const t=Ea(e);if(!t)return;const n=t.lock.methods;if(n===void 0)return{recorded:!1,drift:[]};const o=fl();return{recorded:!0,drift:Ot.filter(a=>n[a]!==o[a]).map(a=>({name:a,recorded:n[a]??null,current:o[a]}))}}function qf(e,t,n){const o=Oe(e,t),a=Un(o);return n==="plan"?{errors:a}:{errors:[...a,...Il(o)],methods:Pf(o)}}function e2(e,t){const n=Oe(e,t).plan.active;return[...n.length>0&&n.every(o=>o.done)?[]:["active items remain pending or blocked, or there are no active items"],...Yl(e,t,"run")]}function t2(e){return ef(e.commands)}function n2(e,t){const n=fl(),o=Oe(e,t),a=[...Un(o),...yl(o),...Ra(o)];if(a.length>0)throw new H(a);const r=Wl(o),i=t2(o),s=o.plan.active,l=[...s.map(d=>d.id),...o.plan.superseded.map(d=>d.id)],c=R.default.join(o.directory,"contract.lock"),u=Ea(o);if(!u)return ht(e,c,$r({revision:1,frozenAt:tt(),prev:"-",hashes:r,acceptanceByItem:i,methods:n,items:l})),{revision:1,unchanged:!1,reopened:[],added:s.map(d=>d.id)};const{text:h,lock:A}=u;if(Object.keys(r).length===Object.keys(A.hashes).length&&Object.entries(r).every(([d,m])=>A.hashes[d]===m))return{revision:A.revision,unchanged:!0,reopened:[],added:[]};const Z=`r${A.revision+1}`;if(!ha(o.directory).some(d=>d.mergedIn===Z))throw new H([`contract changed without an amendment merged into ${Z}: tamper or unrecorded change`]);const G=new Set(l),S=A.items.filter(d=>!G.has(d));if(S.length>0)throw new H([`item removed without being marked superseded: ${S.join(", ")}`]);ke(e,R.default.join(o.directory,"revisions")),ht(e,R.default.join(o.directory,"revisions",`r${A.revision}.lock`),h);const X=Mt(o.progress??""),J=[];for(const d of s)d.done&&A.acceptanceByItem[d.id]!==i[d.id]&&(X[d.line]=`- [ ] ${d.id} ${d.title} | reopened in ${Z}: acceptance changed`,J.push(d.id));if(J.length>0){yt(e);const d=R.default.join(o.directory,"runtime","history",`r${A.revision}`);ke(e,d);for(const m of J)for(const p of[R.default.join(o.directory,"runtime","evidence",`${m}.log`),R.default.join(o.directory,"runtime","reports",`${m}.md`)])Wt(e,p)!==void 0&&af(e,p,R.default.join(d,R.default.basename(p)))}return ht(e,R.default.join(o.directory,"progress.md"),`${X.join(`
|
|
221
223
|
`)}
|
|
222
|
-
`),ht(e,
|
|
224
|
+
`),ht(e,c,$r({revision:A.revision+1,frozenAt:tt(),prev:$e(h),hashes:r,acceptanceByItem:i,methods:n,items:l})),{revision:A.revision+1,previousRevision:A.revision,unchanged:!1,reopened:J,added:s.filter(d=>!A.items.includes(d.id)).map(d=>d.id)}}function Xl(e){return e.length>0&&!/[\\/]/.test(e)&&e!=="."&&e!==".."}function Va(e,t){const n=R.default.join(e,t,"runtime","blocked.json"),o=Pe(e,n);if(o===void 0)return{};let a;try{a=JSON.parse(o)}catch(r){throw new U(`Invalid Saga data in "${n}": ${r.message}`)}if(!a||typeof a!="object"||Array.isArray(a))throw new U(`Invalid Saga data in "${n}": expected a JSON object.`);return{...a}}function o2(e,t){return R.default.join(e,t,"progress.md")}function a2(e,t,n){if(!n||!Xl(n))throw new H([`invalid item ID: ${JSON.stringify(n??"")}`]);const o=Oe(e,t),a=o.plan.active.find(h=>h.id===n);if(!a)throw new H([`unknown item ${n}: it is not an active item in progress.md`]);const r=R.default.join(o.directory,"runtime"),i=Pe(e,R.default.join(r,"reports",`${n}.md`));if(i===void 0||!vl.test(i))throw new H([`no PASS report for ${n}: runtime/reports/${n}.md must contain "Status: PASS"`]);if(Wt(e,R.default.join(r,"evidence",`${n}.log`))===void 0)throw new H([`no evidence file for ${n}: runtime/evidence/${n}.log is missing`]);const s=Yl(e,t,"run");if(s.length>0)throw new H(s);const l=`evidence/${n}.log`,c=Mt(o.progress??"");c[a.line]=`- [x] ${n} ${a.title} | ${l}`,yt(e),ht(e,o2(e,t),`${c.join(`
|
|
223
225
|
`)}
|
|
224
|
-
`);const u=
|
|
225
|
-
created-at: ${
|
|
226
|
+
`);const u=Va(e,t);return n in u&&(delete u[n],ua(e,R.default.join(r,"blocked.json"),u)),{itemId:n,evidence:l}}function r2(e,t,n,o){if(o===void 0||o.trim()==="")throw new N("block requires a nonempty reason.");if(!n||!Xl(n))throw new H([`invalid item ID: ${JSON.stringify(n??"")}`]);const a=Oe(e,t);if(!a.plan.active.some(s=>s.id===n))throw new H([`unknown item ${n}: it is not an active item in progress.md`]);yt(e);const r=R.default.join(a.directory,"runtime");ke(e,r);const i=Va(e,t);return i[n]=o.trim(),ua(e,R.default.join(r,"blocked.json"),i),{itemId:n,reason:o.trim()}}function i2(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"amendment"}function s2(e,t,n,o){const a=(n??"").replace(/\s*[\r\n]+\s*/g," ").trim();if(a==="")throw new N("amend requires a nonempty title.");const r=R.default.join(e,t,"amendments");ke(e,r);const i=(0,Y.readdirSync)(r).map(c=>/^(\d+)-.*\.md$/.exec(c)).filter(c=>c!==null).map(c=>Number(c[1])),s=(i.length>0?Math.max(...i):0)+1,l=`${String(s).padStart(3,"0")}-${i2(a)}.md`;return Cn(e,R.default.join(r,l),`title: ${a}
|
|
227
|
+
created-at: ${tt()}
|
|
226
228
|
merged-in:
|
|
227
229
|
---
|
|
228
230
|
${o}
|
|
229
|
-
`),{name:l,mergedIn:""}}function
|
|
230
|
-
${
|
|
231
|
-
`).action(
|
|
232
|
-
`);function
|
|
231
|
+
`),{name:l,mergedIn:""}}function l2(){const e=new Date,t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function c2(e,t,n){const o=Oe(e,t),a=Va(e,t),r=[];o.plan.active.length===0&&r.push("the saga has no active items");for(const l of o.plan.active.filter(c=>!c.done))r.push(`item ${l.id} is ${l.id in a?"blocked":"pending"}`);if(r.push(...Ra(o)),r.length>0&&!n)throw new H([...r,"use --force to archive anyway"]);const i=R.default.join(e,"archive");ke(e,i);const s=R.default.join(i,`${l2()}-${t}`);return rf(e,R.default.join(e,t),s),{destination:s}}var Ga=["draft","planned","running","paused","done"];function Bl(e){return typeof e=="string"&&Ga.includes(e)}function d2(e,t,n,o){if(!Bl(n))throw new N(`--state must be one of ${Ga.join(", ")}.`);const a=R.default.join(e,t);if(n==="planned"||n==="running"){const i=Un(Oe(e,t));if(i.length>0)throw new H(i)}if(n==="done"){const i=e2(e,t);if(i.length>0)throw new H(i)}const r={...ba(t,a),state:n,note:o??"",updatedAt:tt()};return yt(e),ke(e,R.default.join(a,"runtime")),ua(e,R.default.join(a,"runtime","status.json"),r),r}function Xe(e,t){return async function(...o){const a=o.slice(0,-2).map(String),r=this.opts();t.preflight?.(r);const i=t.takesToken?Lf(this,e.env):void 0,s=await Yt(this,e),l=a[0];if(!l)throw new N(`${t.name} requires a Saga ID.`);kn(s.sagaRoot,l);const c=u=>s.io.stdout(u);try{t.guard&&fa(s.sagaRoot,l,i);const u=t.run({sagaId:l,sagaRoot:s.sagaRoot,token:i},r,a),h={sagaId:l,command:t.name,ok:!0,...u};c(s.outputJson?W(h):zA(t.name,h))}catch(u){if(u instanceof H){const h={sagaId:l,command:t.name,ok:!1,errors:u.reasons,...u.details};c(s.outputJson?W(h):go(t.name,l,u.reasons)+KA(u.details)),u.reported=!0}throw u}}}function u2(e){if(typeof e.session!="string"||e.session.trim()==="")throw new N("claim requires a nonempty --session <owner-session-id>.")}function m2(e){return Xe(e,{name:"claim",takesToken:!1,preflight:u2,run:({sagaId:t,sagaRoot:n},o)=>{const a=Xf(n,t,o.session);return{ownerSession:a.ownerSession,token:a.token,createdAt:a.createdAt}}})}function h2(e){return Xe(e,{name:"assert-owner",takesToken:!0,run:({sagaId:t,sagaRoot:n,token:o})=>{const a=fa(n,t,o);return a.locked?{locked:!0,ownerSession:a.ownerSession}:{locked:!1}}})}function b2(e){return Xe(e,{name:"freeze",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n})=>{const o=n2(n,t);return{revision:o.revision,previousRevision:o.previousRevision??null,unchanged:o.unchanged,reopened:o.reopened,added:o.added}}})}function g2(e){return Xe(e,{name:"check",takesToken:!1,preflight:t=>{if(t.phase!=="plan"&&t.phase!=="run")throw new N("check --phase must be plan or run.")},run:({sagaId:t,sagaRoot:n},o)=>{const a=o.phase,{errors:r,methods:i}=qf(n,t,a),s=i===void 0?{}:{methods:i};if(r.length>0)throw new H(r,{details:s});return{phase:a,errors:[],...s}}})}function p2(e){return Xe(e,{name:"tick",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,a)=>({...a2(n,t,a[1])})})}function A2(e){return Xe(e,{name:"block",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,a)=>({...r2(n,t,a[1],a[2])})})}function f2(e){return Xe(e,{name:"amend",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,a)=>({name:s2(n,t,a[1],a[2]??"").name,merged:!1})})}function Z2(e){return Xe(e,{name:"archive",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o)=>({...c2(n,t,o.force===!0)})})}function R2(e){return Xe(e,{name:"set-status",takesToken:!0,guard:!0,preflight:t=>{if(!Bl(t.state))throw new N(`--state must be one of ${Ga.join(", ")}.`)},run:({sagaId:t,sagaRoot:n},o)=>({...d2(n,t,o.state,o.note)})})}function E2(e){return Xe(e,{name:"release",takesToken:!0,run:({sagaId:t,sagaRoot:n,token:o},a)=>({released:!0,ownerSession:Cf(n,t,{token:o,workersSettled:a.workersSettled===!0}).ownerSession})})}function le(e){return y(e.option("--path <directory>","Select a local project directory without backend access.").option("--project-id <id>","Select a project from the configured backend."))}function Ke(e){return e.option("--token <token>","Execution token of the Saga owner (or set SAGA_EXECUTION_TOKEN).")}function V2(e){return async function(){const n=await Yt(this,e),o=this.opts().force===!0,a=pf(n.projectDirectory,Bn(),o);n.io.stdout(n.outputJson?W(a):FA(a))}}function G2(e){return async function(n){const o=this.optsWithGlobals();if(!Af(n))throw new N(`Unknown Saga method ${JSON.stringify(n)}: use one of ${Ot.join(", ")}.`);const a=Al(n,Bn()),r=a.bytes.toString("utf8");e.io.stdout(o.json===!0?W({name:a.name,sha256:a.sha256,content:r}):r)}}function S2(e){return async function(n){const o=await Yt(this,e);uf(n,o.sagaRoot),hf(o.sagaRoot,o.selector);const a=bf(n,o.sagaRoot),r={id:a.id,directory:R.default.join(o.sagaRoot,n),metadata:a};o.io.stdout(o.outputJson?W(r):wA(r))}}function N2(e){return async function(){const n=await Yt(this,e),o=yf(n.sagaRoot);n.io.stdout(n.outputJson?W(o):kA(o))}}function v2(e){return async function(n){const o=await Yt(this,e),a=ba(n,kn(o.sagaRoot,n));o.io.stdout(o.outputJson?W(a):UA(a))}}function W2(e){return async function(n){const o=await Yt(this,e),a=If(o.sagaRoot,n);o.io.stdout(o.outputJson?W(a):JA(a))}}function y2(e,t){const n=e.command("saga").description("Initialize, create, and inspect project-local Sagas.");le(n.command("init").description("Install the Saga ignore rule. Method prompts come from the CLI (see method).")).option("--force","Accepted for compatibility; no managed resource is replaced.").action(V2(t)),y(n.command("method <name>").description(`Print a published Saga method (${Ot.join(", ")}) from the installed CLI.`)).action(G2(t)),le(n.command("new <saga-id>").description("Create a Saga in an initialized project.")).action(S2(t)),le(n.command("list").description("List active Sagas.")).action(N2(t)),le(n.command("status <saga-id>").description("Read a Saga status projection.")).action(v2(t)),le(n.command("items <saga-id>").description("Read Saga plan items.")).action(W2(t)),le(n.command("claim <saga-id>").description("Claim exclusive execution ownership of a Saga.")).requiredOption("--session <id>","Owner session identifier recorded in the lock.").action(m2(t)),Ke(le(n.command("assert-owner <saga-id>").description("Check the execution token before dispatch."))).action(h2(t)),Ke(le(n.command("release <saga-id>").description("Release execution ownership after a paused or done snapshot."))).option("--workers-settled","Confirm that every worker has settled.").action(E2(t)),Ke(le(n.command("freeze <saga-id>").description("Freeze the Saga contract as revision 1, or the next revision after a merged amendment."))).action(b2(t)),Ke(le(n.command("set-status <saga-id>").description("Write the runtime status snapshot (draft, planned, running, paused or done)."))).requiredOption("--state <state>","draft, planned, running, paused or done.").option("--note <text>","Note stored with the snapshot.").action(R2(t)),Ke(le(n.command("tick <saga-id> <item-id>").description("Mark a plan item done once its PASS report and evidence exist."))).action(p2(t)),Ke(le(n.command("block <saga-id> <item-id> <reason>").description("Record why a plan item is blocked."))).action(A2(t)),Ke(le(n.command("amend <saga-id> <title> <text>").description("Append an open amendment to the Saga contract."))).action(f2(t)),Ke(le(n.command("archive <saga-id>").description("Archive a finished Saga; --force archives unfinished work."))).option("--force","Archive even when items are unfinished or amendments are open.").action(Z2(t)),le(n.command("check <saga-id>").description("Check the plan (--phase plan) or the frozen run contract (--phase run, the default).")).option("--phase <phase>","plan or run.","run").action(g2(t)),y(n.command("session").description("Create Saga Worker chat sessions and record them.").command("create").description("Create a Worker chat session marked with saga.* metadata and record it in runtime/sessions.md.")).option("--saga <id>","Saga whose Worker this is.").option("--title <title>","Title of the Worker chat session.").option("--role <role>","implementation or verification.").option("--master <session-id>","Session ID of the orchestrating (master) session.").option("--item <id>",'Plan item the Worker serves; recorded as "-" when omitted.').option("--path <directory>","Project directory. The backend is called to find the registered project with this real path.").option("--project-id <id>","Backend project ID.").addHelpText("after",`
|
|
232
|
+
${I2}
|
|
233
|
+
`).action(Of(t))}var I2=["Metadata written to the session (userMetadata):"," saga.id the Saga ID"," saga.role always worker"," saga.worker the --role value"," saga.master the --master value"," saga.item the --item value (only when --item is given)","","The execution token comes only from SAGA_EXECUTION_TOKEN; --token is refused because it is the backend bearer token.","The command creates and records the session. It sends no message and does not archive it (see hagi chat archive).","","Exit codes: 0 created and recorded; 1 refused, or the record could not be written (the session ID is named);","2 usage error, nothing sent; 24 Saga not found.","",js(),"","Example:",' SAGA_EXECUTION_TOKEN=<token> hagi saga session create --saga demo --path <root> --title "T1 implementation"'," --role implementation --master <your-session-id> --item T1"].join(`
|
|
234
|
+
`);function nt(e){return e?"yes":"no"}function Y2(e){return e&&e.length>0?e.join(", "):"-"}function Cl(e){return e.origin??"user"}function Fl(e){return Cl(e)==="built-in"}function X2(e){return Fl(e)?nt(e.builtIn?.enabled):"-"}function B2(e){return(Fl(e)?e.builtIn?.version:e.managedInstallMetadata?.version)??"-"}function C2(e){const t=e.items??[];return t.length===0?`No local skills installed.
|
|
233
235
|
`:`Local skills (${t.length})
|
|
234
|
-
${ie([{header:"Name",value:n=>n.name??"-"},{header:"Origin",value:
|
|
235
|
-
`}function
|
|
236
|
+
${ie([{header:"Name",value:n=>n.name??"-"},{header:"Origin",value:Cl},{header:"Enabled",value:X2},{header:"Version",value:B2},{header:"Scope",value:n=>n.scope??"-"},{header:"Agents",value:n=>Y2(n.agents)},{header:"Path",value:n=>n.path??"-"}],t)}
|
|
237
|
+
`}function F2(e){return q([["skillName",e.skillName??void 0],["status",e.status??void 0],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function w2(e){return q([["skillName",e.slug??void 0],["enabled",nt(e.enabled)],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function k2(e){const t=e.items??[];return t.length===0?`No gallery skills found.
|
|
236
238
|
`:`Gallery skills (${t.length})
|
|
237
|
-
${ie([{header:"ID",value:n=>n.id??"-"},{header:"Source",value:n=>n.source??"-"},{header:"Installs",value:n=>String(n.installs??0)},{header:"Trusted",value:n=>
|
|
238
|
-
`}function
|
|
239
|
-
`).join("")}`}function
|
|
239
|
+
${ie([{header:"ID",value:n=>n.id??"-"},{header:"Source",value:n=>n.source??"-"},{header:"Installs",value:n=>String(n.installs??0)},{header:"Trusted",value:n=>nt(n.isTrustedSource)}],t)}
|
|
240
|
+
`}function U2(e){return`skills.sh audit (${e.provider}): risk=${e.risk??"--"}, alerts=${e.alerts??"--"}, score=${e.score??"--"}, analyzedAt=${e.analyzedAt??"--"}`}function J2(e,t={providers:[]}){const n=e.trustedProvider;return`${q([["id",e.id??void 0],["source",e.source??void 0],["skillSlug",e.skillSlug??void 0],["installable",nt(e.isInstallable)],["description",e.description??void 0],["repository",e.repositoryFullName??e.repositoryName??void 0],["repositoryUrl",e.repositoryUrl??void 0],["defaultBranch",e.repositoryDefaultBranch??void 0],["trustedSource",nt(e.isTrustedSource)],["trustedProvider",n?`${n.displayName??n.providerId??"-"}`:void 0],["installReference",e.installReference??void 0],["installCommand",e.installCommandPreview??void 0],["installVersion",e.installVersion??void 0],["installHint",e.installHint??void 0]])}${t.providers.map(o=>`${U2(o)}
|
|
241
|
+
`).join("")}`}function x2(e){return q([["installReference",e.installReference??void 0],["normalizedSkillKey",e.normalizedSkillKey??void 0],["version",e.version??void 0],["status",e.status??void 0],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0],["commandPreview",e.commandPreview??void 0]])}function rn(e){const t=e.items??[];return t.length===0?`No trusted providers (directory version ${e.version??0}).
|
|
240
242
|
`:`Trusted providers (${t.length}, directory version ${e.version??0})
|
|
241
|
-
${ie([{header:"Provider ID",value:n=>n.providerId??"-"},{header:"Name",value:n=>n.displayName??"-"},{header:"Enabled",value:n=>
|
|
242
|
-
`}function
|
|
243
|
+
${ie([{header:"Provider ID",value:n=>n.providerId??"-"},{header:"Name",value:n=>n.displayName??"-"},{header:"Enabled",value:n=>nt(n.isEnabled)},{header:"Preset",value:n=>nt(n.isPreset)},{header:"Rules",value:n=>String(n.ruleCount??0)}],t)}
|
|
244
|
+
`}function K2(e,t){const n=e.command("gallery").description("Search the skill gallery, read skill details, and start managed installs.");y(n.command("search").description("Search the skill gallery by keyword.")).option("--query <query>","Keyword to search for. Omit to list the gallery.").action(async function(a){const r=I(this,t),i=await r.api.searchSkillGallery(k(a.query));if(r.outputJson){r.io.stdout(W(i));return}r.io.stdout(k2(i))}),y(n.command("detail").description("Show one gallery skill with installability, trust, and repository details.")).requiredOption("--id <id>","Gallery skill id.").requiredOption("--source <source>","Gallery skill source.").action(async function(a){const r=I(this,t),i=x(a.id,"--id"),s=x(a.source,"--source"),[l,c]=await Promise.allSettled([r.api.getSkillGalleryDetail(i,s),r.api.getSkillGalleryAudit(i,s)]);if(l.status==="rejected")throw l.reason;const u=l.value,h={providers:c.status==="fulfilled"?c.value?.providers??[]:[]};if(r.outputJson){r.io.stdout(W({...u,audit:h}));return}r.io.stdout(J2(u,h))}),y(n.command("install").description("Start a managed install of one gallery skill.")).requiredOption("--id <id>","Gallery skill id.").requiredOption("--source <source>","Gallery skill source.").requiredOption("--skill-slug <slug>","Skill slug inside the source repository.").option("--version <version>","Optional version token to install.").action(async function(a){const r=I(this,t),i=await r.api.installGallerySkill({id:x(a.id,"--id"),source:x(a.source,"--source"),skillSlug:x(a.skillSlug,"--skill-slug"),version:k(a.version)});if(r.outputJson){r.io.stdout(W(i));return}r.io.stdout(x2(i))})}var z2="The change applies to agent runs that start afterwards; a run already in progress keeps its skills.";function ni(e,t,n){const o=n?"enable":"disable";y(e.command(o).description(`${n?"Turn on":"Turn off"} one built-in skill by name. ${z2}`)).requiredOption("--skill-name <name>",`Built-in skill name to ${o}.`).action(async function(r){const i=I(this,t),s=await i.api.setBuiltInSkillAvailability({slug:x(r.skillName,"--skill-name"),enabled:n});if(i.outputJson?i.io.stdout(W(s)):i.io.stdout(w2(s)),!s.succeeded)throw new U(s.userMessage??`The built-in skill availability was not changed for ${s.slug??r.skillName}.`)})}function L2(e,t){const n=e.command("local").description("List, enable or disable built-in skills, and uninstall user-installed local skills.");y(n.command("list").description("List installed local skills with their managed install metadata.")).action(async function(){const a=I(this,t),r=await a.api.listLocalSkills();if(a.outputJson){a.io.stdout(W(r));return}a.io.stdout(C2(r))}),ni(n,t,!0),ni(n,t,!1),y(n.command("uninstall").description("Uninstall one user-installed local skill by name. Built-in skills cannot be uninstalled; use `skills local disable --skill-name <name>` to stop one from loading.")).requiredOption("--skill-name <name>","Local skill name to uninstall.").action(async function(a){const r=I(this,t),i=await r.api.uninstallLocalSkill({skillName:x(a.skillName,"--skill-name")});if(r.outputJson){r.io.stdout(W(i));return}r.io.stdout(F2(i))})}async function j2(e,t){const n=await Xn(e);if(!n||typeof n!="object"||Array.isArray(n))throw new N(`${t} must be a JSON object.`);return n}function H2(e,t){const n=e.command("trusted").description("Manage the trusted skill provider directory.");y(n.command("list").description("List trusted skill providers.")).action(async function(){const a=I(this,t),r=await a.api.listTrustedSkillProviders();if(a.outputJson){a.io.stdout(W(r));return}a.io.stdout(rn(r))}),y(n.command("upsert").description("Create or update a trusted provider from a JSON document.")).requiredOption("--input <file>","JSON file path, or - to read from stdin.").action(async function(a){const r=I(this,t),i=await j2(x(a.input,"--input"),"Trusted provider input"),s=await r.api.upsertTrustedSkillProvider(i);if(r.outputJson){r.io.stdout(W(s));return}r.io.stdout(rn(s))}),y(n.command("delete").description("Delete one trusted provider by id.")).requiredOption("--provider-id <id>","Trusted provider id to delete.").action(async function(a){const r=I(this,t),i={providerId:x(a.providerId,"--provider-id")},s=await r.api.deleteTrustedSkillProvider(i);if(r.outputJson){r.io.stdout(W(s));return}r.io.stdout(rn(s))}),y(n.command("reset").description("Reset trusted providers to the backend defaults.")).action(async function(){const a=I(this,t),r=await a.api.resetTrustedSkillProviders();if(a.outputJson){a.io.stdout(W(r));return}a.io.stdout(rn(r))})}function T2(e,t){const n=e.command("skills").description("Manage local skills, the skill gallery, and trusted providers.");L2(n,t),K2(n,t),H2(n,t)}function j(e){const t=e?.trim();return t||void 0}function Q2(e){return{severity:j(e.severity)??"",code:j(e.code)??"",message:j(e.message)??"",relativePath:j(e.relativePath)}}function Sa(e){return{id:j(e.id)??"",name:j(e.name)??"",type:j(e.type)??"",physicalPath:j(e.physicalPath)??"",gitUrl:j(e.gitUrl),createdAtUtc:j(e.createdAtUtc),updatedAtUtc:j(e.updatedAtUtc),bootstrapDiagnostics:(e.bootstrapDiagnostics??[]).map(Q2)}}function wl(e){return{generatedAtUtc:j(e.generatedAtUtc),vaults:(e.items??[]).map(Sa)}}function M2(e){return e.length===0?`No vaults found.
|
|
243
245
|
`:`Vaults (${e.length})
|
|
244
246
|
${ie([{header:"Vault ID",value:t=>t.id},{header:"Type",value:t=>t.type},{header:"Name",value:t=>t.name},{header:"Path",value:t=>t.physicalPath}],e)}
|
|
245
|
-
`}function
|
|
246
|
-
${q([["vaultId",e.vaultId],["deleted",String(e.deleted)],["deleteLocalFilesRequested",String(e.deleteLocalFilesRequested)],["localFilesDeletionStatus",e.localFilesDeletionStatus],["localFilesDeleted",String(e.localFilesDeleted)]])}`}function
|
|
247
|
+
`}function kl(e,t=[]){return q([["id",e.id],["name",e.name],["type",e.type],["physicalPath",e.physicalPath],["gitUrl",e.gitUrl],["createdAtUtc",e.createdAtUtc],["updatedAtUtc",e.updatedAtUtc],["bootstrapDiagnostics",String(e.bootstrapDiagnostics.length)],...t])}function O2(e){return{relativePath:j(e.relativePath)??"",fileName:j(e.fileName)??"",isDirectory:e.isDirectory===!0,extension:j(e.extension)??"",sizeBytes:typeof e.sizeBytes=="number"?e.sizeBytes:0,lastModifiedUtc:j(e.lastModifiedUtc),previewSupported:e.previewSupported===!0}}function D2(e){return{vaultId:j(e.id)??"",deleted:e.deleted===!0,deleteLocalFilesRequested:e.deleteLocalFilesRequested===!0,localFilesDeletionStatus:j(e.localFilesDeletionStatus),localFilesDeleted:e.localFilesDeleted===!0}}function _2(e){return`Vault deleted
|
|
248
|
+
${q([["vaultId",e.vaultId],["deleted",String(e.deleted)],["deleteLocalFilesRequested",String(e.deleteLocalFilesRequested)],["localFilesDeletionStatus",e.localFilesDeletionStatus],["localFilesDeleted",String(e.localFilesDeleted)]])}`}function $2(e){return{vaultId:j(e.vaultId)??"",vaultName:j(e.vaultName)??"",physicalPath:j(e.physicalPath)??"",status:j(e.status)??"",errorCode:j(e.errorCode),message:j(e.message),isTruncated:e.isTruncated===!0,totalFileCount:typeof e.totalFileCount=="number"?e.totalFileCount:0,items:(e.items??[]).map(O2)}}function P2(e){const t=q([["vaultId",e.vaultId],["vaultName",e.vaultName],["physicalPath",e.physicalPath],["status",e.status],["errorCode",e.errorCode],["message",e.message],["isTruncated",String(e.isTruncated)],["totalFileCount",String(e.totalFileCount)]]);return e.items.length===0?`Vault files
|
|
247
249
|
${t}No files found.
|
|
248
250
|
`:`Vault files
|
|
249
251
|
${t}${ie([{header:"Relative Path",value:n=>n.relativePath},{header:"Directory",value:n=>n.isDirectory?"yes":"no"},{header:"Extension",value:n=>n.extension},{header:"Size",value:n=>String(n.sizeBytes)},{header:"Preview",value:n=>n.previewSupported?"yes":"no"}],e.items)}
|
|
250
|
-
`}function
|
|
252
|
+
`}function q2(e){return{vaultId:j(e.vaultId)??"",vaultName:j(e.vaultName)??"",physicalPath:j(e.physicalPath)??"",relativePath:j(e.relativePath)??"",fileName:j(e.fileName)??"",extension:j(e.extension)??"",sizeBytes:typeof e.sizeBytes=="number"?e.sizeBytes:0,lastModifiedUtc:j(e.lastModifiedUtc),status:j(e.status)??"",errorCode:j(e.errorCode),message:j(e.message),previewSupported:e.previewSupported===!0,contentTruncated:e.contentTruncated===!0,content:j(e.content)}}function eZ(e){const t=q([["vaultId",e.vaultId],["vaultName",e.vaultName],["physicalPath",e.physicalPath],["relativePath",e.relativePath],["fileName",e.fileName],["extension",e.extension],["sizeBytes",String(e.sizeBytes)],["lastModifiedUtc",e.lastModifiedUtc],["status",e.status],["errorCode",e.errorCode],["message",e.message],["previewSupported",String(e.previewSupported)],["contentTruncated",String(e.contentTruncated)]]);if(!e.content)return`Vault file preview
|
|
251
253
|
${t}`;const n=e.content.endsWith(`
|
|
252
254
|
`)?"":`
|
|
253
255
|
`;return`Vault file preview
|
|
254
256
|
${t}content
|
|
255
257
|
-------
|
|
256
|
-
${e.content}${n}`}function
|
|
257
|
-
${
|
|
258
|
-
${
|
|
258
|
+
${e.content}${n}`}function tZ(e,t){y(e.command("create").description("Create a vault through the generated vault client.")).requiredOption("--name <name>","Vault display name.").requiredOption("--type <type>","Vault type, such as folder, obsidian, or coderef.").requiredOption("--physical-path <path>","Vault physical path.").option("--git-url <url>","Optional git remote URL for git-backed vaults.").action(async function(o){const a=I(this,t),r=Sa(await a.api.createVault({name:x(o.name,"--name"),type:x(o.type,"--type"),physicalPath:x(o.physicalPath,"--physical-path"),gitUrl:k(o.gitUrl)}));if(a.outputJson){a.io.stdout(W({vault:r}));return}a.io.stdout(`Vault created
|
|
259
|
+
${kl(r)}`)})}function nZ(e,t){y(e.command("delete").description("Delete a vault by id and optionally request local file cleanup.")).requiredOption("--id <id>","Vault id to delete.").option("--delete-local-files","Request backend deletion of local vault files.").action(async function(o){const a=I(this,t),r=D2(await a.api.deleteVault(x(o.id,"--id"),o.deleteLocalFiles===!0));if(a.outputJson){a.io.stdout(W(r));return}a.io.stdout(_2(r))})}function oZ(e,t){y(e.command("list").description("List files under a registered vault path.")).requiredOption("--id <id>","Vault id to browse.").option("--path <path>","Optional relative path under the vault root.").action(async function(o){const a=I(this,t),r=$2(await a.api.listVaultFiles(x(o.id,"--id"),k(o.path)));if(a.outputJson){a.io.stdout(W(r));return}a.io.stdout(P2(r))})}function aZ(e,t){y(e.command("preview").description("Preview supported file content from a registered vault.")).requiredOption("--id <id>","Vault id to browse.").requiredOption("--path <path>","Relative file path to preview.").action(async function(o){const a=I(this,t),r=q2(await a.api.previewVaultFile(x(o.id,"--id"),x(o.path,"--path")));if(a.outputJson){a.io.stdout(W(r));return}a.io.stdout(eZ(r))})}function rZ(e,t){y(e.command("list").description("List registered vaults through the generated vault client.")).action(async function(){const o=I(this,t),a=wl(await o.api.listVaults());if(o.outputJson){o.io.stdout(W(a));return}o.io.stdout(M2(a.vaults))})}function iZ(e,t){y(e.command("update").description("Update a vault by merging provided fields into the current vault snapshot.")).requiredOption("--id <id>","Vault id to update.").option("--name <name>","Updated vault display name.").option("--type <type>","Updated vault type.").option("--physical-path <path>","Updated vault physical path.").option("--git-url <url>","Updated git remote URL.").action(async function(o){const a=k(o.name),r=k(o.type),i=k(o.physicalPath),s=k(o.gitUrl);if(!a&&!r&&!i&&!s)throw new N("Provide at least one field to update: --name, --type, --physical-path, or --git-url.");const l=I(this,t),c=x(o.id,"--id"),u=wl(await l.api.listVaults()).vaults.find(A=>A.id===c);if(!u)throw new ye(404,`Vault ${c} was not found in the latest vault snapshot.`);const h=Sa(await l.api.updateVault(c,{name:a??u.name,type:r??u.type,physicalPath:i??u.physicalPath,gitUrl:s??u.gitUrl??null}));if(l.outputJson){l.io.stdout(W({vault:h}));return}l.io.stdout(`Vault updated
|
|
260
|
+
${kl(h)}`)})}function sZ(e,t){const n=e.command("vault").description("Manage Hagi vaults and vault file browsing through generated backend APIs.");rZ(n,t),tZ(n,t),iZ(n,t),nZ(n,t);const o=n.command("files").description("Browse registered vault files and preview supported content.");oZ(o,t),aZ(o,t)}function lZ(e){return e.includes("--json")}function Ul(e=Us(),t=!1){const n=new Pl;return n.name("hagi").description("HagiCode CLI for project, proposal, Saga, vault, chat, HagiTask, and scheduled plan management, plus agent-facing capabilities.").showHelpAfterError().exitOverride(),n.configureOutput({writeOut:o=>{e.io.stdout(o)},writeErr:o=>{t||e.io.stderr(o)},getOutHelpWidth:()=>100,getErrHelpWidth:()=>100}),ig(n),uA(n,e),CA(n,e),sZ(n,e),Pg(n,e),Vp(n,e),xp(n,e),T2(n,e),Wg(n,e),y2(n,e),n}function cZ(e,t,n){return e.exitCode===0||e.code==="commander.helpDisplayed"||e.code==="commander.version"?0:(n&&t.io.stderr(vs({exitCode:P.USAGE,message:e.message},{json:!0})),P.USAGE)}async function dZ(e=process.argv,t=Us()){const n=lZ(e),o=Ul(t,n);try{return await o.parseAsync([...e]),0}catch(a){if(a instanceof $l)return cZ(a,t,n);const r=Ns(a,{baseUrl:Hm()});return(a instanceof et||a instanceof H)&&a.reported||t.io.stderr(vs(r,{json:n})),r.exitCode}}Object.defineProperty(exports,"EXIT_CODES",{enumerable:!0,get:function(){return P}});Object.defineProperty(exports,"createCliApp",{enumerable:!0,get:function(){return Ul}});Object.defineProperty(exports,"runCli",{enumerable:!0,get:function(){return dZ}});
|