@hagicode/cli 0.1.0-dev.54.1.372ef38 → 0.1.0-dev.55.1.790ae59
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.
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
var Ol=Object.create,ui=Object.defineProperty,Dl=Object.getOwnPropertyDescriptor,_l=Object.getOwnPropertyNames,$l=Object.getPrototypeOf,Pl=Object.prototype.hasOwnProperty,ot=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ql=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(var r=_l(t),a=0,i=r.length,s;a<i;a++)s=r[a],!Pl.call(e,s)&&s!==n&&ui(e,s,{get:(l=>t[l]).bind(null,s),enumerable:!(o=Dl(t,s))||o.enumerable});return e},rt=(e,t,n)=>(n=e!=null?Ol($l(e)):{},ql(t||!e||!e.__esModule?ui(n,"default",{value:e,enumerable:!0}):n,e));let
|
|
2
|
-
`)}displayWidth(r){return o(r).length}styleTitle(r){return r}styleUsage(r){return r.split(" ").map(a=>a==="[options]"?this.styleOptionText(a):a==="[command]"?this.styleSubcommandText(a):a[0]==="["||a[0]==="<"?this.styleArgumentText(a):this.styleCommandText(a)).join(" ")}styleCommandDescription(r){return this.styleDescriptionText(r)}styleOptionDescription(r){return this.styleDescriptionText(r)}styleSubcommandDescription(r){return this.styleDescriptionText(r)}styleArgumentDescription(r){return this.styleDescriptionText(r)}styleDescriptionText(r){return r}styleOptionTerm(r){return this.styleOptionText(r)}styleSubcommandTerm(r){return r.split(" ").map(a=>a==="[options]"?this.styleOptionText(a):a[0]==="["||a[0]==="<"?this.styleArgumentText(a):this.styleSubcommandText(a)).join(" ")}styleArgumentTerm(r){return this.styleArgumentText(r)}styleOptionText(r){return r}styleArgumentText(r){return r}styleSubcommandText(r){return r}styleCommandText(r){return r}padWidth(r,a){return Math.max(a.longestOptionTermLength(r,a),a.longestGlobalOptionTermLength(r,a),a.longestSubcommandTermLength(r,a),a.longestArgumentTermLength(r,a))}preformatted(r){return/\n[^\S\r\n]/.test(r)}formatItem(r,a,i,s){const c=" ".repeat(2);if(!i)return c+r;const u=r.padEnd(a+r.length-s.displayWidth(r)),h=2,
|
|
3
|
-
`+" ".repeat(a+h)),c+u+" ".repeat(h)+
|
|
4
|
-
${c}`)}boxWrap(r,a){if(a<this.minWidthToWrap)return r;const i=r.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(r){return r.replace(/\x1b\[\d*(;\d*)*m/g,"")}e.Help=n,e.stripColor=o})),bi=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=a(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?r(this.name().replace(/^no-/,"")):r(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 r(i){return i.split("-").reduce((s,l)=>s+l[0].toUpperCase()+l.slice(1))}function a(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
|
|
1
|
+
var Ol=Object.create,ui=Object.defineProperty,Dl=Object.getOwnPropertyDescriptor,_l=Object.getOwnPropertyNames,$l=Object.getPrototypeOf,Pl=Object.prototype.hasOwnProperty,ot=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ql=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(var r=_l(t),a=0,i=r.length,s;a<i;a++)s=r[a],!Pl.call(e,s)&&s!==n&&ui(e,s,{get:(l=>t[l]).bind(null,s),enumerable:!(o=Dl(t,s))||o.enumerable});return e},rt=(e,t,n)=>(n=e!=null?Ol($l(e)):{},ql(t||!e||!e.__esModule?ui(n,"default",{value:e,enumerable:!0}):n,e));let E=require("node:path");E=rt(E);let Y=require("node:fs");Y=rt(Y);let ec=require("node:os"),pt=require("node:zlib");pt=rt(pt);let Zn=require("node:util"),eo=require("node:http");eo=rt(eo);let to=require("node:https");to=rt(to);let Re=require("node:http2");Re=rt(Re);let tc=require("node:fs/promises"),je=require("node:crypto"),mi=require("node:url");var Rn=ot((e=>{var t=class extends Error{constructor(o,r,a){super(a),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=r,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})),So=ot((e=>{var{InvalidArgumentError:t}=Rn(),n=class{constructor(r,a){switch(this.description=a||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,r[0]){case"<":this.required=!0,this._name=r.slice(1,-1);break;case"[":this.required=!1,this._name=r.slice(1,-1);break;default:this.required=!0,this._name=r;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(r,a){return a===this.defaultValue||!Array.isArray(a)?[r]:(a.push(r),a)}default(r,a){return this.defaultValue=r,this.defaultValueDescription=a,this}argParser(r){return this.parseArg=r,this}choices(r){return this.argChoices=r.slice(),this.parseArg=(a,i)=>{if(!this.argChoices.includes(a))throw new t(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(a,i):a},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function o(r){const a=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+a+">":"["+a+"]"}e.Argument=n,e.humanReadableArgName=o})),hi=ot((e=>{var{humanReadableArgName:t}=So(),n=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(r){this.helpWidth=this.helpWidth??r.helpWidth??80}visibleCommands(r){const a=r.commands.filter(s=>!s._hidden),i=r._getHelpCommand();return i&&!i._hidden&&a.push(i),this.sortSubcommands&&a.sort((s,l)=>s.name().localeCompare(l.name())),a}compareOptions(r,a){const i=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return i(r).localeCompare(i(a))}visibleOptions(r){const a=r.options.filter(s=>!s.hidden),i=r._getHelpOption();if(i&&!i.hidden){const s=i.short&&r._findOption(i.short),l=i.long&&r._findOption(i.long);!s&&!l?a.push(i):i.long&&!l?a.push(r.createOption(i.long,i.description)):i.short&&!s&&a.push(r.createOption(i.short,i.description))}return this.sortOptions&&a.sort(this.compareOptions),a}visibleGlobalOptions(r){if(!this.showGlobalOptions)return[];const a=[];for(let i=r.parent;i;i=i.parent){const s=i.options.filter(l=>!l.hidden);a.push(...s)}return this.sortOptions&&a.sort(this.compareOptions),a}visibleArguments(r){return r._argsDescription&&r.registeredArguments.forEach(a=>{a.description=a.description||r._argsDescription[a.name()]||""}),r.registeredArguments.find(a=>a.description)?r.registeredArguments:[]}subcommandTerm(r){const a=r.registeredArguments.map(i=>t(i)).join(" ");return r._name+(r._aliases[0]?"|"+r._aliases[0]:"")+(r.options.length?" [options]":"")+(a?" "+a:"")}optionTerm(r){return r.flags}argumentTerm(r){return r.name()}longestSubcommandTermLength(r,a){return a.visibleCommands(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleSubcommandTerm(a.subcommandTerm(s)))),0)}longestOptionTermLength(r,a){return a.visibleOptions(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleOptionTerm(a.optionTerm(s)))),0)}longestGlobalOptionTermLength(r,a){return a.visibleGlobalOptions(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleOptionTerm(a.optionTerm(s)))),0)}longestArgumentTermLength(r,a){return a.visibleArguments(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleArgumentTerm(a.argumentTerm(s)))),0)}commandUsage(r){let a=r._name;r._aliases[0]&&(a=a+"|"+r._aliases[0]);let i="";for(let s=r.parent;s;s=s.parent)i=s.name()+" "+i;return i+a+" "+r.usage()}commandDescription(r){return r.description()}subcommandDescription(r){return r.summary()||r.description()}optionDescription(r){const a=[];if(r.argChoices&&a.push(`choices: ${r.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),r.defaultValue!==void 0&&(r.required||r.optional||r.isBoolean()&&typeof r.defaultValue=="boolean")&&a.push(`default: ${r.defaultValueDescription||JSON.stringify(r.defaultValue)}`),r.presetArg!==void 0&&r.optional&&a.push(`preset: ${JSON.stringify(r.presetArg)}`),r.envVar!==void 0&&a.push(`env: ${r.envVar}`),a.length>0){const i=`(${a.join(", ")})`;return r.description?`${r.description} ${i}`:i}return r.description}argumentDescription(r){const a=[];if(r.argChoices&&a.push(`choices: ${r.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),r.defaultValue!==void 0&&a.push(`default: ${r.defaultValueDescription||JSON.stringify(r.defaultValue)}`),a.length>0){const i=`(${a.join(", ")})`;return r.description?`${r.description} ${i}`:i}return r.description}formatItemList(r,a,i){return a.length===0?[]:[i.styleTitle(r),...a,""]}groupItems(r,a,i){const s=new Map;return r.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[])}),a.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[]),s.get(c).push(l)}),s}formatHelp(r,a){const i=a.padWidth(r,a),s=a.helpWidth??80;function l(f,p){return a.formatItem(f,i,p,a)}let c=[`${a.styleTitle("Usage:")} ${a.styleUsage(a.commandUsage(r))}`,""];const u=a.commandDescription(r);u.length>0&&(c=c.concat([a.boxWrap(a.styleCommandDescription(u),s),""]));const h=a.visibleArguments(r).map(f=>l(a.styleArgumentTerm(a.argumentTerm(f)),a.styleArgumentDescription(a.argumentDescription(f))));if(c=c.concat(this.formatItemList("Arguments:",h,a)),this.groupItems(r.options,a.visibleOptions(r),f=>f.helpGroupHeading??"Options:").forEach((f,p)=>{const R=f.map(V=>l(a.styleOptionTerm(a.optionTerm(V)),a.styleOptionDescription(a.optionDescription(V))));c=c.concat(this.formatItemList(p,R,a))}),a.showGlobalOptions){const f=a.visibleGlobalOptions(r).map(p=>l(a.styleOptionTerm(a.optionTerm(p)),a.styleOptionDescription(a.optionDescription(p))));c=c.concat(this.formatItemList("Global Options:",f,a))}return this.groupItems(r.commands,a.visibleCommands(r),f=>f.helpGroup()||"Commands:").forEach((f,p)=>{const R=f.map(V=>l(a.styleSubcommandTerm(a.subcommandTerm(V)),a.styleSubcommandDescription(a.subcommandDescription(V))));c=c.concat(this.formatItemList(p,R,a))}),c.join(`
|
|
2
|
+
`)}displayWidth(r){return o(r).length}styleTitle(r){return r}styleUsage(r){return r.split(" ").map(a=>a==="[options]"?this.styleOptionText(a):a==="[command]"?this.styleSubcommandText(a):a[0]==="["||a[0]==="<"?this.styleArgumentText(a):this.styleCommandText(a)).join(" ")}styleCommandDescription(r){return this.styleDescriptionText(r)}styleOptionDescription(r){return this.styleDescriptionText(r)}styleSubcommandDescription(r){return this.styleDescriptionText(r)}styleArgumentDescription(r){return this.styleDescriptionText(r)}styleDescriptionText(r){return r}styleOptionTerm(r){return this.styleOptionText(r)}styleSubcommandTerm(r){return r.split(" ").map(a=>a==="[options]"?this.styleOptionText(a):a[0]==="["||a[0]==="<"?this.styleArgumentText(a):this.styleSubcommandText(a)).join(" ")}styleArgumentTerm(r){return this.styleArgumentText(r)}styleOptionText(r){return r}styleArgumentText(r){return r}styleSubcommandText(r){return r}styleCommandText(r){return r}padWidth(r,a){return Math.max(a.longestOptionTermLength(r,a),a.longestGlobalOptionTermLength(r,a),a.longestSubcommandTermLength(r,a),a.longestArgumentTermLength(r,a))}preformatted(r){return/\n[^\S\r\n]/.test(r)}formatItem(r,a,i,s){const c=" ".repeat(2);if(!i)return c+r;const u=r.padEnd(a+r.length-s.displayWidth(r)),h=2,f=(this.helpWidth??80)-a-h-2;let p;return f<this.minWidthToWrap||s.preformatted(i)?p=i:p=s.boxWrap(i,f).replace(/\n/g,`
|
|
3
|
+
`+" ".repeat(a+h)),c+u+" ".repeat(h)+p.replace(/\n/g,`
|
|
4
|
+
${c}`)}boxWrap(r,a){if(a<this.minWidthToWrap)return r;const i=r.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()],f=this.displayWidth(h[0]);u.forEach(p=>{const R=this.displayWidth(p);if(f+R<=a){h.push(p),f+=R;return}l.push(h.join(""));const V=p.trimStart();h=[V],f=this.displayWidth(V)}),l.push(h.join(""))}),l.join(`
|
|
5
|
+
`)}};function o(r){return r.replace(/\x1b\[\d*(;\d*)*m/g,"")}e.Help=n,e.stripColor=o})),bi=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=a(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?r(this.name().replace(/^no-/,"")):r(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 r(i){return i.split("-").reduce((s,l)=>s+l[0].toUpperCase()+l.slice(1))}function a(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 f=h[0],p=`option creation failed due to '${f}' in option flags '${i}'`;throw/^-[^-][^-]/.test(f)?new Error(`${p}
|
|
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(
|
|
10
|
-
- too many long flags`):new Error(`${
|
|
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})),nc=ot((e=>{var t=3;function n(r,a){if(Math.abs(r.length-a.length)>t)return Math.max(r.length,a.length);const i=[];for(let s=0;s<=r.length;s++)i[s]=[s];for(let s=0;s<=a.length;s++)i[0][s]=s;for(let s=1;s<=a.length;s++)for(let l=1;l<=r.length;l++){let c=1;r[l-1]===a[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&&r[l-1]===a[s-2]&&r[l-2]===a[s-1]&&(i[l][s]=Math.min(i[l][s],i[l-2][s-2]+1))}return i[r.length][a.length]}function o(r,a){if(!a||a.length===0)return"";a=Array.from(new Set(a));const i=r.startsWith("--");i&&(r=r.slice(2),a=a.map(u=>u.slice(2)));let s=[],l=t;const c=.4;return a.forEach(u=>{if(u.length<=1)return;const h=n(r,u),
|
|
8
|
+
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`):c.test(f)?new Error(`${p}
|
|
9
|
+
- too many short flags`):u.test(f)?new Error(`${p}
|
|
10
|
+
- too many long flags`):new Error(`${p}
|
|
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})),nc=ot((e=>{var t=3;function n(r,a){if(Math.abs(r.length-a.length)>t)return Math.max(r.length,a.length);const i=[];for(let s=0;s<=r.length;s++)i[s]=[s];for(let s=0;s<=a.length;s++)i[0][s]=s;for(let s=1;s<=a.length;s++)for(let l=1;l<=r.length;l++){let c=1;r[l-1]===a[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&&r[l-1]===a[s-2]&&r[l-2]===a[s-1]&&(i[l][s]=Math.min(i[l][s],i[l-2][s-2]+1))}return i[r.length][a.length]}function o(r,a){if(!a||a.length===0)return"";a=Array.from(new Set(a));const i=r.startsWith("--");i&&(r=r.slice(2),a=a.map(u=>u.slice(2)));let s=[],l=t;const c=.4;return a.forEach(u=>{if(u.length<=1)return;const h=n(r,u),f=Math.max(r.length,u.length);(f-h)/f>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})),oc=ot((e=>{var t=require("node:events").EventEmitter,n=require("node:child_process"),o=require("node:path"),r=require("node:fs"),a=require("node:process"),{Argument:i,humanReadableArgName:s}=So(),{CommanderError:l}=Rn(),{Help:c,stripColor:u}=hi(),{Option:h,DualOptions:
|
|
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,
|
|
15
|
-
Expecting one of '${
|
|
16
|
-
- already used by option '${m.flags}'`)}this._initOptionGroup(d),this.options.push(d)}_registerCommand(d){const m=g=>[g.name()].concat(g.aliases()),
|
|
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,
|
|
18
|
-
- if '${
|
|
13
|
+
(Did you mean ${s[0]}?)`:""}e.suggestSimilar=o})),oc=ot((e=>{var t=require("node:events").EventEmitter,n=require("node:child_process"),o=require("node:path"),r=require("node:fs"),a=require("node:process"),{Argument:i,humanReadableArgName:s}=So(),{CommanderError:l}=Rn(),{Help:c,stripColor:u}=hi(),{Option:h,DualOptions:f}=bi(),{suggestSimilar:p}=nc(),R=class gi 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=>a.stdout.write(m),writeErr:m=>a.stderr.write(m),outputError:(m,A)=>A(m),getOutHelpWidth:()=>a.stdout.isTTY?a.stdout.columns:void 0,getErrHelpWidth:()=>a.stderr.isTTY?a.stderr.columns:void 0,getOutHasColors:()=>X()??(a.stdout.isTTY&&a.stdout.hasColors?.()),getErrHasColors:()=>X()??(a.stderr.isTTY&&a.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,A){let g=m,Z=A;typeof g=="object"&&g!==null&&(Z=g,g=null),Z=Z||{};const[,G,C]=d.match(/([^ ]+) *(.*)/),K=this.createCommand(G);return g&&(K.description(g),K._executableHandler=!0),Z.isDefault&&(this._defaultCommandName=K._name),K._hidden=!!(Z.noHelp||Z.hidden),K._executableFile=Z.executableFile||null,C&&K.arguments(C),this._registerCommand(K),K.parent=this,K.copyInheritedSettings(this),g?this:K}createCommand(d){return new gi(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,A,g){const Z=this.createArgument(d,m);return typeof A=="function"?Z.default(g).argParser(A):Z.default(A),this.addArgument(Z),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[,A,g]=(d??"help [command]").match(/([^ ]+) *(.*)/),Z=m??"display help for command",G=this.createCommand(A);return G.helpOption(!1),g&&G.arguments(g),Z&&G.description(Z),this._addImplicitHelpCommand=!0,this._helpCommand=G,(d||m)&&this._initCommandGroup(G),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 A=["preSubcommand","preAction","postAction"];if(!A.includes(d))throw new Error(`Unexpected value for event passed to hook : '${d}'.
|
|
15
|
+
Expecting one of '${A.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,A){this._exitCallback&&this._exitCallback(new l(d,m,A)),a.exit(d)}action(d){const m=A=>{const g=this.registeredArguments.length,Z=A.slice(0,g);return this._storeOptionsAsProperties?Z[g]=this:Z[g]=this.opts(),Z.push(this),d.apply(this,Z)};return this._actionHandler=m,this}createOption(d,m){return new h(d,m)}_callParseArg(d,m,A,g){try{return d.parseArg(m,A)}catch(Z){if(Z.code==="commander.invalidArgument"){const G=`${g} ${Z.message}`;this.error(G,{exitCode:Z.exitCode,code:Z.code})}throw Z}}_registerOption(d){const m=d.short&&this._findOption(d.short)||d.long&&this._findOption(d.long);if(m){const A=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 '${A}'
|
|
16
|
+
- already used by option '${m.flags}'`)}this._initOptionGroup(d),this.options.push(d)}_registerCommand(d){const m=g=>[g.name()].concat(g.aliases()),A=m(d).find(g=>this._findCommand(g));if(A){const g=m(this._findCommand(A)).join("|"),Z=m(d).join("|");throw new Error(`cannot add command '${Z}' as already have command '${g}'`)}this._initCommandGroup(d),this.commands.push(d)}addOption(d){this._registerOption(d);const m=d.name(),A=d.attributeName();if(d.negate){const Z=d.long.replace(/^--no-/,"--");this._findOption(Z)||this.setOptionValueWithSource(A,d.defaultValue===void 0?!0:d.defaultValue,"default")}else d.defaultValue!==void 0&&this.setOptionValueWithSource(A,d.defaultValue,"default");const g=(Z,G,C)=>{Z==null&&d.presetArg!==void 0&&(Z=d.presetArg);const K=this.getOptionValue(A);Z!==null&&d.parseArg?Z=this._callParseArg(d,Z,K,G):Z!==null&&d.variadic&&(Z=d._collectValue(Z,K)),Z==null&&(d.negate?Z=!1:d.isBoolean()||d.optional?Z=!0:Z=""),this.setOptionValueWithSource(A,Z,C)};return this.on("option:"+m,Z=>{g(Z,`error: option '${d.flags}' argument '${Z}' is invalid.`,"cli")}),d.envVar&&this.on("optionEnv:"+m,Z=>{g(Z,`error: option '${d.flags}' value '${Z}' from env '${d.envVar}' is invalid.`,"env")}),this}_optionEx(d,m,A,g,Z){if(typeof m=="object"&&m instanceof h)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");const G=this.createOption(m,A);if(G.makeOptionMandatory(!!d.mandatory),typeof g=="function")G.default(Z).argParser(g);else if(g instanceof RegExp){const C=g;g=(K,O)=>{const w=C.exec(K);return w?w[0]:O},G.default(Z).argParser(g)}else G.default(g);return this.addOption(G)}option(d,m,A,g){return this._optionEx({},d,m,A,g)}requiredOption(d,m,A,g){return this._optionEx({mandatory:!0},d,m,A,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,A){return this._storeOptionsAsProperties?this[d]=m:this._optionValues[d]=m,this._optionValueSources[d]=A,this}getOptionValueSource(d){return this._optionValueSources[d]}getOptionValueSourceWithGlobals(d){let m;return this._getCommandAndAncestors().forEach(A=>{A.getOptionValueSource(d)!==void 0&&(m=A.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){a.versions?.electron&&(m.from="electron");const g=a.execArgv??[];(g.includes("-e")||g.includes("--eval")||g.includes("-p")||g.includes("--print"))&&(m.from="eval")}d===void 0&&(d=a.argv),this.rawArgs=d.slice();let A;switch(m.from){case void 0:case"node":this._scriptPath=d[1],A=d.slice(2);break;case"electron":a.defaultApp?(this._scriptPath=d[1],A=d.slice(2)):A=d.slice(1);break;case"user":A=d.slice(0);break;case"eval":A=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",A}parse(d,m){this._prepareForParse();const A=this._prepareUserArgs(d,m);return this._parseCommand([],A),this}async parseAsync(d,m){this._prepareForParse();const A=this._prepareUserArgs(d,m);return await this._parseCommand([],A),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
|
+
- 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,A){if(r.existsSync(d))return;const g=`'${d}' does not exist
|
|
18
|
+
- if '${A}' 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
|
|
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 A=!1;const g=[".js",".ts",".tsx",".mjs",".cjs"];function Z(w,L){const ee=o.resolve(w,L);if(r.existsSync(ee))return ee;if(g.includes(o.extname(L)))return;const yr=g.find(Ml=>r.existsSync(`${ee}${Ml}`));if(yr)return`${ee}${yr}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let G=d._executableFile||`${this._name}-${d._name}`,C=this._executableDir||"";if(this._scriptPath){let w;try{w=r.realpathSync(this._scriptPath)}catch{w=this._scriptPath}C=o.resolve(o.dirname(w),C)}if(C){let w=Z(C,G);if(!w&&!d._executableFile&&this._scriptPath){const L=o.basename(this._scriptPath,o.extname(this._scriptPath));L!==this._name&&(w=Z(C,`${L}-${d._name}`))}G=w||G}A=g.includes(o.extname(G));let K;a.platform!=="win32"?A?(m.unshift(G),m=V(a.execArgv).concat(m),K=n.spawn(a.argv[0],m,{stdio:"inherit"})):K=n.spawn(G,m,{stdio:"inherit"}):(this._checkForMissingExecutable(G,C,d._name),m.unshift(G),m=V(a.execArgv).concat(m),K=n.spawn(a.execPath,m,{stdio:"inherit"})),K.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(w=>{a.on(w,()=>{K.killed===!1&&K.exitCode===null&&K.kill(w)})});const O=this._exitCallback;K.on("close",w=>{w=w??1,O?O(new l(w,"commander.executeSubCommandAsync","(close)")):a.exit(w)}),K.on("error",w=>{if(w.code==="ENOENT")this._checkForMissingExecutable(G,C,d._name);else if(w.code==="EACCES")throw new Error(`'${G}' not executable`);if(!O)a.exit(1);else{const L=new l(1,"commander.executeSubCommandAsync","(error)");L.nestedError=w,O(L)}}),this.runningCommand=K}_dispatchSubcommand(d,m,A){const g=this._findCommand(d);g||this.help({error:!0}),g._prepareForParse();let Z;return Z=this._chainOrCallSubCommandHook(Z,g,"preSubcommand"),Z=this._chainOrCall(Z,()=>{if(g._executableHandler)this._executeSubCommand(g,m.concat(A));else return g._parseCommand(m,A)}),Z}_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=(A,g,Z)=>{let G=g;if(g!==null&&A.parseArg){const C=`error: command-argument value '${g}' is invalid for argument '${A.name()}'.`;G=this._callParseArg(A,g,Z,C)}return G};this._checkNumberOfArguments();const m=[];this.registeredArguments.forEach((A,g)=>{let Z=A.defaultValue;A.variadic?g<this.args.length?(Z=this.args.slice(g),A.parseArg&&(Z=Z.reduce((G,C)=>d(A,C,G),A.defaultValue))):Z===void 0&&(Z=[]):g<this.args.length&&(Z=this.args[g],A.parseArg&&(Z=d(A,Z,A.defaultValue))),m[g]=Z}),this.processedArgs=m}_chainOrCall(d,m){return d?.then&&typeof d.then=="function"?d.then(()=>m()):m()}_chainOrCallHooks(d,m){let A=d;const g=[];return this._getCommandAndAncestors().reverse().filter(Z=>Z._lifeCycleHooks[m]!==void 0).forEach(Z=>{Z._lifeCycleHooks[m].forEach(G=>{g.push({hookedCommand:Z,callback:G})})}),m==="postAction"&&g.reverse(),g.forEach(Z=>{A=this._chainOrCall(A,()=>Z.callback(Z.hookedCommand,this))}),A}_chainOrCallSubCommandHook(d,m,A){let g=d;return this._lifeCycleHooks[A]!==void 0&&this._lifeCycleHooks[A].forEach(Z=>{g=this._chainOrCall(g,()=>Z(this,m))}),g}_parseCommand(d,m){const A=this.parseOptions(m);if(this._parseOptionsEnv(),this._parseOptionsImplied(),d=d.concat(A.operands),m=A.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(A.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();const g=()=>{A.unknown.length>0&&this.unknownOption(A.unknown[0])},Z=`command:${this.name()}`;if(this._actionHandler){g(),this._processArguments();let G;return G=this._chainOrCallHooks(G,"preAction"),G=this._chainOrCall(G,()=>this._actionHandler(this.processedArgs)),this.parent&&(G=this._chainOrCall(G,()=>{this.parent.emit(Z,d,m)})),G=this._chainOrCallHooks(G,"postAction"),G}if(this.parent?.listenerCount(Z))g(),this._processArguments(),this.parent.emit(Z,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 A=m.attributeName();return this.getOptionValue(A)===void 0?!1:this.getOptionValueSource(A)!=="default"});d.filter(m=>m.conflictsWith.length>0).forEach(m=>{const A=d.find(g=>m.conflictsWith.includes(g.attributeName()));A&&this._conflictingOption(m,A)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(d=>{d._checkForConflictingLocalOptions()})}parseOptions(d){const m=[],A=[];let g=m;function Z(w){return w.length>1&&w[0]==="-"}const G=w=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(w)?!this._getCommandAndAncestors().some(L=>L.options.map(ee=>ee.short).some(ee=>/^-\d$/.test(ee))):!1;let C=null,K=null,O=0;for(;O<d.length||K;){const w=K??d[O++];if(K=null,w==="--"){g===A&&g.push(w),g.push(...d.slice(O));break}if(C&&(!Z(w)||G(w))){this.emit(`option:${C.name()}`,w);continue}if(C=null,Z(w)){const L=this._findOption(w);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&&(!Z(d[O])||G(d[O]))&&(ee=d[O++]),this.emit(`option:${L.name()}`,ee)}else this.emit(`option:${L.name()}`);C=L.variadic?L:null;continue}}if(w.length>2&&w[0]==="-"&&w[1]!=="-"){const L=this._findOption(`-${w[1]}`);if(L){L.required||L.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${L.name()}`,w.slice(2)):(this.emit(`option:${L.name()}`),K=`-${w.slice(2)}`);continue}}if(/^--[^=]+=/.test(w)){const L=w.indexOf("="),ee=this._findOption(w.slice(0,L));if(ee&&(ee.required||ee.optional)){this.emit(`option:${ee.name()}`,w.slice(L+1));continue}}if(g===m&&Z(w)&&!(this.commands.length===0&&G(w))&&(g=A),(this._enablePositionalOptions||this._passThroughOptions)&&m.length===0&&A.length===0){if(this._findCommand(w)){m.push(w),A.push(...d.slice(O));break}else if(this._getHelpCommand()&&w===this._getHelpCommand().name()){m.push(w,...d.slice(O));break}else if(this._defaultCommandName){A.push(w,...d.slice(O));break}}if(this._passThroughOptions){g.push(w,...d.slice(O));break}g.push(w)}return{operands:m,unknown:A}}opts(){if(this._storeOptionsAsProperties){const d={},m=this.options.length;for(let A=0;A<m;A++){const g=this.options[A].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
|
|
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
|
|
25
|
-
Expecting one of '${
|
|
26
|
-
`)}),this}_outputHelpIfRequested(d){const m=this._getHelpOption();m&&d.find(
|
|
23
|
+
`),this.outputHelp({error:!0}));const A=m||{},g=A.exitCode||1,Z=A.code||"commander.error";this._exit(g,Z,d)}_parseOptionsEnv(){this.options.forEach(d=>{if(d.envVar&&d.envVar in a.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()}`,a.env[d.envVar]):this.emit(`optionEnv:${d.name()}`))}})}_parseOptionsImplied(){const d=new f(this.options),m=A=>this.getOptionValue(A)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(A));this.options.filter(A=>A.implied!==void 0&&m(A.attributeName())&&d.valueFromOption(this.getOptionValue(A.attributeName()),A)).forEach(A=>{Object.keys(A.implied).filter(g=>!m(g)).forEach(g=>{this.setOptionValueWithSource(g,A.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 A=G=>{const C=G.attributeName(),K=this.getOptionValue(C),O=this.options.find(L=>L.negate&&C===L.attributeName()),w=this.options.find(L=>!L.negate&&C===L.attributeName());return O&&(O.presetArg===void 0&&K===!1||O.presetArg!==void 0&&K===O.presetArg)?O:w||G},g=G=>{const C=A(G),K=C.attributeName();return this.getOptionValueSource(K)==="env"?`environment variable '${C.envVar}'`:`option '${C.flags}'`},Z=`error: ${g(d)} cannot be used with ${g(m)}`;this.error(Z,{code:"commander.conflictingOption"})}unknownOption(d){if(this._allowUnknownOption)return;let m="";if(d.startsWith("--")&&this._showSuggestionAfterError){let g=[],Z=this;do{const G=Z.createHelp().visibleOptions(Z).filter(C=>C.long).map(C=>C.long);g=g.concat(G),Z=Z.parent}while(Z&&!Z._enablePositionalOptions);m=p(d,g)}const A=`error: unknown option '${d}'${m}`;this.error(A,{code:"commander.unknownOption"})}_excessArguments(d){if(this._allowExcessArguments)return;const m=this.registeredArguments.length,A=m===1?"":"s",g=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${m} argument${A} 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(Z=>{g.push(Z.name()),Z.alias()&&g.push(Z.alias())}),m=p(d,g)}const A=`error: unknown command '${d}'${m}`;this.error(A,{code:"commander.unknownCommand"})}version(d,m,A){if(d===void 0)return this._version;this._version=d,m=m||"-V, --version",A=A||"output the version number";const g=this.createOption(m,A);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 A=this.parent?._findCommand(d);if(A){const g=[A.name()].concat(A.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(A=>s(A));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(),A=this._getOutputContext(d);m.prepareContext({error:A.error,helpWidth:A.helpWidth,outputHasColors:A.hasColors});const g=m.formatHelp(this,m);return A.hasColors?g:this._outputConfiguration.stripColor(g)}_getOutputContext(d){d=d||{};const m=!!d.error;let A,g,Z;return m?(A=C=>this._outputConfiguration.writeErr(C),g=this._outputConfiguration.getErrHasColors(),Z=this._outputConfiguration.getErrHelpWidth()):(A=C=>this._outputConfiguration.writeOut(C),g=this._outputConfiguration.getOutHasColors(),Z=this._outputConfiguration.getOutHelpWidth()),{error:m,write:C=>(g||(C=this._outputConfiguration.stripColor(C)),A(C)),hasColors:g,helpWidth:Z}}outputHelp(d){let m;typeof d=="function"&&(m=d,d=void 0);const A=this._getOutputContext(d),g={error:A.error,write:A.write,command:this};this._getCommandAndAncestors().reverse().forEach(G=>G.emit("beforeAllHelp",g)),this.emit("beforeHelp",g);let Z=this.helpInformation({error:A.error});if(m&&(Z=m(Z),typeof Z!="string"&&!Buffer.isBuffer(Z)))throw new Error("outputHelp callback must return a string or a Buffer");A.write(Z),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",g),this._getCommandAndAncestors().forEach(G=>G.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(a.exitCode??0);m===0&&d&&typeof d!="function"&&d.error&&(m=1),this._exit(m,"commander.help","(outputHelp)")}addHelpText(d,m){const A=["beforeAll","before","after","afterAll"];if(!A.includes(d))throw new Error(`Unexpected value for position to addHelpText.
|
|
25
|
+
Expecting one of '${A.join("', '")}'`);const g=`${d}Help`;return this.on(g,Z=>{let G;typeof m=="function"?G=m({error:Z.error,command:Z.command}):G=m,G&&Z.write(`${G}
|
|
26
|
+
`)}),this}_outputHelpIfRequested(d){const m=this._getHelpOption();m&&d.find(A=>m.is(A))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function V(J){return J.map(d=>{if(!d.startsWith("--inspect"))return d;let m,A="127.0.0.1",g="9229",Z;return(Z=d.match(/^(--inspect(-brk)?)$/))!==null?m=Z[1]:(Z=d.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(m=Z[1],/^\d+$/.test(Z[3])?g=Z[3]:A=Z[3]):(Z=d.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(m=Z[1],A=Z[3],g=Z[4]),m&&g!=="0"?`${m}=${A}:${parseInt(g)+1}`:d})}function X(){if(a.env.NO_COLOR||a.env.FORCE_COLOR==="0"||a.env.FORCE_COLOR==="false")return!1;if(a.env.FORCE_COLOR||a.env.CLICOLOR_FORCE!==void 0)return!0}e.Command=R,e.useColor=X})),rc=ot((e=>{var{Argument:t}=So(),{Command:n}=oc(),{CommanderError:o,InvalidArgumentError:r}=Rn(),{Help:a}=hi(),{Option:i}=bi();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=a,e.CommanderError=o,e.InvalidArgumentError=r,e.InvalidOptionArgumentError=r})),ac=rt(rc(),1),{program:BZ,createCommand:wZ,createArgument:FZ,createOption:kZ,CommanderError:ic,InvalidArgumentError:UZ,InvalidOptionArgumentError:JZ,Command:sc,Argument:xZ,Option:Se,Help:KZ}=ac.default;function pi(e){return e.replace(/\s+/g," ").trim()}function ie(e,t){const n=t.map(a=>e.map(i=>pi(i.value(a)))),o=e.map((a,i)=>{const s=n.map(l=>l[i].length);return Math.max(a.header.length,...s)}),r=a=>a.map((i,s)=>i.padEnd(o[s])).join(" ").trimEnd();return[r(e.map(a=>a.header)),r(o.map(a=>"-".repeat(a))),...n.map(r)].join(`
|
|
27
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,r])=>`${o.padEnd(n)} ${pi(r??"")}`).join(`
|
|
28
28
|
`)}
|
|
29
|
-
`}function lc(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
|
|
29
|
+
`}function lc(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 mt(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"} ${lc(Math.abs(n))})`}function Dt(e,t){if(!e)return;const n=mt(e.earliestAt,t),o=mt(e.latestAt,t);return n&&o?`between ${n} and ${o}`:n?`from ${n}`:o?`by ${o}`:void 0}function Ai(e){return e.holder?`${e.holder.ownerId}${e.holder.label?` (${e.holder.label})`:""}`:void 0}function Ir(e){return`--lock-id ${e.lockId} --owner ${e.ownerId}`}function At(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 r=[o,q([["Epoch",String(e.epoch)],["Valid until",mt(e.leaseExpiresAt,n)?`${mt(e.leaseExpiresAt,n)} unless a heartbeat renews it`:void 0],["Hard cap",mt(e.maxHoldExpiresAt,n)?`${mt(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 ${Ir(e)} --epoch ${e.epoch}`];return t==="acquire"&&r.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."),`${r.join(`
|
|
30
30
|
`)}
|
|
31
31
|
`}if(e.status==="Queued")return[o,q([["Position",`${e.position} of ${e.queueLength}`],["Held by",Ai(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 ${Ir(e)} --wait`].join(`
|
|
32
32
|
`)+`
|
|
@@ -47,17 +47,17 @@ The backend has no hold or queue entry for this owner. Acquire to queue.
|
|
|
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 S;(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"})(S||(S={}));function Vo(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 hc(){const e=this.buf;let t=this.pos,n=0,o=0;for(let a=0;a<28;a+=7){const i=e[t++];if(n|=(i&127)<<a,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}const r=e[t++];if(n|=(r&15)<<28,o=(r&112)>>4,(r&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}for(let a=3;a<=31;a+=7){const i=e[t++];if(o|=(i&127)<<a,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}throw new Error("invalid varint")}var sn=4294967296;function Xr(e){const t=e[0]==="-";t&&(e=e.slice(1));const n=1e6;let o=0,r=0;function a(i,s){const l=Number(e.slice(i,s));r*=n,o=o*n+l,o>=sn&&(r=r+(o/sn|0),o=o%sn)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?Zi(o,r):Go(o,r)}function bc(e,t){let n=Go(e,t);const o=n.hi&2147483648;o&&(n=Zi(n.lo,n.hi));const r=fi(n.lo,n.hi);return o?"-"+r:r}function fi(e,t){if({lo:e,hi:t}=gc(e,t),t<=2097151)return String(sn*t+e);const n=e&16777215,o=(e>>>24|t<<8)&16777215,r=t>>16&65535;let a=n+o*6777216+r*6710656,i=o+r*8147497,s=r*2;const l=1e7;return a>=l&&(i+=Math.floor(a/l),a%=l),i>=l&&(s+=Math.floor(i/l),i%=l),s.toString()+Yr(i)+Yr(a)}function gc(e,t){return{lo:e>>>0,hi:t>>>0}}function Go(e,t){return{lo:e|0,hi:t|0}}function Zi(e,t){return t=~t,e?e=~e+1:t+=1,Go(e,t)}var Yr=e=>{const t=String(e);return"0000000".slice(t.length)+t};function pc(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 Ac(){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 H=fc();function fc(){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"),r=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(a){const i=typeof a=="bigint"?a:BigInt(a);if(i>n||i<t)throw new Error(`invalid int64: ${a}`);return i},uParse(a){const i=typeof a=="bigint"?a:BigInt(a);if(i>r||i<o)throw new Error(`invalid uint64: ${a}`);return i},enc(a){return e.setBigInt64(0,this.parse(a),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(a){return e.setBigInt64(0,this.uParse(a),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(a,i){return e.setInt32(0,a,!0),e.setInt32(4,i,!0),e.getBigInt64(0,!0)},uDec(a,i){return e.setInt32(0,a,!0),e.setInt32(4,i,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),Cr(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),Br(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),Cr(t),Xr(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),Br(t),Xr(t)},dec(t,n){return bc(t,n)},uDec(t,n){return fi(t,n)}}}function Cr(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function Br(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function Be(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":H.zero;case b.BYTES:return new Uint8Array(0);default:return 0}}function Zc(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 Ri=2,me=Symbol.for("reflect unsafe local");function Rc(e,t){const n=e[t.localName].case;return n===void 0?n:t.fields.find(o=>o.localName===n)}function Ec(e,t){const n=t.localName;if(t.oneof)return e[t.oneof.localName].case===n;if(t.presence!=Ri)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!Zc(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 Sc(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 Vc(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 Nc(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!=Ri)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]=Be(t.scalar,t.longAsString);break}}function Te(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function No(e,t){var n,o,r,a;if(Te(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)&&((r=i.enum)===null||r===void 0?void 0:r.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function vo(e,t){var n,o,r,a;if(Te(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)&&((r=i.enum)===null||r===void 0?void 0:r.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function Wo(e,t){return Te(e)&&me in e&&"desc"in e&&Te(e.desc)&&e.desc.kind==="message"&&(t===void 0||e.desc.typeName==t.typeName)}function vc(e){return Si(e.$typeName)}function at(e){const t=e.fields[0];return Si(e.typeName)&&t!==void 0&&t.fieldKind=="scalar"&&t.name=="value"&&t.number==1}function Ei(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 Wc=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 Si(e){return Wc.has(e)}var yc=999,Ic=998,Vi=2;function ce(e,t){return Vo(t,e)?t:Gi(e)(t)}var wr=new WeakMap;function Gi(e){let t=wr.get(e);return t===void 0&&(t=Xc(e),wr.set(e,t)),t}var no=0,Ni=1,vi=2,Wi=3;function Xc(e){const t=e.typeName,{properties:n,prototype:o}=Yc(e);return r=>{let a;o!==void 0?(a=Object.create(o),a.$typeName=t):a={$typeName:t};for(let i=0;i<n.length;i++){const s=n[i],l=s.name,c=r?.[l];switch(s.kind){case no:c!=null?a[l]=s.convert!==void 0?s.convert(c):c:s.constant!==void 0&&(a[l]=s.constant);break;case Ni:a[l]=s.convert!==void 0&&Array.isArray(c)?c.map(s.convert):c??[];break;case vi:if(s.convert===void 0||!Te(c))a[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]]));a[l]=u}break;case Wi:{const u=c;if(u?.case!=null){const h=s.convert.get(u.case);if(h!==void 0){a[l]={case:u.case,value:h(u.value)};break}}a[l]={case:void 0};break}}}return a}}function Yc(e){var t,n;const o=[],r={},a=Bc(e);for(const i of e.members){const s=i.localName;if(i.kind=="oneof"){o.push({name:s,kind:Wi,constant:void 0,convert:Cc(i)});continue}switch(i.fieldKind){case"message":o.push({name:s,kind:no,constant:void 0,convert:ln(i)});break;case"list":o.push({name:s,kind:Ni,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:vi,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=wc(i);o.push({name:s,kind:no,constant:i.presence==Vi?l:void 0,convert:i.fieldKind=="scalar"&&i.scalar==b.BYTES?kt:void 0}),a&&(r[s]=l);break}}}return{properties:o,prototype:a?r:void 0}}function Cc(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??(r=>r))}return t}function ln(e){if(e.fieldKind=="message"&&!e.oneof&&at(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=>!Te(o)||Vo(o,t)?o:(n!=null||(n=Gi(t)),n(o))}function kt(e){return Array.isArray(e)?new Uint8Array(e):e}function Bc(e){switch(e.file.edition){case yc:return!1;case Ic:return!0;default:return e.fields.some(t=>t.presence!=Vi&&t.fieldKind!="message"&&!t.oneof)}}function wc(e){const t=e.getDefaultValue();return t!==void 0?e.fieldKind=="scalar"&&e.longAsString?t.toString():t:e.fieldKind=="scalar"?Be(e.scalar,e.longAsString):e.enum.values[0].number}var Fc=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],Q=class extends Error{constructor(e,t,n="FieldValueInvalidError"){super(t),this.name=n,this.field=()=>e}};function kc(e){return e instanceof Error&&Fc.includes(e.name)&&"field"in e&&typeof e.field=="function"}var oo;function Uc(e){var t;oo=Object.assign(Object.assign({},e),{encodeUtf8Into:(t=e.encodeUtf8Into)!==null&&t!==void 0?t:yi(e.encodeUtf8.bind(e))})}function yo(){if(!oo){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 r={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&&(r.encodeUtf8Into=t.encodeInto.bind(t));const a=String.prototype.isWellFormed;a&&(r.checkUtf8=i=>a.call(i)),Uc(r)}return oo}function yi(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 Ii=class{constructor(e){this.stackPos=[],this.encodeUtf8Into=e?yi(e):yo().encodeUtf8Into,this.buffer=Xi,this.viewCache=xc,this.pos=0}ensureCapacity(e){const t=this.pos+e;if(t>this.buffer.length){let n=this.buffer.length||Jc;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(Yt),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-Yt,n=xn(t);return n>Yt&&(this.ensureCapacity(n-Yt),this.buffer.copyWithin(e+n,e+Yt,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(Fr(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<=Yi){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=xn(t),o=this.buffer,r=this.pos,{written:a}=this.encodeUtf8Into(e,o.subarray(r+n)),i=xn(a);return i!=n&&o.copyWithin(r+i,r+n,r+n+a),this.uint32(a),this.pos+=a,this}float(e){return Kc(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 Fr(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=H.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=H.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=H.enc(e);return this.writeVarint64(t.lo,t.hi)}sint64(e){const t=H.enc(e),n=t.hi>>31,o=t.lo<<1^n,r=(t.hi<<1|t.lo>>>31)^n;return this.writeVarint64(o,r)}uint64(e){const t=H.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 r=e>>>28&15|(t&7)<<4,a=t>>3!=0;if(n[o++]=(a?r|128:r)&255,!a)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}},Jc=128,Yt=1,Xi=new Uint8Array(0),xc=new DataView(Xi.buffer),Yi=32;function xn(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}var xt=class{constructor(e,t=yo().decodeUtf8){this.decodeUtf8=t,this.varint64Lo=0,this.varint64Hi=0,this.varint64=hc,this.uint32=Ac,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,r=t&7;if(o<=0||r>5)throw new Error("illegal tag: field no "+o+" wire type "+r);return[o,r]}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 r=this.uint32();this.pos+=r;break;case _.StartGroup:if(n<=0)throw new Error("maximum recursion depth reached");for(;;){const[a,i]=this.tag();if(i===_.EndGroup){if(t!==void 0&&a!==t)throw new Error("invalid end group tag");break}this.skip(i,a,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(),H.dec(this.varint64Lo,this.varint64Hi)}uint64(){return this.varint64(),H.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,H.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 H.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return H.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<=Yi){const o=new Array(n);for(let r=0;r<n;r++){const a=t[r];if(a>127)return this.decodeUtf8(t,e);o[r]=a}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 Fr(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 Kc(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 Ci(e,t){const n=e.fieldKind=="list"?No(t,e):e.fieldKind=="map"?vo(t,e):Io(e,t);if(n===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${wi(e)}, got ${te(t)}`;break;case"map":o=`expected ${Fi(e)}, got ${te(t)}`;break;default:o=pe(e,t,n)}return new Q(e,o)}function kr(e,t,n){const o=Io(e,n);if(o!==!0)return new Q(e,`list item #${t+1}: ${pe(e,n,o)}`)}function zc(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 r=Io(e,n);if(r!==!0)return new Q(e,`map entry ${te(t)}: ${pe(e,n,r)}`)}function Io(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):Wo(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:yo().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 H.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 H.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 ${Lc(e.scalar)}`+n:e.enum!==void 0?`expected ${e.enum.toString()}`+n:`expected ${Bi(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})`:No(e)?wi(e.field()):vo(e)?Fi(e.field()):Wo(e)?Bi(e.desc):Vo(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 Bi(e){return`ReflectMessage (${e.typeName})`}function wi(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 Fi(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 Lc(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 jc=0;function Ge(e){if(Tc(e))return{toMessage:n=>Xo(n),toLocal:n=>Yo(n)};if(e.fieldKind=="message"&&!e.oneof&&at(e.message)){const n=e.message,o=n.fields[0].localName;return{toMessage:r=>{const a=ce(n);return r!==void 0&&(a[o]=r),a},toLocal:r=>r[o]}}const t=e.message;return{toMessage:n=>n===void 0?ce(t):n,toLocal:n=>n}}function Tc(e){return e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"}function Xo(e){const t={$typeName:"google.protobuf.Struct",fields:{}};if(Te(e))for(const n of Object.keys(e))fe(t.fields,n,Ui(e[n]));return t}function Yo(e){const t={};for(const n of Object.keys(e.fields))fe(t,n,ki(e.fields[n]));return t}function ki(e){switch(e.kind.case){case"structValue":return Yo(e.kind.value);case"listValue":return e.kind.value.values.map(ki);case"nullValue":case void 0:return null;default:return e.kind.value}}function Ui(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:jc};else if(Array.isArray(e)){const n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(const o of e)n.values.push(Ui(o));t.kind={case:"listValue",value:n}}else t.kind={case:"structValue",value:Xo(e)};break}return t}function Hc(e,t,n=!0){return new Ji(e,t,n)}var Ur=new WeakMap,Ji=class{get sortedFields(){const e=Ur.get(this.desc);if(e)return e;const t=this.desc.fields.concat().sort((n,o)=>n.number-o.number);return Ur.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 Ct(this.message,e),Rc(this.message,e)}isSet(e){return Ct(this.message,e),Ec(this.message,e)}clear(e){Ct(this.message,e),Nc(this.message,e)}get(e){Ct(this.message,e);const t=Sc(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 Qc(e,t,this.check)),n;case"map":let o=this.maps.get(e);return(!o||o[me]!==t)&&this.maps.set(e,o=new Mc(e,t,this.check)),o;case"message":return Bo(e,t,this.check);case"scalar":return t===void 0?Be(e.scalar,!1):wo(e,t);case"enum":return t??e.enum.values[0].number}}set(e,t){if(Ct(this.message,e),this.check){const o=Ci(e,t);if(o)throw o}let n;e.fieldKind=="message"?n=Co(e,t):vo(t)||No(t)?n=t[me]:n=Fo(e,t),Vc(this.message,e,n)}getUnknown(){return this.message.$unknown}setUnknown(e){this.message.$unknown=e}};function Ct(e,t){if(t.parent.typeName!==e.$typeName)throw new Q(t,`cannot use ${t.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var Qc=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:zn(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=kr(this._field,e,t);if(n)throw n}this._arr[e]=Jr(this._field,t)}add(e){if(this.check){const t=kr(this._field,this._arr.length,e);if(t)throw t}this._arr.push(Jr(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 zn(this._field,e,this.check)}*entries(){for(let e=0;e<this._arr.length;e++)yield[e,zn(this._field,this._arr[e],this.check)]}},Mc=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=zc(this._field,e,t);if(n)throw n}return fe(this.obj,_t(e),Oc(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=Ln(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 xr(e,this._field.mapKey)}*entries(){for(const e of Object.entries(this.obj))yield[xr(e[0],this._field.mapKey),Ln(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 Ln(this._field,e,this.check)}forEach(e,t){for(const n of this.entries())e.call(t,n[1],n[0],this)}};function Co(e,t){return Wo(t)?vc(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 Bo(e,t,n){return t!==void 0&&(at(e.message)&&!e.oneof&&e.fieldKind=="message"?t={$typeName:e.message.typeName,value:wo(e.message.fields[0],t)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&Te(t)&&(t=Xo(t))),new Ji(e.message,t,n)}function Jr(e,t){return e.listKind=="message"?Co(e,t):Fo(e,t)}function zn(e,t,n){return e.listKind=="message"?Bo(e,t,n):wo(e,t)}function Oc(e,t){return e.mapKind=="message"?Co(e,t):Fo(e,t)}function Ln(e,t,n){return e.mapKind=="message"?Bo(e,t,n):t}function _t(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function xr(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 H.uParse(e)}catch{}break;default:try{return H.parse(e)}catch{}break}return e}function wo(e,t){switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=H.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=H.uParse(t));break}return t}function Fo(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=H.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=H.uParse(t));break}return t}var Kr=Uint8Array.prototype.setFromBase64;function ko(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 r=-1;if(Kr)try{const a=Kr.call(o,e);a.read==t&&(r=a.written)}catch{}return r<0&&(r=Dc(o,e)),r==n?o:o.subarray(0,r)}function Dc(e,t){const n=Pc();let o=0,r=0,a,i=0;for(let s=0;s<t.length;s++){if(a=n[t.charCodeAt(s)],a===void 0)switch(t[s]){case"=":r=0;case`
|
|
51
|
-
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(r){case 0:i=a,r=1;break;case 1:e[o++]=i<<2|(a&48)>>4,i=a,r=2;break;case 2:e[o++]=(i&15)<<4|(a&60)>>2,i=a,r=3;break;case 3:e[o++]=(i&3)<<6|a,r=0;break}}if(r==1)throw Error("invalid base64 string");return o}var zr=Uint8Array.prototype.toBase64,_c={std:{alphabet:"base64",omitPadding:!1},std_raw:{alphabet:"base64",omitPadding:!0},url:{alphabet:"base64url",omitPadding:!0}};function $c(e,t="std"){if(zr)return zr.call(e,_c[t]);const n=xi(t),o=t=="std";let r="",a=0,i,s=0;for(let l=0;l<e.length;l++)switch(i=e[l],a){case 0:r+=n[i>>2],s=(i&3)<<4,a=1;break;case 1:r+=n[s|i>>4],s=(i&15)<<2,a=2;break;case 2:r+=n[s|i>>6],r+=n[i&63],a=0;break}return a&&(r+=n[s],o&&(r+="=",a==1&&(r+="="))),r}var $t,Lr,it;function xi(e){return $t||($t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),Lr=$t.slice(0,-2).concat("-","_")),e=="url"?Lr:$t}function Pc(){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 r=e.charAt(o);switch(r){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(r),t=!1;break;default:t&&(t=!1,r=r.toUpperCase()),n.push(r);break}}return n.join("")}function Ki(e){return e.replace(/[A-Z]/g,t=>"_"+t.toLowerCase())}var qc=new Set(["constructor","toString","toJSON","valueOf"]);function Kt(e){return qc.has(e)?e+"$":e}function Uo(e){for(const t of e.field)Jt(t,"jsonName")||(t.jsonName=At(t.name));e.nestedType.forEach(Uo)}function ed(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 td(e,t){switch(e){case b.STRING:return t;case b.BYTES:{const n=nd(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 H.parse(t);case b.UINT64:case b.FIXED64:return H.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 nd(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 r=this.tail.substring(0,o);return this.tail=this.tail.substring(o),r}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,r=n.take(2);if(r===!1)return!1;const a=parseInt(o+r,8);if(Number.isNaN(a))return!1;t.push(a);break}case"x":{const o=n.c,r=n.take(2);if(r===!1)return!1;const a=parseInt(o+r,16);if(Number.isNaN(a))return!1;t.push(a);break}case"u":{const o=n.c,r=n.take(4);if(r===!1)return!1;const a=parseInt(o+r,16);if(Number.isNaN(a))return!1;const i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,a,!0),t.push(i[0],i[1],i[2],i[3]);break}case"U":{const o=n.c,r=n.take(8);if(r===!1)return!1;const a=H.uEnc(o+r),i=new Uint8Array(8),s=new DataView(i.buffer);s.setInt32(0,a.lo,!0),s.setInt32(4,a.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*ro(e){switch(e.kind){case"file":for(const t of e.messages)yield t,yield*ro(t);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(const t of e.nestedMessages)yield t,yield*ro(t);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function zi(...e){const t=od();if(!e.length)return t;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(const o of e[0].file)Qr(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||a.has(c))continue;const u=r(c);if(!u)throw new Error(`Unable to resolve ${c}, imported by ${s.name}`);"kind"in u?t.addFile(u,!1,!0):(a.add(u.name),l.push(u))}return l.concat(...l.map(i))};var n=i;const o=e[0],r=e[1],a=new Set;for(const s of[o,...i(o)].reverse())Qr(s,t)}else for(const o of e)for(const r of o.files)t.addFile(r);return t}function od(){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,r,a){if(n.set(o.proto.name,o),!r)for(const i of ro(o))this.add(i);if(a)for(const i of o.dependencies)this.addFile(i,r,a)},add(o){if(o.kind=="extension"){let r=t.get(o.extendee.typeName);r||t.set(o.extendee.typeName,r=new Map),r.set(o.number,o)}e.set(o.typeName,o)},get(o){return e.get(o)},getFile(o){return n.get(o)},getMessage(o){const r=e.get(o);return r?.kind=="message"?r:void 0},getEnum(o){const r=e.get(o);return r?.kind=="enum"?r:void 0},getExtension(o){const r=e.get(o);return r?.kind=="extension"?r:void 0},getExtensionFor(o,r){var a;return(a=t.get(o.typeName))===null||a===void 0?void 0:a.get(r)},getService(o){const r=e.get(o);return r?.kind=="service"?r:void 0}}}var rd=998,ad=999,id=9999,sd=9,zt=10,Ut=11,ld=12,jr=14,Jo=3,cd=2,Tr=1,dd=0,jn=1,Hr=2,ud=3,md=1,hd=2,bd=1,gd=2,pd=1002,Li={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 Qr(e,t){var n,o;const r={kind:"file",proto:e,deprecated:(o=(n=e.options)===null||n===void 0?void 0:n.deprecated)!==null&&o!==void 0?o:!1,edition:Rd(e),name:e.name.replace(/\.proto$/,""),dependencies:Ed(e,t),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},a=new Map,i={get(s){return a.get(s)},add(s){var l;be(((l=s.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),a.set(s.typeName,s)}};for(const s of e.enumType)ji(s,r,void 0,t);for(const s of e.messageType)Ti(s,r,void 0,t,i);for(const s of e.service)Ad(s,r,t);ao(r,t);for(const s of a.values())io(s,t,i);for(const s of r.messages)io(s,t,i),ao(s,t);t.addFile(r,!0)}function ao(e,t){switch(e.kind){case"file":for(const n of e.proto.extension){const o=so(n,e,t);e.extensions.push(o),t.add(o)}break;case"message":for(const n of e.proto.extension){const o=so(n,e,t);e.nestedExtensions.push(o),t.add(o)}for(const n of e.nestedMessages)ao(n,t);break}}function io(e,t,n){const o=e.proto.oneofDecl.map(a=>Zd(a,e)),r=new Set;for(const a of e.proto.field){const i=Nd(a,o),s=so(a,e,t,i,n);e.fields.push(s),e.field[s.localName]=s,i===void 0?e.members.push(s):(i.fields.push(s),r.has(i)||(r.add(i),e.members.push(i)))}for(const a of o.filter(i=>r.has(i)))e.oneofs.push(a);for(const a of e.nestedMessages)io(a,t,n)}function ji(e,t,n,o){var r,a,i,s,l,c;const u=Sd(e.name,e.value),h={kind:"enum",proto:e,deprecated:(a=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&a!==void 0?a:!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=Id(h),o.add(h);for(const A of e.value){const f=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:f,localName:Kt(u==null?f:f.substring(u.length)),number:A.number,jsonName:(l=Vd(A))!==null&&l!==void 0?l:f,toString(){return`enum value ${h.typeName}.${f}`}})}((c=n?.nestedEnums)!==null&&c!==void 0?c:t.enums).push(h)}function Ti(e,t,n,o,r){var a,i,s,l;const c={kind:"message",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.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?r.add(c):(((l=n?.nestedMessages)!==null&&l!==void 0?l:t.messages).push(c),o.add(c));for(const u of e.enumType)ji(u,t,c,o);for(const u of e.nestedType)Ti(u,t,c,o,r)}function Ad(e,t,n){var o,r;const a={kind:"service",proto:e,deprecated:(r=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,file:t,name:e.name,typeName:En(e,void 0,t),methods:[],method:{},toString(){return`service ${this.typeName}`}};t.services.push(a),n.add(a);for(const i of e.method){const s=fd(i,a,n);a.methods.push(s),a.method[s.localName]=s}}function fd(e,t,n){var o,r,a,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(Ce(e.inputType)),c=n.getMessage(Ce(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:(r=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!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=(a=e.options)===null||a===void 0?void 0:a.idempotencyLevel)!==null&&i!==void 0?i:dd,toString(){return`rpc ${t.typeName}.${u}`}}}function Zd(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 so(e,t,n,o,r){var a,i,s;const l=r===void 0,c={kind:"field",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:vd(e,o,l,t),utf8Validation:Xd(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 E=t.kind=="file"?t:t.file,V=t.kind=="file"?void 0:t,X=En(e,V,E);c.kind="extension",c.file=E,c.parent=V,c.oneof=void 0,c.typeName=X,c.jsonName=`[${X}]`,u=()=>`extension ${X}`;const J=n.getMessage(Ce(e.extendee));be(J,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),c.extendee=J}else{const E=t;be(E.kind=="message"),c.parent=E,c.oneof=o,c.localName=o?At(e.name):Kt(At(e.name)),c.jsonName=e.jsonName,u=()=>`field ${E.typeName}.${e.name}`}Object.defineProperty(c,"toString",{value:u,writable:!0,enumerable:!0,configurable:!0});const h=e.label,A=e.type,f=(s=e.options)===null||s===void 0?void 0:s.jstype;if(h===Jo){const E=A==Ut?r?.get(Ce(e.typeName)):void 0;if(E){c.fieldKind="map";const{key:V,value:X}=yd(E);return c.mapKey=V.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(Ce(e.typeName)),be(c.message),c.delimitedEncoding=Mr(e,t);break;case jr:c.listKind="enum",c.enum=n.getEnum(Ce(e.typeName)),be(c.enum);break;default:c.listKind="scalar",c.scalar=A,c.longAsString=f==Tr;break}return c.packed=Wd(e,t),c}switch(A){case Ut:case zt:c.fieldKind="message",c.message=n.getMessage(Ce(e.typeName)),be(c.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.delimitedEncoding=Mr(e,t),c.getDefaultValue=()=>{};break;case jr:{const E=n.getEnum(Ce(e.typeName));be(E!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.fieldKind="enum",c.enum=n.getEnum(Ce(e.typeName)),c.getDefaultValue=()=>Jt(e,"defaultValue")?ed(E,e.defaultValue):void 0;break}default:c.fieldKind="scalar",c.scalar=A,c.longAsString=f==Tr,c.getDefaultValue=()=>Jt(e,"defaultValue")?td(A,e.defaultValue):void 0;break}return c}function Rd(e){switch(e.syntax){case"":case"proto2":return rd;case"proto3":return ad;case"editions":if(e.edition===id)return pd;if(e.edition in Li)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function Ed(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 Sd(e,t){const n=Gd(e)+"_";for(const o of t){if(!o.name.toLowerCase().startsWith(n))return;const r=o.name.substring(n.length);if(r.length==0||/^\d/.test(r))return}return n}function Vd(e){var t,n;let a;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?a=s.string():s.skip(c,l)}}return a}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 Ce(e){return e.startsWith(".")?e.substring(1):e}function Nd(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 vd(e,t,n,o){if(e.label==cd)return ud;if(e.label==Jo)return Hr;if(t||e.proto3Optional||n)return jn;const r=qe("fieldPresence",{proto:e,parent:o});return r==Hr&&(e.type==Ut||e.type==zt)?jn:r}function Wd(e,t){if(e.label!=Jo)return!1;switch(e.type){case sd:case ld:case zt:case Ut:return!1}const n=e.options;return n&&Jt(n,"packed")?n.packed:md==qe("repeatedFieldEncoding",{proto:e,parent:t})}function yd(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 Id(e){var t;return bd==qe("enumType",{proto:e.proto,parent:(t=e.parent)!==null&&t!==void 0?t:e.file})}function Mr(e,t){return e.type==zt?!0:hd==qe("messageEncoding",{proto:e,parent:t})}function Xd(e,t){return gd==qe("utf8Validation",{proto:e,parent:t})}function qe(e,t){var n,o;const r=(n=t.proto.options)===null||n===void 0?void 0:n.features;if(r){const a=r[e];if(a!=0)return a}if("kind"in t){if(t.kind=="message")return qe(e,(o=t.parent)!==null&&o!==void 0?o:t.file);const a=Li[t.edition];if(!a)throw new Error(`feature default for edition ${t.edition} not found`);return a[e]}return qe(e,t.parent)}function be(e,t){if(!e)throw new Error(t)}function Yd(e){const t=Cd(e);return t.messageType.forEach(Uo),zi(t,()=>{}).getFile(t.name)}function Cd(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(Hi),enumType:e.enumType.map(Qi)}))}function Hi(e){var t,n,o,r,a,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(Bd))!==null&&n!==void 0?n:[],extension:[],nestedType:(r=(o=e.nestedType)===null||o===void 0?void 0:o.map(Hi))!==null&&r!==void 0?r:[],enumType:(i=(a=e.enumType)===null||a===void 0?void 0:a.map(Qi))!==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 Bd(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?wd(e.options):void 0}))}function wd(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(r=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},r)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function Qi(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,r)=>o.nestedMessages[r],e.messages[t])}var Fd=Yd({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}]}]}),kd=v(Fd,1),Or;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(Or||(Or={}));var Dr;(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"})(Dr||(Dr={}));var _r;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(_r||(_r={}));var $r;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})($r||($r={}));var Pr;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Pr||(Pr={}));var qr;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(qr||(qr={}));var ea;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(ea||(ea={}));var ta;(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"})(ta||(ta={}));var na;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(na||(na={}));var oa;(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"})(oa||(oa={}));var ra;(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"})(ra||(ra={}));var aa;(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"})(aa||(aa={}));var ia;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(ia||(ia={}));var sa;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(sa||(sa={}));var la;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(la||(la={}));var ca;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(ca||(ca={}));var da;(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"})(da||(da={}));var ua;(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"})(ua||(ua={}));var ma;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(ma||(ma={}));var ha;(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"})(ha||(ha={}));var ba;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(ba||(ba={}));function Mi(e){return Object.assign(Object.assign({readUnknownFields:!0,recursionLimit:100},e),{depth:0})}function Ht(e,t,n){const o=ce(e);return xo(e).read(o,new xt(t),Mi(n),t.byteLength),o}var Oi=new WeakMap;function xo(e){let t=Oi.get(e);return t===void 0&&(t=Ud(e)),t}function Ud(e){const t=String(e),n=new Map,o={read:Jd(t,n),readGroup:xd(t,n)};Oi.set(e,o);for(const r of e.fields)n.set(r.number,Di(r));return o}function Jd(e,t){return(n,o,r,a)=>{var i;if(++r.depth>r.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${r.recursionLimit} reached`);const s=o.pos+a,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,r.recursionLimit-r.depth);r.readUnknownFields&&l.push({no:c,wireType:u,data:A});continue}h(n,o,r,u)}l.length>0&&(n.$unknown=l),r.depth--}}function xd(e,t){return(n,o,r,a)=>{var i;if(++r.depth>r.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${r.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,r.recursionLimit-r.depth);r.readUnknownFields&&c.push({no:s,wireType:l,data:h});continue}u(n,o,r,l)}if(l!=_.EndGroup||s!==a)throw new Error("invalid end group tag");c.length>0&&(n.$unknown=c),r.depth--}}function Kd(e,t,n,o,r){Di(n)(e[me],t,r,o)}function Di(e){switch(e.fieldKind){case"scalar":return zd(e);case"enum":return Ld(e);case"message":return jd(e);case"list":return Td(e);case"map":return Hd(e)}}function zd(e){const t=hn(e.scalar,e.utf8Validation,e.longAsString),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(r,a)=>{r[o]={case:n,value:t(a)}}}return(o,r)=>{o[n]=t(r)}}function Ld(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 r=e.enum.values,a=e.number;return(i,s,l,c)=>{var u;const h=s.int32();if(r.some(A=>A.number===h))o!==void 0?i[o]={case:n,value:h}:i[n]=h;else if(l.readUnknownFields){const A=[];pc(h,A);const f=(u=i.$unknown)!==null&&u!==void 0?u:[];f.push({no:a,wireType:c,data:new Uint8Array(A)}),i.$unknown=f}}}function jd(e){const t=e.localName,{toMessage:n,toLocal:o}=Ge(e),r=_i(e);if(e.oneof){const a=e.oneof.localName;return(i,s,l)=>{const c=i[a],u=n(c.case===t?c.value:void 0);r(u,s,l),i[a]={case:t,value:o(u)}}}return(a,i,s)=>{const l=n(a[t]);r(l,i,s),a[t]=o(l)}}function _i(e){const t=xo(e.message);if(e.delimitedEncoding){const n=e.number;return(o,r,a)=>t.readGroup(o,r,a,n)}return(n,o,r)=>t.read(n,o,r,o.uint32())}function Td(e){const t=e.localName;if(e.listKind=="message"){const{toMessage:i,toLocal:s}=Ge(e),l=_i(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,r=hn(n,e.utf8Validation,o),a=n!=b.STRING&&n!=b.BYTES;return(i,s,l,c)=>{const u=i[t];if(c==_.LengthDelimited&&a){const h=s.uint32()+s.pos;for(;s.pos<h;)u.push(r(s))}else u.push(r(s))}}function Hd(e){const t=e.localName,n=hn(e.mapKey,e.utf8Validation,!1),o=Be(e.mapKey,!1);let r,a;switch(e.mapKind){case"scalar":{const i=e.scalar,s=hn(i,e.utf8Validation,!1);if(r=l=>s(l),i==b.BYTES)a=()=>new Uint8Array(0);else{const l=Be(i,!1);a=()=>l}break}case"enum":{const i=e.enum.values[0].number;r=s=>s.int32(),a=()=>i;break}case"message":{const{toMessage:i,toLocal:s}=Ge(e),l=xo(e.message).read;r=(c,u,h)=>{const A=i(h);return l(A,c,u,c.uint32()),s(A)},a=()=>s(i(void 0));break}}return(i,s,l)=>{const c=i[t];let u,h;const A=s.uint32(),f=s.pos+A;for(;s.pos<f;){const[E]=s.tag();switch(E){case 1:u=n(s);break;case 2:h=r(s,l,h);break}}u===void 0&&(u=o),h===void 0&&(h=a()),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=Ht(kd,ko(e));return o.messageType.forEach(Uo),o.dependency=(n=t?.map(r=>r.proto.name))!==null&&n!==void 0?n:[],zi(o,r=>t?.find(a=>a.proto.name===r)).getFile(o.name)}var Ne=oe("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function Qd(e){return new Date(Md(e))}function Md(e){return Number(e.seconds)*1e3+Math.round(e.nanos/1e6)}var $i=oe("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Od=v($i,0),Dd=2,_d=3,ga={writeUnknownFields:!0};function $d(e){return e?Object.assign(Object.assign({},ga),e):ga}function Pi(e,t,n){const o=new Ii;return Ko(e)(o,$d(n),t),o.finish()}var qi=new WeakMap;function Ko(e){let t=qi.get(e);return t===void 0&&(t=Pd(e)),t}function Pd(e){const t=e.typeName,n=e.fields.concat().sort((i,s)=>i.number-s.number),o=n[0],r=[],a=(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<r.length;u++)r[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:f}=c[u];i.tag(h,A).raw(f)}};qi.set(e,a);for(const i of n)r.push(es(i));return a}function es(e){switch(e.fieldKind){case"message":case"scalar":case"enum":return qd(e);case"list":return tu(e);case"map":return nu(e)}}function qd(e){const t=eu(e),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(r,a,i)=>{const s=i[o];s.case===n&&t(r,a,s.value)}}if(e.presence!=Dd){const o=e.presence==_d?`cannot encode ${e} to binary: required field not set`:void 0;return(r,a,i)=>{const s=i[n];if(s!==void 0&&Object.prototype.hasOwnProperty.call(i,n))t(r,a,s);else if(o!==void 0)throw new Error(o)}}if(e.fieldKind=="enum"){const o=e.enum.values[0].number;return(r,a,i)=>{const s=i[n];s!==o&&t(r,a,s)}}switch(e.scalar){case b.BOOL:return(o,r,a)=>{const i=a[n];i!==!1&&t(o,r,i)};case b.STRING:return(o,r,a)=>{const i=a[n];i!==""&&t(o,r,i)};case b.BYTES:return(o,r,a)=>{const i=a[n];(!(i instanceof Uint8Array)||i.byteLength>0)&&t(o,r,i)};case b.DOUBLE:case b.FLOAT:return(o,r,a)=>{const i=a[n];Object.is(i,0)||t(o,r,i)};default:return(o,r,a)=>{const i=a[n];i!=0&&t(o,r,i)}}}function eu(e){switch(e.fieldKind){case"message":{const{toMessage:t}=Ge(e),n=ts(e);return(o,r,a)=>{n(o,r,t(a))}}case"scalar":case"enum":{const t=e.fieldKind=="enum"?b.INT32:e.scalar,n=e.number,o=Vn(t),r=Sn(t,e.parent.typeName,e.name);return(a,i,s)=>{a.tag(n,o),r(a,s)}}}}function tu(e){const t=e.localName,n=e.number;switch(e.listKind){case"message":{const{toMessage:o}=Ge(e),r=ts(e);return(a,i,s)=>{const l=s[t];for(let c=0;c<l.length;c++)r(a,i,o(l[c]))}}case"scalar":case"enum":{const o=e.listKind=="enum"?b.INT32:e.scalar,r=Sn(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++)r(i,c[u]);i.join()}};const a=Vn(o);return(i,s,l)=>{const c=l[t];for(let u=0;u<c.length;u++)i.tag(n,a),r(i,c[u])}}}}function nu(e){const t=e.localName,n=e.number,o=ou(e);if(e.mapKind=="message"){const{toMessage:s}=Ge(e),l=Ko(e.message);return(c,u,h)=>{const A=h[t],f=Object.keys(A);for(let E=0;E<f.length;E++){const V=f[E];c.tag(n,_.LengthDelimited).fork(),o(c,V),c.tag(2,_.LengthDelimited).fork(),l(c,u,s(A[V])),c.join(),c.join()}}}const r=e.mapKind=="enum"?b.INT32:e.scalar,a=Vn(r),i=Sn(r,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 f=h[A];s.tag(n,_.LengthDelimited).fork(),o(s,f),s.tag(2,a),i(s,u[f]),s.join()}}}function ou(e){const t=Vn(e.mapKey),n=Sn(e.mapKey,e.parent.typeName,e.name),o=ru(e.mapKey);return(r,a)=>{r.tag(1,t),n(r,o(a))}}function ru(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 H.uParse(t)}catch{return t}};case b.INT64:case b.SFIXED64:case b.SINT64:return t=>{try{return H.parse(t)}catch{return t}};default:return t=>{const n=Number.parseInt(t);return Number.isFinite(n)?n:t}}}function Sn(e,t,n){const o=au(e);return(r,a)=>{try{o(r,a)}catch(i){throw i instanceof Error?new Error(`cannot encode field ${t}.${n} to binary: ${i.message}`):i}}}function au(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 iu(e,t,n,o){es(o)(e,t,n[me])}function ts(e){const t=e.number,n=Ko(e.message);return e.delimitedEncoding?(o,r,a)=>{o.tag(t,_.StartGroup),n(o,r,a),o.tag(t,_.EndGroup)}:(o,r,a)=>{o.tag(t,_.LengthDelimited).fork(),n(o,r,a),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 su(e,t,n){let o=!1;return n||(n=ce(Od),o=!0),n.value=Pi(e,t),n.typeUrl=du(t.$typeName),o?n:void 0}function lu(e,t){return e.typeUrl===""?!1:(typeof t=="string"?t:t.typeName)===ns(e.typeUrl)}function cu(e,t){if(e.typeUrl==="")return;const n=t.kind=="message"?t:t.getMessage(ns(e.typeUrl));if(!(!n||!lu(e,n)))return Ht(n,e.value)}function du(e){return`type.googleapis.com/${e}`}function ns(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"),uu=v(Ue,0),os=v(Ue,1),mu=v(Ue,2),lo;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(lo||(lo={}));var rs=oe("Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZhbHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASABKAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoDSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUSDQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function hu(e,t,n){as(t,e);const o=gu(e.$unknown,t),[r,a,i]=Gn(t),s=Mi(n);for(const l of o)Kd(r,new xt(l.data),a,l.wireType,s);return i()}function bu(e,t,n){var o;as(t,e);const r=((o=e.$unknown)!==null&&o!==void 0?o:[]).filter(c=>c.no!==t.number),[a,i]=Gn(t,n),s=new Ii;iu(s,{writeUnknownFields:!0},a,i);const l=new xt(s.finish());for(;l.pos<l.len;){const[c,u]=l.tag(),h=l.skip(u,c);r.push({no:c,wireType:u,data:h})}e.$unknown=r}function gu(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}),r=Object.assign(Object.assign({},e.extendee),{fields:[o],members:[o],oneofs:[]}),a=ce(r,t!==void 0?{[n]:t}:void 0);return[Hc(r,a),o,()=>{const i=a[n];if(i===void 0){const s=e.message;return at(s)?Be(s.fields[0].scalar,s.fields[0].longAsString):ce(s)}return i}]}function as(e,t){if(e.extendee.typeName!=t.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var is=Date.parse("0001-01-01T00:00:00Z"),ss=Date.parse("9999-12-31T23:59:59Z");var pu=3,Au=2,pa={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function fu(e){return e?Object.assign(Object.assign({},pa),e):pa}function ls(e,t,n){return bn(e)(fu(n),t)}function Zu(e,t,n){var o;const r=ls(e,t,n);return JSON.stringify(r,null,(o=n?.prettySpaces)!==null&&o!==void 0?o:0)}var co=new WeakMap;function bn(e){let t=co.get(e);return t===void 0&&(t=Ru(e)),t}function Ru(e){const t=e.typeName,n=Su(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 co.set(e,l),l}const o=e.fields.concat().sort((s,l)=>s.number-l.number),r=o[0],a=[],i=(s,l)=>{if(l.$typeName!==t&&r!==void 0)throw new Q(r,`cannot use ${r} with message ${l.$typeName}`,"ForeignFieldError");const c={};for(let u=0;u<a.length;u++)a[u](s,l,c);return s.registry&&yu(c,s,s.registry,l,e),c};co.set(e,i);for(const s of o){const l=Vu(s);a.push(s.jsonName==="__proto__"||s.name==="__proto__"?Eu(l):l)}return i}function Eu(e){return(t,n,o)=>{const r=Object.create(null);e(t,n,r);for(const a of Object.keys(r))fe(o,a,r[a])}}function Su(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n)=>Iu(n,t);case"google.protobuf.Timestamp":return(t,n)=>Cu(n);case"google.protobuf.Duration":return(t,n)=>Xu(n);case"google.protobuf.FieldMask":return(t,n)=>Yu(n);case"google.protobuf.Struct":return(t,n)=>ms(n);case"google.protobuf.Value":return(t,n)=>jo(n);case"google.protobuf.ListValue":return(t,n)=>hs(n);default:if(at(e)){const t=e.fields[0],n=t.localName,o=Be(t.scalar,!1),r=Nn(t);return(a,i)=>{const s=i[n];return r(a,s===void 0?o:s)}}return}}function Vu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return Gu(e);case"list":case"map":{const t=e.fieldKind=="list"?ds(e):us(e),n=e.name,o=e.jsonName,r=e.localName;return(a,i,s)=>{const l=t(a,i[r]);l!==void 0&&(s[a.useProtoFieldName?n:o]=l)}}}}function Gu(e){const t=cs(e),n=e.name,o=e.jsonName,r=e.localName;if(e.oneof){const a=e.oneof.localName;return(i,s,l)=>{const c=s[a];c.case===r&&(l[i.useProtoFieldName?n:o]=t(i,c.value))}}if(e.presence!=Au){const a=e.presence==pu?`cannot encode ${e} to JSON: required field not set`:void 0;return(i,s,l)=>{const c=s[r];if(c!==void 0&&Object.prototype.hasOwnProperty.call(s,r))l[i.useProtoFieldName?n:o]=t(i,c);else if(a!==void 0)throw new Error(a)}}if(e.fieldKind=="enum"){const a=e.enum.values[0].number;return(i,s,l)=>{const c=s[r];(c!==a||i.alwaysEmitImplicit)&&(l[i.useProtoFieldName?n:o]=t(i,c))}}switch(e.scalar){case b.BOOL:return(a,i,s)=>{const l=i[r];(l!==!1||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.STRING:return(a,i,s)=>{const l=i[r];(l!==""||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.BYTES:return(a,i,s)=>{const l=i[r];(!(l instanceof Uint8Array)||l.byteLength>0||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.DOUBLE:case b.FLOAT:return(a,i,s)=>{const l=i[r];(!Object.is(l,0)||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};default:return(a,i,s)=>{const l=i[r];(l!=0||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))}}}function Nu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return cs(e);case"list":return ds(e);case"map":return us(e)}}function cs(e){switch(e.fieldKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function zo(e){const{toMessage:t}=Ge(e),n=bn(e.message);return(o,r)=>n(o,t(r))}function ds(e){const t=vu(e);return(n,o)=>{const r=o;if(r.length==0&&!n.alwaysEmitImplicit)return;const a=[];for(let i=0;i<r.length;i++)a.push(t(n,r[i]));return a}}function vu(e){switch(e.listKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function us(e){const t=Wu(e);return(n,o)=>{const r=o,a=Object.keys(r);if(a.length==0&&!n.alwaysEmitImplicit)return;const i={};for(let s=0;s<a.length;s++){const l=a[s];fe(i,l,t(n,r[l]))}return i}}function Wu(e){switch(e.mapKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function Lo(e){const t=e.enum;return t.typeName=="google.protobuf.NullValue"?(n,o)=>{if(typeof o!="number")throw Aa(t,o);return null}:(n,o)=>{var r,a;if(typeof o!="number")throw Aa(t,o);return n.enumAsInteger?o:(a=(r=t.value[o])===null||r===void 0?void 0:r.jsonName)!==null&&a!==void 0?a:o}}function Aa(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 $c(n);throw st(e,n)}}}function st(e,t){var n;return new Error(`cannot encode ${e} to JSON: ${(n=Ci(e,t))===null||n===void 0?void 0:n.message}`)}function yu(e,t,n,o,r){const a=o.$unknown;if(a===void 0)return;const i=new Set;for(let s=0;s<a.length;s++){const{no:l}=a[s];if(!i.has(l)){i.add(l);const c=n.getExtensionFor(r,l);if(!c)continue;const[u,h]=Gn(c,hu(o,c)),A=u[me],f=Nu(h)(t,A[h.localName]);f!==void 0&&(e[c.jsonName]=f)}}}function Iu(e,t){if(e.typeUrl==="")return{};const{registry:n}=t;let o,r;if(n&&(o=cu(e,n),o&&(r=n.getMessage(o.$typeName))),!r||!o)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);const a=Ei(r)?{value:bn(r)(t,o)}:bn(r)(t,o);return a["@type"]=e.typeUrl,a}function Xu(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 r=Math.abs(n).toString();r="0".repeat(9-r.length)+r,r.substring(3)==="000000"?r=r.substring(0,3):r.substring(6)==="000"&&(r=r.substring(0,6)),o+="."+r,n<0&&t==0&&(o="-"+o)}return o+"s"}function Yu(e){return e.paths.map(t=>{if(Ki(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 ms(e){const t={},n=Object.keys(e.fields);for(let o=0;o<n.length;o++){const r=n[o];fe(t,r,jo(e.fields[r]))}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 ms(e.kind.value);case"listValue":return hs(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function hs(e){return e.values.map(jo)}function Cu(e){const t=Number(e.seconds)*1e3;if(t<is||t>ss)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 Bu=2;function wu(e){return Object.assign(Object.assign({ignoreUnknownFields:!1,recursionLimit:100},e),{depth:0})}function Fu(e,t,n){return bs(e,Qu(t,e.typeName),n)}function bs(e,t,n){const o=ce(e);return ku(e,o,t,n),o}function ku(e,t,n,o){try{ft(e)(t,n,wu(o))}catch(r){throw kc(r)?new Error(`cannot decode ${r.field()} from JSON: ${r.message}`,{cause:r}):r}}var uo=new WeakMap;function ft(e){let t=uo.get(e);return t===void 0&&(t=Uu(e)),t}function Uu(e){const t=String(e),n=Ju(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 uo.set(e,i),i}const o=e.typeName,r=new Map,a=(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 f=0;f<A.length;f++){const E=A[f],V=s[E],X=r.get(E);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&&V===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,V,l)}else{const J=E.startsWith("[")&&E.endsWith("]")?(c=l.registry)===null||c===void 0?void 0:c.getExtension(E.substring(1,E.length-1)):void 0;if(J?.extendee.typeName==o){const[d,m,p]=Gn(J);fa(m)(d[me],V,l),bu(i,J,p())}if(J===void 0&&!l.ignoreUnknownFields)throw new Error(`cannot decode ${t} from JSON: key "${E}" is unknown`)}}l.depth--};uo.set(e,a);for(const i of e.fields){const s={read:fa(i),field:i,oneof:i.oneof,oneofScalarNullSkip:i.oneof!==void 0&&i.fieldKind=="scalar"};r.set(i.name,s).set(i.jsonName,s)}return a}function Ju(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n,o)=>Ou(t,n,o);case"google.protobuf.Timestamp":return(t,n)=>Du(t,n);case"google.protobuf.Duration":return(t,n)=>_u(t,n);case"google.protobuf.FieldMask":return(t,n)=>$u(t,n);case"google.protobuf.Struct":return(t,n,o)=>fs(t,n,o);case"google.protobuf.Value":return(t,n,o)=>Oo(t,n,o);case"google.protobuf.ListValue":return(t,n,o)=>Zs(t,n,o);default:if(at(e)){const t=e.fields[0],n=t.localName,o=t.scalar,r=t.longAsString,a=ps(t);return(i,s)=>{s===null?i[n]=Be(o,r):i[n]=a(s)}}return}}function fa(e){switch(e.fieldKind){case"scalar":return xu(e);case"enum":return Ku(e);case"message":return zu(e);case"list":return Lu(e);case"map":return Tu(e)}}function xu(e){const t=ps(e),n=e.localName;if(e.oneof){const r=e.oneof.localName;return(a,i)=>{a[r]={case:n,value:t(i)}}}const o=gs(e);return(r,a)=>{a===null?o(r):r[n]=t(a)}}function gs(e){const t=e.localName;if(e.presence!=Bu)return r=>{delete r[t]};if(e.fieldKind=="enum"){const r=e.enum.values[0].number;return a=>{a[t]=r}}const n=e.scalar,o=e.longAsString;return r=>{r[t]=Be(n,o)}}function Ku(e){const t=To(e.enum),n=Ho(e.enum),o=e.localName,r=e.enum.typeName!="google.protobuf.NullValue";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{if(l===null&&r){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 a=gs(e);return(i,s,l)=>{if(s===null&&r){a(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 zu(e){const t=e.localName,{toMessage:n,toLocal:o}=Ge(e),r=ft(e.message),a=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&&a){u.case===t&&(s[i]={case:void 0});return}const h=n(u.case===t?u.value:void 0);r(h,l,c),s[i]={case:t,value:o(h)}}}return(i,s,l)=>{if(s===null&&a){delete i[t];return}const c=n(i[t]);r(c,s,l),i[t]=o(c)}}function Lu(e){const t=e.localName,n=ju(e);return(o,r,a)=>{if(r===null)return;if(!Array.isArray(r))throw new Q(e,"expected Array, got "+te(r));const i=o[t];for(let s=0;s<r.length;s++){const l=n(r[s],a,i.length);l!==Zt&&i.push(l)}}}function ju(e){switch(e.listKind){case"scalar":{const t=Qo(e),n=He(e.scalar),o=Mo(e);return(r,a,i)=>{if(r===null)throw new Q(e,"list item must not be null");const s=t(r),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=To(e.enum),n=Ho(e.enum),o=e.enum.typeName!="google.protobuf.NullValue";return(r,a,i)=>{if(r===null&&o)throw new Q(e,"list item must not be null");const s=t(r,a.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}=Ge(e),o=ft(e.message),r=e.message.typeName!="google.protobuf.Value";return(a,i)=>{if(a===null&&r)throw new Q(e,"list item must not be null");const s=t(void 0);return o(s,a,i),n(s)}}}}function Tu(e){const t=e.localName,n=e.mapKey,o=Hu(n),r=He(n);let a,i,s=c=>c,l=!0;switch(e.mapKind){case"scalar":a=Qo(e),i=He(e.scalar),s=Mo(e);break;case"enum":{const c=To(e.enum);a=(u,h)=>c(u,h.ignoreUnknownFields),i=Ho(e.enum),l=e.enum.typeName!="google.protobuf.NullValue";break}case"message":{const{toMessage:c,toLocal:u}=Ge(e),h=ft(e.message);l=e.message.typeName!="google.protobuf.Value",a=(A,f)=>{const E=c(void 0);return h(E,A,f),u(E)};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],f=new Set,E=Object.keys(u);for(let V=0;V<E.length;V++){const X=E[V],J=u[X],d=o(X);if(f.has(d))throw new Q(e,`duplicate map key "${X}"`);if(f.add(d),J===null&&l)throw new Q(e,"map value must not be null");const m=a(J,h);if(m===Zt)continue;const p=r(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 To(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,r)=>{if(o===null)return t;switch(typeof o){case"number":if(Number.isInteger(o))return o;break;case"string":{const a=n.get(o);if(a!==void 0)return a;if(r)return Zt;break}}throw new Error(`cannot decode ${e} from JSON: ${te(o)}`)}}function Ho(e){if(e.open)return He(b.INT32);const t=e.values;return n=>t.some(o=>o.number===n)}function ps(e){const t=Qo(e),n=He(e.scalar),o=Mo(e);return r=>{const a=t(r),i=n(a);if(i!==!0)throw new Q(e,pe(e,a,i));return o(a)}}function Qo(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 As;case b.BYTES:return t=>{if(typeof t=="string"){if(t==="")return new Uint8Array(0);try{return ko(t)}catch(n){throw new Q(e,n instanceof Error?n.message:String(n))}}return t};default:return t=>t}}function Mo(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"?H.parse(n):n;case b.FIXED64:case b.UINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?H.uParse(n):n;default:return n=>n}}function Hu(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 As;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 As(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 Qu(e,t){let n;try{n=JSON.parse(e)}catch(o){const r=o instanceof Error?o.message:String(o);throw new Error(`cannot decode message ${t} from JSON: ${r}`,{cause:o})}return Mu(e,t),n}function Mu(e,t){const n=[];let o=!1,r=0;for(;r<e.length;)switch(e[r]){case"{":n.push(new Set),o=!0,r++;break;case"[":n.push(null),o=!1,r++;break;case"}":case"]":n.pop(),o=!1,r++;break;case",":o=n[n.length-1]!=null,r++;break;case":":o=!1,r++;break;case'"':{const a=r++;let i=!1;for(;r<e.length;){if(e[r]=="\\"){i=!0,r+=2;continue}if(e[r]=='"')break;r++}const s=r++,l=n[n.length-1];if(o&&l){const c=i?JSON.parse(e.substring(a,s+1)):e.substring(a+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:r++;break}}function Ou(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 r=t["@type"];if(typeof r!="string"||r=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);const a=r.includes("/")?r.substring(r.lastIndexOf("/")+1):r;if(!a.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(a);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${r} is not in the type registry`);const s=ce(i);if(Ei(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)}su(i,s,e)}function Du(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<is||o>ss)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=H.parse(o/1e3),e.nanos=0,n[7]&&(e.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function _u(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=H.parse(o),typeof n[2]!="string")return;const r=n[2]+"0".repeat(9-n[2].length);e.nanos=parseInt(r),(o<0||Object.is(o,-0))&&(e.nanos=-e.nanos)}function $u(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 Ki(n)}))}function fs(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 r=0;r<o.length;r++){const a=o[r],i=ce(os);Oo(i,t[a],n),fe(e.fields,a,i)}}function Oo(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:lo.NULL_VALUE};else if(Array.isArray(t)){const o=ce(mu);Zs(o,t,n),e.kind={case:"listValue",value:o}}else{const o=ce(uu);fs(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 Zs(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 r=ce(os);Oo(r,t[o],n),e.values.push(r)}}function Za(e){const t=S[e];return typeof t!="string"?e.toString():t[0].toLowerCase()+t.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var B=class dt extends Error{constructor(t,n=S.Unknown,o,r,a){super(Pu(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=r??[],this.cause=a}static from(t,n=S.Unknown){return t instanceof dt?t:t instanceof Error?t.name=="AbortError"||t.name=="TimeoutError"?new dt(t.message,S.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:r=>r===t.typeName?t:void 0}:t,o=[];for(const r of this.details){if("desc"in r){n.getMessage(r.desc.typeName)&&o.push(ce(r.desc,r.value));continue}const a=n.getMessage(r.type);if(a)try{o.push(Ht(a,r.value))}catch{}}return o}};function Pu(e,t){return e.length?`[${Za(t)}] ${e}`:`[${Za(t)}]`}function qu(e,t,n){try{const o=ko(e);return t?Ht(t,o,n):o}catch(o){throw B.from(o,S.DataLoss)}}function em(e,t){const n={};for(const o of e.methods){const r=t(o);r!=null&&(n[o.localName]=r)}return n}var cn=4294967295,Tn=cn,tm=1024;function nm(e,t,n){if(t!=null||(t=Tn),e!=null||(e=cn),n!=null||(n=tm),t<1||t>Tn)throw new B(`writeMaxBytes ${t} must be >= 1 and <= ${Tn}`,S.Internal);if(e<1||e>cn)throw new B(`readMaxBytes ${e} must be >= 1 and <= ${cn}`,S.Internal);return{readMaxBytes:e,writeMaxBytes:t,compressMinBytes:n}}function om(e,t){if(t>e)throw new B(`message size ${t} is larger than configured writeMaxBytes ${e}`,S.ResourceExhausted)}function Rs(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 B(o,S.ResourceExhausted)}}function rm(e){return new am(e)}var am=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 Rs(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 im(e,t,n){let{flags:o,data:r}=e;if((o&1)===1)throw new B("invalid envelope, already compressed",S.Internal);return t&&r.byteLength>=n&&(r=await t.compress(r),o=o|1),{data:r,flags:o}}async function sm(e,t,n){let{flags:o,data:r}=e;if((o&1)===1){if(!t)throw new B("received compressed envelope, but do not know how to decompress",S.Internal);r=await t.decompress(r,n),o=o^1}return{data:r,flags:o}}function lm(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 we=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(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},z=function(e){return this instanceof z?(this.v=e,this):new z(e)},Ve=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(f){return function(E){return Promise.resolve(E).then(f,h)}}function s(f,E){o[f]&&(r[f]=function(V){return new Promise(function(X,J){a.push([f,V,X,J])>1||l(f,V)})},E&&(r[f]=E(r[f])))}function l(f,E){try{c(o[f](E))}catch(V){A(a[0][3],V)}}function c(f){f.value instanceof z?Promise.resolve(f.value.v).then(u,h):A(a[0][2],f)}function u(f){l("next",f)}function h(f){l("throw",f)}function A(f,E){f(E),a.shift(),a.length&&l(a[0][0],a[0][1])}},cm=function(e){var t,n;return t={},o("next"),o("throw",function(r){throw r}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(r,a){t[r]=e[r]?function(i){return(n=!n)?{value:z(e[r](i)),done:!1}:a?a(i):i}:a}};function dm(e,...t){const[n,o,r]=um(t);let a=e,i;return r?.propagateDownStreamError===!0&&(a=i=Es(a)),a=dn(a,...n,{propagateDownStreamError:!1}),o(a).catch(s=>i?i.abort(s).then(()=>Promise.reject(s)):Promise.reject(s))}function um(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,e.pop(),t]}function dn(e,...t){return Ve(this,arguments,function*(){var o;const[r,a]=mm(t);let i;const s=e[Symbol.asyncIterator]();let l={[Symbol.asyncIterator](){return s}};a?.propagateDownStreamError===!0&&(l=i=Es(l));for(const u of r)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{a?.propagateDownStreamError===!0&&((o=s.return)===null||o===void 0||o.call(s).catch(()=>{}))}})}function mm(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,t]}function Ra(e,t,n){return t===void 0||n===void 0?function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const h=s;yield yield z({flags:0,data:e.serialize(h)})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}:function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const h=s;let A,f=0;h.end?(f=f|t,A=n.serialize(h.value)):A=e.serialize(h.value),yield yield z({flags:f,data:A})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}}function Ea(e,t,n){return n&&t!==void 0?function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;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){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}:function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;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 B("unexpected end flag",S.InvalidArgument);continue}yield yield z(e.parse(A))}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}}function Sa(e,t){return function(n){return Ve(this,arguments,function*(){var o,r,a,i;try{for(var s=!0,l=we(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z(im(i,e,t)))}catch(u){r={error:u}}finally{try{!s&&!o&&(a=l.return)&&(yield z(a.call(l)))}finally{if(r)throw r.error}}})}}function Va(e,t){return function(n){return Ve(this,arguments,function*(){var o,r,a,i;try{for(var s=!0,l=we(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z(sm(i,e,t)))}catch(u){r={error:u}}finally{try{!s&&!o&&(a=l.return)&&(yield z(a.call(l)))}finally{if(r)throw r.error}}})}}function Ga(){return function(e){return Ve(this,arguments,function*(){var t,n,o,r;try{for(var a=!0,i=we(e),s;s=yield z(i.next()),t=s.done,!t;a=!0){r=s.value,a=!1;const{flags:l,data:c}=r;yield yield z(lm(l,c))}}catch(l){n={error:l}}finally{try{!a&&!t&&(o=i.return)&&(yield z(o.call(i)))}finally{if(n)throw n.error}}})}}function Na(e){return function(t){return Ve(this,arguments,function*(){var n,o,r,a;const i=rm(e);try{for(var s=!0,l=we(t),c;c=yield z(l.next()),n=c.done,!n;s=!0){a=c.value,s=!1;const u=a;for(const h of i.decode(u))yield yield z(h)}}catch(u){o={error:u}}finally{try{!s&&!n&&(r=l.return)&&(yield z(r.call(l)))}finally{if(o)throw o.error}}if(i.byteLength>0)throw new B("protocol error: incomplete envelope",S.InvalidArgument)})}}function Es(e){const t=e[Symbol.asyncIterator]();if(t.throw===void 0)throw new Error("AsyncIterable does not implement throw");const n=t;let o,r,a={next(){return r=n.next().finally(()=>{r=void 0}),r},throw(s){return n.throw(s)}};t.return!==void 0&&(a=Object.assign(Object.assign({},a),{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 r?(o={reason:s,state:r.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,a}}}function Ss(e){return Ve(this,arguments,function*(){yield z(yield*cm(we(e)))})}var Vs=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(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},Rt=function(e){return this instanceof Rt?(this.v=e,this):new Rt(e)},hm=function(e){var t,n;return t={},o("next"),o("throw",function(r){throw r}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(r,a){t[r]=e[r]?function(i){return(n=!n)?{value:Rt(e[r](i)),done:!1}:a?a(i):i}:a}},bm=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(f){return function(E){return Promise.resolve(E).then(f,h)}}function s(f,E){o[f]&&(r[f]=function(V){return new Promise(function(X,J){a.push([f,V,X,J])>1||l(f,V)})},E&&(r[f]=E(r[f])))}function l(f,E){try{c(o[f](E))}catch(V){A(a[0][3],V)}}function c(f){f.value instanceof Rt?Promise.resolve(f.value.v).then(u,h):A(a[0][2],f)}function u(f){l("next",f)}function h(f){l("throw",f)}function A(f,E){f(E),a.shift(),a.length&&l(a[0][0],a[0][1])}};function ve(e,t){return em(e,n=>{switch(n.methodKind){case"unary":return gm(t,n);case"server_streaming":return pm(t,n);case"client_streaming":return Am(t,n);case"bidi_streaming":return fm(t,n);default:return null}})}function gm(e,t){return async(n,o)=>{var r,a;const i=await e.unary(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);return(r=o?.onHeader)===null||r===void 0||r.call(o,i.header),(a=o?.onTrailer)===null||a===void 0||a.call(o,i.trailer),i.message}}function pm(e,t){return(n,o)=>Gs(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,Ss([n]),o?.contextValues),o)}function Am(e,t){return async(n,o)=>{var r,a,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 f=!0,E=Vs(u.message),V;V=await E.next(),r=V.done,!r;f=!0)s=V.value,f=!1,h=s,A++}catch(X){a={error:X}}finally{try{!f&&!r&&(i=E.return)&&await i.call(E)}finally{if(a)throw a.error}}if(!h)throw new B("protocol error: missing response message",S.Unimplemented);if(A>1)throw new B("protocol error: received extra messages for client streaming method",S.Unimplemented);return(c=o?.onTrailer)===null||c===void 0||c.call(o,u.trailer),h}}function fm(e,t){return(n,o)=>Gs(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues),o)}function Gs(e,t){const n=(function(){return bm(this,arguments,function*(){var o,r;const a=yield Rt(e);(o=t?.onHeader)===null||o===void 0||o.call(t,a.header),yield Rt(yield*hm(Vs(a.message))),(r=t?.onTrailer)===null||r===void 0||r.call(t,a.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function Zm(...e){const t=new AbortController,n=e.filter(r=>r!==void 0).concat(t.signal);for(const r of n){if(r.aborted){o.apply(r);break}r.addEventListener("abort",o)}function o(){t.signal.aborted||t.abort(Lt(this));for(const r of n)r.removeEventListener("abort",o)}return t}function Rm(e){const t=new AbortController,n=()=>{t.abort(new B("the operation timed out",S.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 va(){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 Em(e){const t=new Headers,n=new TextDecoder().decode(e).split(`\r
|
|
50
|
+
`}var S;(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"})(S||(S={}));function Vo(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 hc(){const e=this.buf;let t=this.pos,n=0,o=0;for(let a=0;a<28;a+=7){const i=e[t++];if(n|=(i&127)<<a,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}const r=e[t++];if(n|=(r&15)<<28,o=(r&112)>>4,(r&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}for(let a=3;a<=31;a+=7){const i=e[t++];if(o|=(i&127)<<a,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}throw new Error("invalid varint")}var sn=4294967296;function Xr(e){const t=e[0]==="-";t&&(e=e.slice(1));const n=1e6;let o=0,r=0;function a(i,s){const l=Number(e.slice(i,s));r*=n,o=o*n+l,o>=sn&&(r=r+(o/sn|0),o=o%sn)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?Zi(o,r):Go(o,r)}function bc(e,t){let n=Go(e,t);const o=n.hi&2147483648;o&&(n=Zi(n.lo,n.hi));const r=fi(n.lo,n.hi);return o?"-"+r:r}function fi(e,t){if({lo:e,hi:t}=gc(e,t),t<=2097151)return String(sn*t+e);const n=e&16777215,o=(e>>>24|t<<8)&16777215,r=t>>16&65535;let a=n+o*6777216+r*6710656,i=o+r*8147497,s=r*2;const l=1e7;return a>=l&&(i+=Math.floor(a/l),a%=l),i>=l&&(s+=Math.floor(i/l),i%=l),s.toString()+Yr(i)+Yr(a)}function gc(e,t){return{lo:e>>>0,hi:t>>>0}}function Go(e,t){return{lo:e|0,hi:t|0}}function Zi(e,t){return t=~t,e?e=~e+1:t+=1,Go(e,t)}var Yr=e=>{const t=String(e);return"0000000".slice(t.length)+t};function pc(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 Ac(){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 H=fc();function fc(){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"),r=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(a){const i=typeof a=="bigint"?a:BigInt(a);if(i>n||i<t)throw new Error(`invalid int64: ${a}`);return i},uParse(a){const i=typeof a=="bigint"?a:BigInt(a);if(i>r||i<o)throw new Error(`invalid uint64: ${a}`);return i},enc(a){return e.setBigInt64(0,this.parse(a),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(a){return e.setBigInt64(0,this.uParse(a),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(a,i){return e.setInt32(0,a,!0),e.setInt32(4,i,!0),e.getBigInt64(0,!0)},uDec(a,i){return e.setInt32(0,a,!0),e.setInt32(4,i,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),Cr(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),Br(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),Cr(t),Xr(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),Br(t),Xr(t)},dec(t,n){return bc(t,n)},uDec(t,n){return fi(t,n)}}}function Cr(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function Br(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function Be(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":H.zero;case b.BYTES:return new Uint8Array(0);default:return 0}}function Zc(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 Ri=2,me=Symbol.for("reflect unsafe local");function Rc(e,t){const n=e[t.localName].case;return n===void 0?n:t.fields.find(o=>o.localName===n)}function Ec(e,t){const n=t.localName;if(t.oneof)return e[t.oneof.localName].case===n;if(t.presence!=Ri)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!Zc(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 Sc(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 Vc(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 Nc(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!=Ri)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]=Be(t.scalar,t.longAsString);break}}function Te(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function No(e,t){var n,o,r,a;if(Te(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)&&((r=i.enum)===null||r===void 0?void 0:r.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function vo(e,t){var n,o,r,a;if(Te(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)&&((r=i.enum)===null||r===void 0?void 0:r.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function Wo(e,t){return Te(e)&&me in e&&"desc"in e&&Te(e.desc)&&e.desc.kind==="message"&&(t===void 0||e.desc.typeName==t.typeName)}function vc(e){return Si(e.$typeName)}function at(e){const t=e.fields[0];return Si(e.typeName)&&t!==void 0&&t.fieldKind=="scalar"&&t.name=="value"&&t.number==1}function Ei(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 Wc=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 Si(e){return Wc.has(e)}var yc=999,Ic=998,Vi=2;function ce(e,t){return Vo(t,e)?t:Gi(e)(t)}var wr=new WeakMap;function Gi(e){let t=wr.get(e);return t===void 0&&(t=Xc(e),wr.set(e,t)),t}var no=0,Ni=1,vi=2,Wi=3;function Xc(e){const t=e.typeName,{properties:n,prototype:o}=Yc(e);return r=>{let a;o!==void 0?(a=Object.create(o),a.$typeName=t):a={$typeName:t};for(let i=0;i<n.length;i++){const s=n[i],l=s.name,c=r?.[l];switch(s.kind){case no:c!=null?a[l]=s.convert!==void 0?s.convert(c):c:s.constant!==void 0&&(a[l]=s.constant);break;case Ni:a[l]=s.convert!==void 0&&Array.isArray(c)?c.map(s.convert):c??[];break;case vi:if(s.convert===void 0||!Te(c))a[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]]));a[l]=u}break;case Wi:{const u=c;if(u?.case!=null){const h=s.convert.get(u.case);if(h!==void 0){a[l]={case:u.case,value:h(u.value)};break}}a[l]={case:void 0};break}}}return a}}function Yc(e){var t,n;const o=[],r={},a=Bc(e);for(const i of e.members){const s=i.localName;if(i.kind=="oneof"){o.push({name:s,kind:Wi,constant:void 0,convert:Cc(i)});continue}switch(i.fieldKind){case"message":o.push({name:s,kind:no,constant:void 0,convert:ln(i)});break;case"list":o.push({name:s,kind:Ni,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:vi,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=wc(i);o.push({name:s,kind:no,constant:i.presence==Vi?l:void 0,convert:i.fieldKind=="scalar"&&i.scalar==b.BYTES?kt:void 0}),a&&(r[s]=l);break}}}return{properties:o,prototype:a?r:void 0}}function Cc(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??(r=>r))}return t}function ln(e){if(e.fieldKind=="message"&&!e.oneof&&at(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=>!Te(o)||Vo(o,t)?o:(n!=null||(n=Gi(t)),n(o))}function kt(e){return Array.isArray(e)?new Uint8Array(e):e}function Bc(e){switch(e.file.edition){case yc:return!1;case Ic:return!0;default:return e.fields.some(t=>t.presence!=Vi&&t.fieldKind!="message"&&!t.oneof)}}function wc(e){const t=e.getDefaultValue();return t!==void 0?e.fieldKind=="scalar"&&e.longAsString?t.toString():t:e.fieldKind=="scalar"?Be(e.scalar,e.longAsString):e.enum.values[0].number}var Fc=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],Q=class extends Error{constructor(e,t,n="FieldValueInvalidError"){super(t),this.name=n,this.field=()=>e}};function kc(e){return e instanceof Error&&Fc.includes(e.name)&&"field"in e&&typeof e.field=="function"}var oo;function Uc(e){var t;oo=Object.assign(Object.assign({},e),{encodeUtf8Into:(t=e.encodeUtf8Into)!==null&&t!==void 0?t:yi(e.encodeUtf8.bind(e))})}function yo(){if(!oo){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 r={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&&(r.encodeUtf8Into=t.encodeInto.bind(t));const a=String.prototype.isWellFormed;a&&(r.checkUtf8=i=>a.call(i)),Uc(r)}return oo}function yi(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 Ii=class{constructor(e){this.stackPos=[],this.encodeUtf8Into=e?yi(e):yo().encodeUtf8Into,this.buffer=Xi,this.viewCache=xc,this.pos=0}ensureCapacity(e){const t=this.pos+e;if(t>this.buffer.length){let n=this.buffer.length||Jc;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(Yt),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-Yt,n=xn(t);return n>Yt&&(this.ensureCapacity(n-Yt),this.buffer.copyWithin(e+n,e+Yt,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(Fr(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<=Yi){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=xn(t),o=this.buffer,r=this.pos,{written:a}=this.encodeUtf8Into(e,o.subarray(r+n)),i=xn(a);return i!=n&&o.copyWithin(r+i,r+n,r+n+a),this.uint32(a),this.pos+=a,this}float(e){return Kc(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 Fr(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=H.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=H.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=H.enc(e);return this.writeVarint64(t.lo,t.hi)}sint64(e){const t=H.enc(e),n=t.hi>>31,o=t.lo<<1^n,r=(t.hi<<1|t.lo>>>31)^n;return this.writeVarint64(o,r)}uint64(e){const t=H.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 r=e>>>28&15|(t&7)<<4,a=t>>3!=0;if(n[o++]=(a?r|128:r)&255,!a)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}},Jc=128,Yt=1,Xi=new Uint8Array(0),xc=new DataView(Xi.buffer),Yi=32;function xn(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}var xt=class{constructor(e,t=yo().decodeUtf8){this.decodeUtf8=t,this.varint64Lo=0,this.varint64Hi=0,this.varint64=hc,this.uint32=Ac,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,r=t&7;if(o<=0||r>5)throw new Error("illegal tag: field no "+o+" wire type "+r);return[o,r]}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 r=this.uint32();this.pos+=r;break;case _.StartGroup:if(n<=0)throw new Error("maximum recursion depth reached");for(;;){const[a,i]=this.tag();if(i===_.EndGroup){if(t!==void 0&&a!==t)throw new Error("invalid end group tag");break}this.skip(i,a,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(),H.dec(this.varint64Lo,this.varint64Hi)}uint64(){return this.varint64(),H.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,H.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 H.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return H.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<=Yi){const o=new Array(n);for(let r=0;r<n;r++){const a=t[r];if(a>127)return this.decodeUtf8(t,e);o[r]=a}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 Fr(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 Kc(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 Ci(e,t){const n=e.fieldKind=="list"?No(t,e):e.fieldKind=="map"?vo(t,e):Io(e,t);if(n===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${wi(e)}, got ${te(t)}`;break;case"map":o=`expected ${Fi(e)}, got ${te(t)}`;break;default:o=pe(e,t,n)}return new Q(e,o)}function kr(e,t,n){const o=Io(e,n);if(o!==!0)return new Q(e,`list item #${t+1}: ${pe(e,n,o)}`)}function zc(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 r=Io(e,n);if(r!==!0)return new Q(e,`map entry ${te(t)}: ${pe(e,n,r)}`)}function Io(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):Wo(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:yo().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 H.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 H.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 ${Lc(e.scalar)}`+n:e.enum!==void 0?`expected ${e.enum.toString()}`+n:`expected ${Bi(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})`:No(e)?wi(e.field()):vo(e)?Fi(e.field()):Wo(e)?Bi(e.desc):Vo(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 Bi(e){return`ReflectMessage (${e.typeName})`}function wi(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 Fi(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 Lc(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 jc=0;function Ge(e){if(Tc(e))return{toMessage:n=>Xo(n),toLocal:n=>Yo(n)};if(e.fieldKind=="message"&&!e.oneof&&at(e.message)){const n=e.message,o=n.fields[0].localName;return{toMessage:r=>{const a=ce(n);return r!==void 0&&(a[o]=r),a},toLocal:r=>r[o]}}const t=e.message;return{toMessage:n=>n===void 0?ce(t):n,toLocal:n=>n}}function Tc(e){return e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"}function Xo(e){const t={$typeName:"google.protobuf.Struct",fields:{}};if(Te(e))for(const n of Object.keys(e))fe(t.fields,n,Ui(e[n]));return t}function Yo(e){const t={};for(const n of Object.keys(e.fields))fe(t,n,ki(e.fields[n]));return t}function ki(e){switch(e.kind.case){case"structValue":return Yo(e.kind.value);case"listValue":return e.kind.value.values.map(ki);case"nullValue":case void 0:return null;default:return e.kind.value}}function Ui(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:jc};else if(Array.isArray(e)){const n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(const o of e)n.values.push(Ui(o));t.kind={case:"listValue",value:n}}else t.kind={case:"structValue",value:Xo(e)};break}return t}function Hc(e,t,n=!0){return new Ji(e,t,n)}var Ur=new WeakMap,Ji=class{get sortedFields(){const e=Ur.get(this.desc);if(e)return e;const t=this.desc.fields.concat().sort((n,o)=>n.number-o.number);return Ur.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 Ct(this.message,e),Rc(this.message,e)}isSet(e){return Ct(this.message,e),Ec(this.message,e)}clear(e){Ct(this.message,e),Nc(this.message,e)}get(e){Ct(this.message,e);const t=Sc(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 Qc(e,t,this.check)),n;case"map":let o=this.maps.get(e);return(!o||o[me]!==t)&&this.maps.set(e,o=new Mc(e,t,this.check)),o;case"message":return Bo(e,t,this.check);case"scalar":return t===void 0?Be(e.scalar,!1):wo(e,t);case"enum":return t??e.enum.values[0].number}}set(e,t){if(Ct(this.message,e),this.check){const o=Ci(e,t);if(o)throw o}let n;e.fieldKind=="message"?n=Co(e,t):vo(t)||No(t)?n=t[me]:n=Fo(e,t),Vc(this.message,e,n)}getUnknown(){return this.message.$unknown}setUnknown(e){this.message.$unknown=e}};function Ct(e,t){if(t.parent.typeName!==e.$typeName)throw new Q(t,`cannot use ${t.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var Qc=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:zn(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=kr(this._field,e,t);if(n)throw n}this._arr[e]=Jr(this._field,t)}add(e){if(this.check){const t=kr(this._field,this._arr.length,e);if(t)throw t}this._arr.push(Jr(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 zn(this._field,e,this.check)}*entries(){for(let e=0;e<this._arr.length;e++)yield[e,zn(this._field,this._arr[e],this.check)]}},Mc=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=zc(this._field,e,t);if(n)throw n}return fe(this.obj,_t(e),Oc(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=Ln(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 xr(e,this._field.mapKey)}*entries(){for(const e of Object.entries(this.obj))yield[xr(e[0],this._field.mapKey),Ln(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 Ln(this._field,e,this.check)}forEach(e,t){for(const n of this.entries())e.call(t,n[1],n[0],this)}};function Co(e,t){return Wo(t)?vc(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 Bo(e,t,n){return t!==void 0&&(at(e.message)&&!e.oneof&&e.fieldKind=="message"?t={$typeName:e.message.typeName,value:wo(e.message.fields[0],t)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&Te(t)&&(t=Xo(t))),new Ji(e.message,t,n)}function Jr(e,t){return e.listKind=="message"?Co(e,t):Fo(e,t)}function zn(e,t,n){return e.listKind=="message"?Bo(e,t,n):wo(e,t)}function Oc(e,t){return e.mapKind=="message"?Co(e,t):Fo(e,t)}function Ln(e,t,n){return e.mapKind=="message"?Bo(e,t,n):t}function _t(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function xr(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 H.uParse(e)}catch{}break;default:try{return H.parse(e)}catch{}break}return e}function wo(e,t){switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=H.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=H.uParse(t));break}return t}function Fo(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=H.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=H.uParse(t));break}return t}var Kr=Uint8Array.prototype.setFromBase64;function ko(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 r=-1;if(Kr)try{const a=Kr.call(o,e);a.read==t&&(r=a.written)}catch{}return r<0&&(r=Dc(o,e)),r==n?o:o.subarray(0,r)}function Dc(e,t){const n=Pc();let o=0,r=0,a,i=0;for(let s=0;s<t.length;s++){if(a=n[t.charCodeAt(s)],a===void 0)switch(t[s]){case"=":r=0;case`
|
|
51
|
+
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(r){case 0:i=a,r=1;break;case 1:e[o++]=i<<2|(a&48)>>4,i=a,r=2;break;case 2:e[o++]=(i&15)<<4|(a&60)>>2,i=a,r=3;break;case 3:e[o++]=(i&3)<<6|a,r=0;break}}if(r==1)throw Error("invalid base64 string");return o}var zr=Uint8Array.prototype.toBase64,_c={std:{alphabet:"base64",omitPadding:!1},std_raw:{alphabet:"base64",omitPadding:!0},url:{alphabet:"base64url",omitPadding:!0}};function $c(e,t="std"){if(zr)return zr.call(e,_c[t]);const n=xi(t),o=t=="std";let r="",a=0,i,s=0;for(let l=0;l<e.length;l++)switch(i=e[l],a){case 0:r+=n[i>>2],s=(i&3)<<4,a=1;break;case 1:r+=n[s|i>>4],s=(i&15)<<2,a=2;break;case 2:r+=n[s|i>>6],r+=n[i&63],a=0;break}return a&&(r+=n[s],o&&(r+="=",a==1&&(r+="="))),r}var $t,Lr,st;function xi(e){return $t||($t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),Lr=$t.slice(0,-2).concat("-","_")),e=="url"?Lr:$t}function Pc(){if(!st){st=[];const e=xi("std");for(let t=0;t<e.length;t++)st[e[t].charCodeAt(0)]=t;st[45]=e.indexOf("+"),st[95]=e.indexOf("/")}return st}function ft(e){let t=!1;const n=[];for(let o=0;o<e.length;o++){let r=e.charAt(o);switch(r){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(r),t=!1;break;default:t&&(t=!1,r=r.toUpperCase()),n.push(r);break}}return n.join("")}function Ki(e){return e.replace(/[A-Z]/g,t=>"_"+t.toLowerCase())}var qc=new Set(["constructor","toString","toJSON","valueOf"]);function Kt(e){return qc.has(e)?e+"$":e}function Uo(e){for(const t of e.field)Jt(t,"jsonName")||(t.jsonName=ft(t.name));e.nestedType.forEach(Uo)}function ed(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 td(e,t){switch(e){case b.STRING:return t;case b.BYTES:{const n=nd(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 H.parse(t);case b.UINT64:case b.FIXED64:return H.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 nd(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 r=this.tail.substring(0,o);return this.tail=this.tail.substring(o),r}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,r=n.take(2);if(r===!1)return!1;const a=parseInt(o+r,8);if(Number.isNaN(a))return!1;t.push(a);break}case"x":{const o=n.c,r=n.take(2);if(r===!1)return!1;const a=parseInt(o+r,16);if(Number.isNaN(a))return!1;t.push(a);break}case"u":{const o=n.c,r=n.take(4);if(r===!1)return!1;const a=parseInt(o+r,16);if(Number.isNaN(a))return!1;const i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,a,!0),t.push(i[0],i[1],i[2],i[3]);break}case"U":{const o=n.c,r=n.take(8);if(r===!1)return!1;const a=H.uEnc(o+r),i=new Uint8Array(8),s=new DataView(i.buffer);s.setInt32(0,a.lo,!0),s.setInt32(4,a.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*ro(e){switch(e.kind){case"file":for(const t of e.messages)yield t,yield*ro(t);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(const t of e.nestedMessages)yield t,yield*ro(t);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function zi(...e){const t=od();if(!e.length)return t;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(const o of e[0].file)Qr(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||a.has(c))continue;const u=r(c);if(!u)throw new Error(`Unable to resolve ${c}, imported by ${s.name}`);"kind"in u?t.addFile(u,!1,!0):(a.add(u.name),l.push(u))}return l.concat(...l.map(i))};var n=i;const o=e[0],r=e[1],a=new Set;for(const s of[o,...i(o)].reverse())Qr(s,t)}else for(const o of e)for(const r of o.files)t.addFile(r);return t}function od(){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,r,a){if(n.set(o.proto.name,o),!r)for(const i of ro(o))this.add(i);if(a)for(const i of o.dependencies)this.addFile(i,r,a)},add(o){if(o.kind=="extension"){let r=t.get(o.extendee.typeName);r||t.set(o.extendee.typeName,r=new Map),r.set(o.number,o)}e.set(o.typeName,o)},get(o){return e.get(o)},getFile(o){return n.get(o)},getMessage(o){const r=e.get(o);return r?.kind=="message"?r:void 0},getEnum(o){const r=e.get(o);return r?.kind=="enum"?r:void 0},getExtension(o){const r=e.get(o);return r?.kind=="extension"?r:void 0},getExtensionFor(o,r){var a;return(a=t.get(o.typeName))===null||a===void 0?void 0:a.get(r)},getService(o){const r=e.get(o);return r?.kind=="service"?r:void 0}}}var rd=998,ad=999,id=9999,sd=9,zt=10,Ut=11,ld=12,jr=14,Jo=3,cd=2,Tr=1,dd=0,jn=1,Hr=2,ud=3,md=1,hd=2,bd=1,gd=2,pd=1002,Li={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 Qr(e,t){var n,o;const r={kind:"file",proto:e,deprecated:(o=(n=e.options)===null||n===void 0?void 0:n.deprecated)!==null&&o!==void 0?o:!1,edition:Rd(e),name:e.name.replace(/\.proto$/,""),dependencies:Ed(e,t),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},a=new Map,i={get(s){return a.get(s)},add(s){var l;be(((l=s.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),a.set(s.typeName,s)}};for(const s of e.enumType)ji(s,r,void 0,t);for(const s of e.messageType)Ti(s,r,void 0,t,i);for(const s of e.service)Ad(s,r,t);ao(r,t);for(const s of a.values())io(s,t,i);for(const s of r.messages)io(s,t,i),ao(s,t);t.addFile(r,!0)}function ao(e,t){switch(e.kind){case"file":for(const n of e.proto.extension){const o=so(n,e,t);e.extensions.push(o),t.add(o)}break;case"message":for(const n of e.proto.extension){const o=so(n,e,t);e.nestedExtensions.push(o),t.add(o)}for(const n of e.nestedMessages)ao(n,t);break}}function io(e,t,n){const o=e.proto.oneofDecl.map(a=>Zd(a,e)),r=new Set;for(const a of e.proto.field){const i=Nd(a,o),s=so(a,e,t,i,n);e.fields.push(s),e.field[s.localName]=s,i===void 0?e.members.push(s):(i.fields.push(s),r.has(i)||(r.add(i),e.members.push(i)))}for(const a of o.filter(i=>r.has(i)))e.oneofs.push(a);for(const a of e.nestedMessages)io(a,t,n)}function ji(e,t,n,o){var r,a,i,s,l,c;const u=Sd(e.name,e.value),h={kind:"enum",proto:e,deprecated:(a=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&a!==void 0?a:!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=Id(h),o.add(h);for(const f of e.value){const p=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:p,localName:Kt(u==null?p:p.substring(u.length)),number:f.number,jsonName:(l=Vd(f))!==null&&l!==void 0?l:p,toString(){return`enum value ${h.typeName}.${p}`}})}((c=n?.nestedEnums)!==null&&c!==void 0?c:t.enums).push(h)}function Ti(e,t,n,o,r){var a,i,s,l;const c={kind:"message",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.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?r.add(c):(((l=n?.nestedMessages)!==null&&l!==void 0?l:t.messages).push(c),o.add(c));for(const u of e.enumType)ji(u,t,c,o);for(const u of e.nestedType)Ti(u,t,c,o,r)}function Ad(e,t,n){var o,r;const a={kind:"service",proto:e,deprecated:(r=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,file:t,name:e.name,typeName:En(e,void 0,t),methods:[],method:{},toString(){return`service ${this.typeName}`}};t.services.push(a),n.add(a);for(const i of e.method){const s=fd(i,a,n);a.methods.push(s),a.method[s.localName]=s}}function fd(e,t,n){var o,r,a,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(Ce(e.inputType)),c=n.getMessage(Ce(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:(r=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!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=(a=e.options)===null||a===void 0?void 0:a.idempotencyLevel)!==null&&i!==void 0?i:dd,toString(){return`rpc ${t.typeName}.${u}`}}}function Zd(e,t){return{kind:"oneof",proto:e,deprecated:!1,parent:t,fields:[],name:e.name,localName:Kt(ft(e.name)),toString(){return`oneof ${t.typeName}.${this.name}`}}}function so(e,t,n,o,r){var a,i,s;const l=r===void 0,c={kind:"field",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:vd(e,o,l,t),utf8Validation:Xd(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 R=t.kind=="file"?t:t.file,V=t.kind=="file"?void 0:t,X=En(e,V,R);c.kind="extension",c.file=R,c.parent=V,c.oneof=void 0,c.typeName=X,c.jsonName=`[${X}]`,u=()=>`extension ${X}`;const J=n.getMessage(Ce(e.extendee));be(J,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),c.extendee=J}else{const R=t;be(R.kind=="message"),c.parent=R,c.oneof=o,c.localName=o?ft(e.name):Kt(ft(e.name)),c.jsonName=e.jsonName,u=()=>`field ${R.typeName}.${e.name}`}Object.defineProperty(c,"toString",{value:u,writable:!0,enumerable:!0,configurable:!0});const h=e.label,f=e.type,p=(s=e.options)===null||s===void 0?void 0:s.jstype;if(h===Jo){const R=f==Ut?r?.get(Ce(e.typeName)):void 0;if(R){c.fieldKind="map";const{key:V,value:X}=yd(R);return c.mapKey=V.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 Ut:case zt:c.listKind="message",c.message=n.getMessage(Ce(e.typeName)),be(c.message),c.delimitedEncoding=Mr(e,t);break;case jr:c.listKind="enum",c.enum=n.getEnum(Ce(e.typeName)),be(c.enum);break;default:c.listKind="scalar",c.scalar=f,c.longAsString=p==Tr;break}return c.packed=Wd(e,t),c}switch(f){case Ut:case zt:c.fieldKind="message",c.message=n.getMessage(Ce(e.typeName)),be(c.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.delimitedEncoding=Mr(e,t),c.getDefaultValue=()=>{};break;case jr:{const R=n.getEnum(Ce(e.typeName));be(R!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.fieldKind="enum",c.enum=n.getEnum(Ce(e.typeName)),c.getDefaultValue=()=>Jt(e,"defaultValue")?ed(R,e.defaultValue):void 0;break}default:c.fieldKind="scalar",c.scalar=f,c.longAsString=p==Tr,c.getDefaultValue=()=>Jt(e,"defaultValue")?td(f,e.defaultValue):void 0;break}return c}function Rd(e){switch(e.syntax){case"":case"proto2":return rd;case"proto3":return ad;case"editions":if(e.edition===id)return pd;if(e.edition in Li)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function Ed(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 Sd(e,t){const n=Gd(e)+"_";for(const o of t){if(!o.name.toLowerCase().startsWith(n))return;const r=o.name.substring(n.length);if(r.length==0||/^\d/.test(r))return}return n}function Vd(e){var t,n;let a;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?a=s.string():s.skip(c,l)}}return a}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 Ce(e){return e.startsWith(".")?e.substring(1):e}function Nd(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 vd(e,t,n,o){if(e.label==cd)return ud;if(e.label==Jo)return Hr;if(t||e.proto3Optional||n)return jn;const r=qe("fieldPresence",{proto:e,parent:o});return r==Hr&&(e.type==Ut||e.type==zt)?jn:r}function Wd(e,t){if(e.label!=Jo)return!1;switch(e.type){case sd:case ld:case zt:case Ut:return!1}const n=e.options;return n&&Jt(n,"packed")?n.packed:md==qe("repeatedFieldEncoding",{proto:e,parent:t})}function yd(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 Id(e){var t;return bd==qe("enumType",{proto:e.proto,parent:(t=e.parent)!==null&&t!==void 0?t:e.file})}function Mr(e,t){return e.type==zt?!0:hd==qe("messageEncoding",{proto:e,parent:t})}function Xd(e,t){return gd==qe("utf8Validation",{proto:e,parent:t})}function qe(e,t){var n,o;const r=(n=t.proto.options)===null||n===void 0?void 0:n.features;if(r){const a=r[e];if(a!=0)return a}if("kind"in t){if(t.kind=="message")return qe(e,(o=t.parent)!==null&&o!==void 0?o:t.file);const a=Li[t.edition];if(!a)throw new Error(`feature default for edition ${t.edition} not found`);return a[e]}return qe(e,t.parent)}function be(e,t){if(!e)throw new Error(t)}function Yd(e){const t=Cd(e);return t.messageType.forEach(Uo),zi(t,()=>{}).getFile(t.name)}function Cd(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(Hi),enumType:e.enumType.map(Qi)}))}function Hi(e){var t,n,o,r,a,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(Bd))!==null&&n!==void 0?n:[],extension:[],nestedType:(r=(o=e.nestedType)===null||o===void 0?void 0:o.map(Hi))!==null&&r!==void 0?r:[],enumType:(i=(a=e.enumType)===null||a===void 0?void 0:a.map(Qi))!==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 Bd(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?wd(e.options):void 0}))}function wd(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(r=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},r)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function Qi(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,r)=>o.nestedMessages[r],e.messages[t])}var Fd=Yd({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}]}]}),kd=v(Fd,1),Or;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(Or||(Or={}));var Dr;(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"})(Dr||(Dr={}));var _r;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(_r||(_r={}));var $r;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})($r||($r={}));var Pr;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Pr||(Pr={}));var qr;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(qr||(qr={}));var ea;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(ea||(ea={}));var ta;(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"})(ta||(ta={}));var na;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(na||(na={}));var oa;(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"})(oa||(oa={}));var ra;(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"})(ra||(ra={}));var aa;(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"})(aa||(aa={}));var ia;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(ia||(ia={}));var sa;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(sa||(sa={}));var la;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(la||(la={}));var ca;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(ca||(ca={}));var da;(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"})(da||(da={}));var ua;(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"})(ua||(ua={}));var ma;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(ma||(ma={}));var ha;(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"})(ha||(ha={}));var ba;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(ba||(ba={}));function Mi(e){return Object.assign(Object.assign({readUnknownFields:!0,recursionLimit:100},e),{depth:0})}function Ht(e,t,n){const o=ce(e);return xo(e).read(o,new xt(t),Mi(n),t.byteLength),o}var Oi=new WeakMap;function xo(e){let t=Oi.get(e);return t===void 0&&(t=Ud(e)),t}function Ud(e){const t=String(e),n=new Map,o={read:Jd(t,n),readGroup:xd(t,n)};Oi.set(e,o);for(const r of e.fields)n.set(r.number,Di(r));return o}function Jd(e,t){return(n,o,r,a)=>{var i;if(++r.depth>r.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${r.recursionLimit} reached`);const s=o.pos+a,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,r.recursionLimit-r.depth);r.readUnknownFields&&l.push({no:c,wireType:u,data:f});continue}h(n,o,r,u)}l.length>0&&(n.$unknown=l),r.depth--}}function xd(e,t){return(n,o,r,a)=>{var i;if(++r.depth>r.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${r.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,r.recursionLimit-r.depth);r.readUnknownFields&&c.push({no:s,wireType:l,data:h});continue}u(n,o,r,l)}if(l!=_.EndGroup||s!==a)throw new Error("invalid end group tag");c.length>0&&(n.$unknown=c),r.depth--}}function Kd(e,t,n,o,r){Di(n)(e[me],t,r,o)}function Di(e){switch(e.fieldKind){case"scalar":return zd(e);case"enum":return Ld(e);case"message":return jd(e);case"list":return Td(e);case"map":return Hd(e)}}function zd(e){const t=hn(e.scalar,e.utf8Validation,e.longAsString),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(r,a)=>{r[o]={case:n,value:t(a)}}}return(o,r)=>{o[n]=t(r)}}function Ld(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 r=e.enum.values,a=e.number;return(i,s,l,c)=>{var u;const h=s.int32();if(r.some(f=>f.number===h))o!==void 0?i[o]={case:n,value:h}:i[n]=h;else if(l.readUnknownFields){const f=[];pc(h,f);const p=(u=i.$unknown)!==null&&u!==void 0?u:[];p.push({no:a,wireType:c,data:new Uint8Array(f)}),i.$unknown=p}}}function jd(e){const t=e.localName,{toMessage:n,toLocal:o}=Ge(e),r=_i(e);if(e.oneof){const a=e.oneof.localName;return(i,s,l)=>{const c=i[a],u=n(c.case===t?c.value:void 0);r(u,s,l),i[a]={case:t,value:o(u)}}}return(a,i,s)=>{const l=n(a[t]);r(l,i,s),a[t]=o(l)}}function _i(e){const t=xo(e.message);if(e.delimitedEncoding){const n=e.number;return(o,r,a)=>t.readGroup(o,r,a,n)}return(n,o,r)=>t.read(n,o,r,o.uint32())}function Td(e){const t=e.localName;if(e.listKind=="message"){const{toMessage:i,toLocal:s}=Ge(e),l=_i(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,r=hn(n,e.utf8Validation,o),a=n!=b.STRING&&n!=b.BYTES;return(i,s,l,c)=>{const u=i[t];if(c==_.LengthDelimited&&a){const h=s.uint32()+s.pos;for(;s.pos<h;)u.push(r(s))}else u.push(r(s))}}function Hd(e){const t=e.localName,n=hn(e.mapKey,e.utf8Validation,!1),o=Be(e.mapKey,!1);let r,a;switch(e.mapKind){case"scalar":{const i=e.scalar,s=hn(i,e.utf8Validation,!1);if(r=l=>s(l),i==b.BYTES)a=()=>new Uint8Array(0);else{const l=Be(i,!1);a=()=>l}break}case"enum":{const i=e.enum.values[0].number;r=s=>s.int32(),a=()=>i;break}case"message":{const{toMessage:i,toLocal:s}=Ge(e),l=xo(e.message).read;r=(c,u,h)=>{const f=i(h);return l(f,c,u,c.uint32()),s(f)},a=()=>s(i(void 0));break}}return(i,s,l)=>{const c=i[t];let u,h;const f=s.uint32(),p=s.pos+f;for(;s.pos<p;){const[R]=s.tag();switch(R){case 1:u=n(s);break;case 2:h=r(s,l,h);break}}u===void 0&&(u=o),h===void 0&&(h=a()),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=Ht(kd,ko(e));return o.messageType.forEach(Uo),o.dependency=(n=t?.map(r=>r.proto.name))!==null&&n!==void 0?n:[],zi(o,r=>t?.find(a=>a.proto.name===r)).getFile(o.name)}var Ne=oe("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function Qd(e){return new Date(Md(e))}function Md(e){return Number(e.seconds)*1e3+Math.round(e.nanos/1e6)}var $i=oe("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Od=v($i,0),Dd=2,_d=3,ga={writeUnknownFields:!0};function $d(e){return e?Object.assign(Object.assign({},ga),e):ga}function Pi(e,t,n){const o=new Ii;return Ko(e)(o,$d(n),t),o.finish()}var qi=new WeakMap;function Ko(e){let t=qi.get(e);return t===void 0&&(t=Pd(e)),t}function Pd(e){const t=e.typeName,n=e.fields.concat().sort((i,s)=>i.number-s.number),o=n[0],r=[],a=(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<r.length;u++)r[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:p}=c[u];i.tag(h,f).raw(p)}};qi.set(e,a);for(const i of n)r.push(es(i));return a}function es(e){switch(e.fieldKind){case"message":case"scalar":case"enum":return qd(e);case"list":return tu(e);case"map":return nu(e)}}function qd(e){const t=eu(e),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(r,a,i)=>{const s=i[o];s.case===n&&t(r,a,s.value)}}if(e.presence!=Dd){const o=e.presence==_d?`cannot encode ${e} to binary: required field not set`:void 0;return(r,a,i)=>{const s=i[n];if(s!==void 0&&Object.prototype.hasOwnProperty.call(i,n))t(r,a,s);else if(o!==void 0)throw new Error(o)}}if(e.fieldKind=="enum"){const o=e.enum.values[0].number;return(r,a,i)=>{const s=i[n];s!==o&&t(r,a,s)}}switch(e.scalar){case b.BOOL:return(o,r,a)=>{const i=a[n];i!==!1&&t(o,r,i)};case b.STRING:return(o,r,a)=>{const i=a[n];i!==""&&t(o,r,i)};case b.BYTES:return(o,r,a)=>{const i=a[n];(!(i instanceof Uint8Array)||i.byteLength>0)&&t(o,r,i)};case b.DOUBLE:case b.FLOAT:return(o,r,a)=>{const i=a[n];Object.is(i,0)||t(o,r,i)};default:return(o,r,a)=>{const i=a[n];i!=0&&t(o,r,i)}}}function eu(e){switch(e.fieldKind){case"message":{const{toMessage:t}=Ge(e),n=ts(e);return(o,r,a)=>{n(o,r,t(a))}}case"scalar":case"enum":{const t=e.fieldKind=="enum"?b.INT32:e.scalar,n=e.number,o=Vn(t),r=Sn(t,e.parent.typeName,e.name);return(a,i,s)=>{a.tag(n,o),r(a,s)}}}}function tu(e){const t=e.localName,n=e.number;switch(e.listKind){case"message":{const{toMessage:o}=Ge(e),r=ts(e);return(a,i,s)=>{const l=s[t];for(let c=0;c<l.length;c++)r(a,i,o(l[c]))}}case"scalar":case"enum":{const o=e.listKind=="enum"?b.INT32:e.scalar,r=Sn(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++)r(i,c[u]);i.join()}};const a=Vn(o);return(i,s,l)=>{const c=l[t];for(let u=0;u<c.length;u++)i.tag(n,a),r(i,c[u])}}}}function nu(e){const t=e.localName,n=e.number,o=ou(e);if(e.mapKind=="message"){const{toMessage:s}=Ge(e),l=Ko(e.message);return(c,u,h)=>{const f=h[t],p=Object.keys(f);for(let R=0;R<p.length;R++){const V=p[R];c.tag(n,_.LengthDelimited).fork(),o(c,V),c.tag(2,_.LengthDelimited).fork(),l(c,u,s(f[V])),c.join(),c.join()}}}const r=e.mapKind=="enum"?b.INT32:e.scalar,a=Vn(r),i=Sn(r,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 p=h[f];s.tag(n,_.LengthDelimited).fork(),o(s,p),s.tag(2,a),i(s,u[p]),s.join()}}}function ou(e){const t=Vn(e.mapKey),n=Sn(e.mapKey,e.parent.typeName,e.name),o=ru(e.mapKey);return(r,a)=>{r.tag(1,t),n(r,o(a))}}function ru(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 H.uParse(t)}catch{return t}};case b.INT64:case b.SFIXED64:case b.SINT64:return t=>{try{return H.parse(t)}catch{return t}};default:return t=>{const n=Number.parseInt(t);return Number.isFinite(n)?n:t}}}function Sn(e,t,n){const o=au(e);return(r,a)=>{try{o(r,a)}catch(i){throw i instanceof Error?new Error(`cannot encode field ${t}.${n} to binary: ${i.message}`):i}}}function au(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 iu(e,t,n,o){es(o)(e,t,n[me])}function ts(e){const t=e.number,n=Ko(e.message);return e.delimitedEncoding?(o,r,a)=>{o.tag(t,_.StartGroup),n(o,r,a),o.tag(t,_.EndGroup)}:(o,r,a)=>{o.tag(t,_.LengthDelimited).fork(),n(o,r,a),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 su(e,t,n){let o=!1;return n||(n=ce(Od),o=!0),n.value=Pi(e,t),n.typeUrl=du(t.$typeName),o?n:void 0}function lu(e,t){return e.typeUrl===""?!1:(typeof t=="string"?t:t.typeName)===ns(e.typeUrl)}function cu(e,t){if(e.typeUrl==="")return;const n=t.kind=="message"?t:t.getMessage(ns(e.typeUrl));if(!(!n||!lu(e,n)))return Ht(n,e.value)}function du(e){return`type.googleapis.com/${e}`}function ns(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"),uu=v(Ue,0),os=v(Ue,1),mu=v(Ue,2),lo;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(lo||(lo={}));var rs=oe("Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZhbHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASABKAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoDSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUSDQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function hu(e,t,n){as(t,e);const o=gu(e.$unknown,t),[r,a,i]=Gn(t),s=Mi(n);for(const l of o)Kd(r,new xt(l.data),a,l.wireType,s);return i()}function bu(e,t,n){var o;as(t,e);const r=((o=e.$unknown)!==null&&o!==void 0?o:[]).filter(c=>c.no!==t.number),[a,i]=Gn(t,n),s=new Ii;iu(s,{writeUnknownFields:!0},a,i);const l=new xt(s.finish());for(;l.pos<l.len;){const[c,u]=l.tag(),h=l.skip(u,c);r.push({no:c,wireType:u,data:h})}e.$unknown=r}function gu(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}),r=Object.assign(Object.assign({},e.extendee),{fields:[o],members:[o],oneofs:[]}),a=ce(r,t!==void 0?{[n]:t}:void 0);return[Hc(r,a),o,()=>{const i=a[n];if(i===void 0){const s=e.message;return at(s)?Be(s.fields[0].scalar,s.fields[0].longAsString):ce(s)}return i}]}function as(e,t){if(e.extendee.typeName!=t.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var is=Date.parse("0001-01-01T00:00:00Z"),ss=Date.parse("9999-12-31T23:59:59Z");var pu=3,Au=2,pa={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function fu(e){return e?Object.assign(Object.assign({},pa),e):pa}function ls(e,t,n){return bn(e)(fu(n),t)}function Zu(e,t,n){var o;const r=ls(e,t,n);return JSON.stringify(r,null,(o=n?.prettySpaces)!==null&&o!==void 0?o:0)}var co=new WeakMap;function bn(e){let t=co.get(e);return t===void 0&&(t=Ru(e)),t}function Ru(e){const t=e.typeName,n=Su(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 co.set(e,l),l}const o=e.fields.concat().sort((s,l)=>s.number-l.number),r=o[0],a=[],i=(s,l)=>{if(l.$typeName!==t&&r!==void 0)throw new Q(r,`cannot use ${r} with message ${l.$typeName}`,"ForeignFieldError");const c={};for(let u=0;u<a.length;u++)a[u](s,l,c);return s.registry&&yu(c,s,s.registry,l,e),c};co.set(e,i);for(const s of o){const l=Vu(s);a.push(s.jsonName==="__proto__"||s.name==="__proto__"?Eu(l):l)}return i}function Eu(e){return(t,n,o)=>{const r=Object.create(null);e(t,n,r);for(const a of Object.keys(r))fe(o,a,r[a])}}function Su(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n)=>Iu(n,t);case"google.protobuf.Timestamp":return(t,n)=>Cu(n);case"google.protobuf.Duration":return(t,n)=>Xu(n);case"google.protobuf.FieldMask":return(t,n)=>Yu(n);case"google.protobuf.Struct":return(t,n)=>ms(n);case"google.protobuf.Value":return(t,n)=>jo(n);case"google.protobuf.ListValue":return(t,n)=>hs(n);default:if(at(e)){const t=e.fields[0],n=t.localName,o=Be(t.scalar,!1),r=Nn(t);return(a,i)=>{const s=i[n];return r(a,s===void 0?o:s)}}return}}function Vu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return Gu(e);case"list":case"map":{const t=e.fieldKind=="list"?ds(e):us(e),n=e.name,o=e.jsonName,r=e.localName;return(a,i,s)=>{const l=t(a,i[r]);l!==void 0&&(s[a.useProtoFieldName?n:o]=l)}}}}function Gu(e){const t=cs(e),n=e.name,o=e.jsonName,r=e.localName;if(e.oneof){const a=e.oneof.localName;return(i,s,l)=>{const c=s[a];c.case===r&&(l[i.useProtoFieldName?n:o]=t(i,c.value))}}if(e.presence!=Au){const a=e.presence==pu?`cannot encode ${e} to JSON: required field not set`:void 0;return(i,s,l)=>{const c=s[r];if(c!==void 0&&Object.prototype.hasOwnProperty.call(s,r))l[i.useProtoFieldName?n:o]=t(i,c);else if(a!==void 0)throw new Error(a)}}if(e.fieldKind=="enum"){const a=e.enum.values[0].number;return(i,s,l)=>{const c=s[r];(c!==a||i.alwaysEmitImplicit)&&(l[i.useProtoFieldName?n:o]=t(i,c))}}switch(e.scalar){case b.BOOL:return(a,i,s)=>{const l=i[r];(l!==!1||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.STRING:return(a,i,s)=>{const l=i[r];(l!==""||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.BYTES:return(a,i,s)=>{const l=i[r];(!(l instanceof Uint8Array)||l.byteLength>0||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.DOUBLE:case b.FLOAT:return(a,i,s)=>{const l=i[r];(!Object.is(l,0)||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};default:return(a,i,s)=>{const l=i[r];(l!=0||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))}}}function Nu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return cs(e);case"list":return ds(e);case"map":return us(e)}}function cs(e){switch(e.fieldKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function zo(e){const{toMessage:t}=Ge(e),n=bn(e.message);return(o,r)=>n(o,t(r))}function ds(e){const t=vu(e);return(n,o)=>{const r=o;if(r.length==0&&!n.alwaysEmitImplicit)return;const a=[];for(let i=0;i<r.length;i++)a.push(t(n,r[i]));return a}}function vu(e){switch(e.listKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function us(e){const t=Wu(e);return(n,o)=>{const r=o,a=Object.keys(r);if(a.length==0&&!n.alwaysEmitImplicit)return;const i={};for(let s=0;s<a.length;s++){const l=a[s];fe(i,l,t(n,r[l]))}return i}}function Wu(e){switch(e.mapKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function Lo(e){const t=e.enum;return t.typeName=="google.protobuf.NullValue"?(n,o)=>{if(typeof o!="number")throw Aa(t,o);return null}:(n,o)=>{var r,a;if(typeof o!="number")throw Aa(t,o);return n.enumAsInteger?o:(a=(r=t.value[o])===null||r===void 0?void 0:r.jsonName)!==null&&a!==void 0?a:o}}function Aa(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 lt(e,n);return n};case b.FLOAT:case b.DOUBLE:return(t,n)=>{if(typeof n!="number")throw lt(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 lt(e,n);return n};case b.BOOL:return(t,n)=>{if(typeof n!="boolean")throw lt(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 lt(e,n)};case b.BYTES:return(t,n)=>{if(n instanceof Uint8Array)return $c(n);throw lt(e,n)}}}function lt(e,t){var n;return new Error(`cannot encode ${e} to JSON: ${(n=Ci(e,t))===null||n===void 0?void 0:n.message}`)}function yu(e,t,n,o,r){const a=o.$unknown;if(a===void 0)return;const i=new Set;for(let s=0;s<a.length;s++){const{no:l}=a[s];if(!i.has(l)){i.add(l);const c=n.getExtensionFor(r,l);if(!c)continue;const[u,h]=Gn(c,hu(o,c)),f=u[me],p=Nu(h)(t,f[h.localName]);p!==void 0&&(e[c.jsonName]=p)}}}function Iu(e,t){if(e.typeUrl==="")return{};const{registry:n}=t;let o,r;if(n&&(o=cu(e,n),o&&(r=n.getMessage(o.$typeName))),!r||!o)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);const a=Ei(r)?{value:bn(r)(t,o)}:bn(r)(t,o);return a["@type"]=e.typeUrl,a}function Xu(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 r=Math.abs(n).toString();r="0".repeat(9-r.length)+r,r.substring(3)==="000000"?r=r.substring(0,3):r.substring(6)==="000"&&(r=r.substring(0,6)),o+="."+r,n<0&&t==0&&(o="-"+o)}return o+"s"}function Yu(e){return e.paths.map(t=>{if(Ki(ft(t))!==t)throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "${t}" is irreversible`);return ft(t)}).join(",")}function ms(e){const t={},n=Object.keys(e.fields);for(let o=0;o<n.length;o++){const r=n[o];fe(t,r,jo(e.fields[r]))}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 ms(e.kind.value);case"listValue":return hs(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function hs(e){return e.values.map(jo)}function Cu(e){const t=Number(e.seconds)*1e3;if(t<is||t>ss)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 Bu=2;function wu(e){return Object.assign(Object.assign({ignoreUnknownFields:!1,recursionLimit:100},e),{depth:0})}function Fu(e,t,n){return bs(e,Qu(t,e.typeName),n)}function bs(e,t,n){const o=ce(e);return ku(e,o,t,n),o}function ku(e,t,n,o){try{Zt(e)(t,n,wu(o))}catch(r){throw kc(r)?new Error(`cannot decode ${r.field()} from JSON: ${r.message}`,{cause:r}):r}}var uo=new WeakMap;function Zt(e){let t=uo.get(e);return t===void 0&&(t=Uu(e)),t}function Uu(e){const t=String(e),n=Ju(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 uo.set(e,i),i}const o=e.typeName,r=new Map,a=(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 p=0;p<f.length;p++){const R=f[p],V=s[R],X=r.get(R);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&&V===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,V,l)}else{const J=R.startsWith("[")&&R.endsWith("]")?(c=l.registry)===null||c===void 0?void 0:c.getExtension(R.substring(1,R.length-1)):void 0;if(J?.extendee.typeName==o){const[d,m,A]=Gn(J);fa(m)(d[me],V,l),bu(i,J,A())}if(J===void 0&&!l.ignoreUnknownFields)throw new Error(`cannot decode ${t} from JSON: key "${R}" is unknown`)}}l.depth--};uo.set(e,a);for(const i of e.fields){const s={read:fa(i),field:i,oneof:i.oneof,oneofScalarNullSkip:i.oneof!==void 0&&i.fieldKind=="scalar"};r.set(i.name,s).set(i.jsonName,s)}return a}function Ju(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n,o)=>Ou(t,n,o);case"google.protobuf.Timestamp":return(t,n)=>Du(t,n);case"google.protobuf.Duration":return(t,n)=>_u(t,n);case"google.protobuf.FieldMask":return(t,n)=>$u(t,n);case"google.protobuf.Struct":return(t,n,o)=>fs(t,n,o);case"google.protobuf.Value":return(t,n,o)=>Oo(t,n,o);case"google.protobuf.ListValue":return(t,n,o)=>Zs(t,n,o);default:if(at(e)){const t=e.fields[0],n=t.localName,o=t.scalar,r=t.longAsString,a=ps(t);return(i,s)=>{s===null?i[n]=Be(o,r):i[n]=a(s)}}return}}function fa(e){switch(e.fieldKind){case"scalar":return xu(e);case"enum":return Ku(e);case"message":return zu(e);case"list":return Lu(e);case"map":return Tu(e)}}function xu(e){const t=ps(e),n=e.localName;if(e.oneof){const r=e.oneof.localName;return(a,i)=>{a[r]={case:n,value:t(i)}}}const o=gs(e);return(r,a)=>{a===null?o(r):r[n]=t(a)}}function gs(e){const t=e.localName;if(e.presence!=Bu)return r=>{delete r[t]};if(e.fieldKind=="enum"){const r=e.enum.values[0].number;return a=>{a[t]=r}}const n=e.scalar,o=e.longAsString;return r=>{r[t]=Be(n,o)}}function Ku(e){const t=To(e.enum),n=Ho(e.enum),o=e.localName,r=e.enum.typeName!="google.protobuf.NullValue";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{if(l===null&&r){s[i].case===o&&(s[i]={case:void 0});return}const u=t(l,c.ignoreUnknownFields);if(u===Rt)return;const h=n(u);if(h!==!0)throw new Q(e,pe(e,u,h));s[i]={case:o,value:u}}}const a=gs(e);return(i,s,l)=>{if(s===null&&r){a(i);return}const c=t(s,l.ignoreUnknownFields);if(c===Rt)return;const u=n(c);if(u!==!0)throw new Q(e,pe(e,c,u));i[o]=c}}function zu(e){const t=e.localName,{toMessage:n,toLocal:o}=Ge(e),r=Zt(e.message),a=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&&a){u.case===t&&(s[i]={case:void 0});return}const h=n(u.case===t?u.value:void 0);r(h,l,c),s[i]={case:t,value:o(h)}}}return(i,s,l)=>{if(s===null&&a){delete i[t];return}const c=n(i[t]);r(c,s,l),i[t]=o(c)}}function Lu(e){const t=e.localName,n=ju(e);return(o,r,a)=>{if(r===null)return;if(!Array.isArray(r))throw new Q(e,"expected Array, got "+te(r));const i=o[t];for(let s=0;s<r.length;s++){const l=n(r[s],a,i.length);l!==Rt&&i.push(l)}}}function ju(e){switch(e.listKind){case"scalar":{const t=Qo(e),n=He(e.scalar),o=Mo(e);return(r,a,i)=>{if(r===null)throw new Q(e,"list item must not be null");const s=t(r),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=To(e.enum),n=Ho(e.enum),o=e.enum.typeName!="google.protobuf.NullValue";return(r,a,i)=>{if(r===null&&o)throw new Q(e,"list item must not be null");const s=t(r,a.ignoreUnknownFields);if(s===Rt)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}=Ge(e),o=Zt(e.message),r=e.message.typeName!="google.protobuf.Value";return(a,i)=>{if(a===null&&r)throw new Q(e,"list item must not be null");const s=t(void 0);return o(s,a,i),n(s)}}}}function Tu(e){const t=e.localName,n=e.mapKey,o=Hu(n),r=He(n);let a,i,s=c=>c,l=!0;switch(e.mapKind){case"scalar":a=Qo(e),i=He(e.scalar),s=Mo(e);break;case"enum":{const c=To(e.enum);a=(u,h)=>c(u,h.ignoreUnknownFields),i=Ho(e.enum),l=e.enum.typeName!="google.protobuf.NullValue";break}case"message":{const{toMessage:c,toLocal:u}=Ge(e),h=Zt(e.message);l=e.message.typeName!="google.protobuf.Value",a=(f,p)=>{const R=c(void 0);return h(R,f,p),u(R)};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],p=new Set,R=Object.keys(u);for(let V=0;V<R.length;V++){const X=R[V],J=u[X],d=o(X);if(p.has(d))throw new Q(e,`duplicate map key "${X}"`);if(p.add(d),J===null&&l)throw new Q(e,"map value must not be null");const m=a(J,h);if(m===Rt)continue;const A=r(d);if(A!==!0)throw new Q(e,`invalid map key: ${pe({scalar:n},d,A)}`);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 Rt=Symbol();function To(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,r)=>{if(o===null)return t;switch(typeof o){case"number":if(Number.isInteger(o))return o;break;case"string":{const a=n.get(o);if(a!==void 0)return a;if(r)return Rt;break}}throw new Error(`cannot decode ${e} from JSON: ${te(o)}`)}}function Ho(e){if(e.open)return He(b.INT32);const t=e.values;return n=>t.some(o=>o.number===n)}function ps(e){const t=Qo(e),n=He(e.scalar),o=Mo(e);return r=>{const a=t(r),i=n(a);if(i!==!0)throw new Q(e,pe(e,a,i));return o(a)}}function Qo(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 As;case b.BYTES:return t=>{if(typeof t=="string"){if(t==="")return new Uint8Array(0);try{return ko(t)}catch(n){throw new Q(e,n instanceof Error?n.message:String(n))}}return t};default:return t=>t}}function Mo(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"?H.parse(n):n;case b.FIXED64:case b.UINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?H.uParse(n):n;default:return n=>n}}function Hu(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 As;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 As(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 Qu(e,t){let n;try{n=JSON.parse(e)}catch(o){const r=o instanceof Error?o.message:String(o);throw new Error(`cannot decode message ${t} from JSON: ${r}`,{cause:o})}return Mu(e,t),n}function Mu(e,t){const n=[];let o=!1,r=0;for(;r<e.length;)switch(e[r]){case"{":n.push(new Set),o=!0,r++;break;case"[":n.push(null),o=!1,r++;break;case"}":case"]":n.pop(),o=!1,r++;break;case",":o=n[n.length-1]!=null,r++;break;case":":o=!1,r++;break;case'"':{const a=r++;let i=!1;for(;r<e.length;){if(e[r]=="\\"){i=!0,r+=2;continue}if(e[r]=='"')break;r++}const s=r++,l=n[n.length-1];if(o&&l){const c=i?JSON.parse(e.substring(a,s+1)):e.substring(a+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:r++;break}}function Ou(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 r=t["@type"];if(typeof r!="string"||r=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);const a=r.includes("/")?r.substring(r.lastIndexOf("/")+1):r;if(!a.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(a);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${r} is not in the type registry`);const s=ce(i);if(Ei(i)&&Object.prototype.hasOwnProperty.call(t,"value"))Zt(i)(s,t.value,n);else{const l={};for(const c of Object.keys(t))c!=="@type"&&fe(l,c,t[c]);Zt(i)(s,l,n)}su(i,s,e)}function Du(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<is||o>ss)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=H.parse(o/1e3),e.nanos=0,n[7]&&(e.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function _u(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=H.parse(o),typeof n[2]!="string")return;const r=n[2]+"0".repeat(9-n[2].length);e.nanos=parseInt(r),(o<0||Object.is(o,-0))&&(e.nanos=-e.nanos)}function $u(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 Ki(n)}))}function fs(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 r=0;r<o.length;r++){const a=o[r],i=ce(os);Oo(i,t[a],n),fe(e.fields,a,i)}}function Oo(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:lo.NULL_VALUE};else if(Array.isArray(t)){const o=ce(mu);Zs(o,t,n),e.kind={case:"listValue",value:o}}else{const o=ce(uu);fs(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 Zs(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 r=ce(os);Oo(r,t[o],n),e.values.push(r)}}function Za(e){const t=S[e];return typeof t!="string"?e.toString():t[0].toLowerCase()+t.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var B=class ut extends Error{constructor(t,n=S.Unknown,o,r,a){super(Pu(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=r??[],this.cause=a}static from(t,n=S.Unknown){return t instanceof ut?t:t instanceof Error?t.name=="AbortError"||t.name=="TimeoutError"?new ut(t.message,S.Canceled):new ut(t.message,n,void 0,void 0,t):new ut(String(t),n,void 0,void 0,t)}static[Symbol.hasInstance](t){return t instanceof Error?Object.getPrototypeOf(t)===ut.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:r=>r===t.typeName?t:void 0}:t,o=[];for(const r of this.details){if("desc"in r){n.getMessage(r.desc.typeName)&&o.push(ce(r.desc,r.value));continue}const a=n.getMessage(r.type);if(a)try{o.push(Ht(a,r.value))}catch{}}return o}};function Pu(e,t){return e.length?`[${Za(t)}] ${e}`:`[${Za(t)}]`}function qu(e,t,n){try{const o=ko(e);return t?Ht(t,o,n):o}catch(o){throw B.from(o,S.DataLoss)}}function em(e,t){const n={};for(const o of e.methods){const r=t(o);r!=null&&(n[o.localName]=r)}return n}var cn=4294967295,Tn=cn,tm=1024;function nm(e,t,n){if(t!=null||(t=Tn),e!=null||(e=cn),n!=null||(n=tm),t<1||t>Tn)throw new B(`writeMaxBytes ${t} must be >= 1 and <= ${Tn}`,S.Internal);if(e<1||e>cn)throw new B(`readMaxBytes ${e} must be >= 1 and <= ${cn}`,S.Internal);return{readMaxBytes:e,writeMaxBytes:t,compressMinBytes:n}}function om(e,t){if(t>e)throw new B(`message size ${t} is larger than configured writeMaxBytes ${e}`,S.ResourceExhausted)}function Rs(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 B(o,S.ResourceExhausted)}}function rm(e){return new am(e)}var am=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 Rs(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 im(e,t,n){let{flags:o,data:r}=e;if((o&1)===1)throw new B("invalid envelope, already compressed",S.Internal);return t&&r.byteLength>=n&&(r=await t.compress(r),o=o|1),{data:r,flags:o}}async function sm(e,t,n){let{flags:o,data:r}=e;if((o&1)===1){if(!t)throw new B("received compressed envelope, but do not know how to decompress",S.Internal);r=await t.decompress(r,n),o=o^1}return{data:r,flags:o}}function lm(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 we=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(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},z=function(e){return this instanceof z?(this.v=e,this):new z(e)},Ve=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(R){return Promise.resolve(R).then(p,h)}}function s(p,R){o[p]&&(r[p]=function(V){return new Promise(function(X,J){a.push([p,V,X,J])>1||l(p,V)})},R&&(r[p]=R(r[p])))}function l(p,R){try{c(o[p](R))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof z?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,R){p(R),a.shift(),a.length&&l(a[0][0],a[0][1])}},cm=function(e){var t,n;return t={},o("next"),o("throw",function(r){throw r}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(r,a){t[r]=e[r]?function(i){return(n=!n)?{value:z(e[r](i)),done:!1}:a?a(i):i}:a}};function dm(e,...t){const[n,o,r]=um(t);let a=e,i;return r?.propagateDownStreamError===!0&&(a=i=Es(a)),a=dn(a,...n,{propagateDownStreamError:!1}),o(a).catch(s=>i?i.abort(s).then(()=>Promise.reject(s)):Promise.reject(s))}function um(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,e.pop(),t]}function dn(e,...t){return Ve(this,arguments,function*(){var o;const[r,a]=mm(t);let i;const s=e[Symbol.asyncIterator]();let l={[Symbol.asyncIterator](){return s}};a?.propagateDownStreamError===!0&&(l=i=Es(l));for(const u of r)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{a?.propagateDownStreamError===!0&&((o=s.return)===null||o===void 0||o.call(s).catch(()=>{}))}})}function mm(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,t]}function Ra(e,t,n){return t===void 0||n===void 0?function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const h=s;yield yield z({flags:0,data:e.serialize(h)})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}:function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const h=s;let f,p=0;h.end?(p=p|t,f=n.serialize(h.value)):f=e.serialize(h.value),yield yield z({flags:p,data:f})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}}function Ea(e,t,n){return n&&t!==void 0?function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;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){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}:function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;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 B("unexpected end flag",S.InvalidArgument);continue}yield yield z(e.parse(f))}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}}function Sa(e,t){return function(n){return Ve(this,arguments,function*(){var o,r,a,i;try{for(var s=!0,l=we(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z(im(i,e,t)))}catch(u){r={error:u}}finally{try{!s&&!o&&(a=l.return)&&(yield z(a.call(l)))}finally{if(r)throw r.error}}})}}function Va(e,t){return function(n){return Ve(this,arguments,function*(){var o,r,a,i;try{for(var s=!0,l=we(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z(sm(i,e,t)))}catch(u){r={error:u}}finally{try{!s&&!o&&(a=l.return)&&(yield z(a.call(l)))}finally{if(r)throw r.error}}})}}function Ga(){return function(e){return Ve(this,arguments,function*(){var t,n,o,r;try{for(var a=!0,i=we(e),s;s=yield z(i.next()),t=s.done,!t;a=!0){r=s.value,a=!1;const{flags:l,data:c}=r;yield yield z(lm(l,c))}}catch(l){n={error:l}}finally{try{!a&&!t&&(o=i.return)&&(yield z(o.call(i)))}finally{if(n)throw n.error}}})}}function Na(e){return function(t){return Ve(this,arguments,function*(){var n,o,r,a;const i=rm(e);try{for(var s=!0,l=we(t),c;c=yield z(l.next()),n=c.done,!n;s=!0){a=c.value,s=!1;const u=a;for(const h of i.decode(u))yield yield z(h)}}catch(u){o={error:u}}finally{try{!s&&!n&&(r=l.return)&&(yield z(r.call(l)))}finally{if(o)throw o.error}}if(i.byteLength>0)throw new B("protocol error: incomplete envelope",S.InvalidArgument)})}}function Es(e){const t=e[Symbol.asyncIterator]();if(t.throw===void 0)throw new Error("AsyncIterable does not implement throw");const n=t;let o,r,a={next(){return r=n.next().finally(()=>{r=void 0}),r},throw(s){return n.throw(s)}};t.return!==void 0&&(a=Object.assign(Object.assign({},a),{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 r?(o={reason:s,state:r.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,a}}}function Ss(e){return Ve(this,arguments,function*(){yield z(yield*cm(we(e)))})}var Vs=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(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},Et=function(e){return this instanceof Et?(this.v=e,this):new Et(e)},hm=function(e){var t,n;return t={},o("next"),o("throw",function(r){throw r}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(r,a){t[r]=e[r]?function(i){return(n=!n)?{value:Et(e[r](i)),done:!1}:a?a(i):i}:a}},bm=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(R){return Promise.resolve(R).then(p,h)}}function s(p,R){o[p]&&(r[p]=function(V){return new Promise(function(X,J){a.push([p,V,X,J])>1||l(p,V)})},R&&(r[p]=R(r[p])))}function l(p,R){try{c(o[p](R))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof Et?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,R){p(R),a.shift(),a.length&&l(a[0][0],a[0][1])}};function ve(e,t){return em(e,n=>{switch(n.methodKind){case"unary":return gm(t,n);case"server_streaming":return pm(t,n);case"client_streaming":return Am(t,n);case"bidi_streaming":return fm(t,n);default:return null}})}function gm(e,t){return async(n,o)=>{var r,a;const i=await e.unary(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);return(r=o?.onHeader)===null||r===void 0||r.call(o,i.header),(a=o?.onTrailer)===null||a===void 0||a.call(o,i.trailer),i.message}}function pm(e,t){return(n,o)=>Gs(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,Ss([n]),o?.contextValues),o)}function Am(e,t){return async(n,o)=>{var r,a,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 p=!0,R=Vs(u.message),V;V=await R.next(),r=V.done,!r;p=!0)s=V.value,p=!1,h=s,f++}catch(X){a={error:X}}finally{try{!p&&!r&&(i=R.return)&&await i.call(R)}finally{if(a)throw a.error}}if(!h)throw new B("protocol error: missing response message",S.Unimplemented);if(f>1)throw new B("protocol error: received extra messages for client streaming method",S.Unimplemented);return(c=o?.onTrailer)===null||c===void 0||c.call(o,u.trailer),h}}function fm(e,t){return(n,o)=>Gs(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues),o)}function Gs(e,t){const n=(function(){return bm(this,arguments,function*(){var o,r;const a=yield Et(e);(o=t?.onHeader)===null||o===void 0||o.call(t,a.header),yield Et(yield*hm(Vs(a.message))),(r=t?.onTrailer)===null||r===void 0||r.call(t,a.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function Zm(...e){const t=new AbortController,n=e.filter(r=>r!==void 0).concat(t.signal);for(const r of n){if(r.aborted){o.apply(r);break}r.addEventListener("abort",o)}function o(){t.signal.aborted||t.abort(Lt(this));for(const r of n)r.removeEventListener("abort",o)}return t}function Rm(e){const t=new AbortController,n=()=>{t.abort(new B("the operation timed out",S.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 va(){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 Em(e){const t=new Headers,n=new TextDecoder().decode(e).split(`\r
|
|
52
52
|
`);for(const o of n){if(o==="")continue;const r=o.indexOf(":");if(r>0){const a=o.substring(0,r).trim(),i=o.substring(r+1).trim();t.append(a,i)}}return t}function Sm(e){const t=[];return e.forEach((n,o)=>{t.push(`${o}: ${n}\r
|
|
53
|
-
`)}),new TextEncoder().encode(t.join(""))}function Wa(){return{serialize:Sm,parse:Em}}var Vm="Content-Type",Ns="Grpc-Encoding",Gm="Grpc-Accept-Encoding",Nm="Grpc-Timeout",vs="Grpc-Status";var vm="Grpc-Status-Details-Bin",Wm="User-Agent",ym="X-User-Agent",Im="X-Grpc-Web",Xm="application/grpc-web+proto",Ym="application/grpc-web+json";function We(e,t,...n){if(n.length>0)throw new Error;return e.services[t]}var Cm=oe("CgxzdGF0dXMucHJvdG8SCmdvb2dsZS5ycGMiTgoGU3RhdHVzEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIlCgdkZXRhaWxzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUJeCg5jb20uZ29vZ2xlLnJwY0ILU3RhdHVzUHJvdG9QAVo3Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9ycGMvc3RhdHVzO3N0YXR1c6ICA1JQQ2IGcHJvdG8z",[$i]),Bm=v(Cm,0);function Ws(e){var t;const n=e.get(vm);if(n!=null){const r=qu(n,Bm);if(r.code==0)return;const a=new B(r.message,r.code,e);return a.details=r.details.map(i=>({type:i.typeUrl.substring(i.typeUrl.lastIndexOf("/")+1),value:i.value})),a.isWireError=!0,a}const o=e.get(vs);if(o!=null){if(o==="0")return;const r=parseInt(o,10);let a;return r in S?a=new B(decodeURIComponent((t=e.get("Grpc-Message"))!==null&&t!==void 0?t:""),r,e):a=new B(`invalid grpc-status: ${o}`,S.Internal,e),a.isWireError=!0,a}}function ya(e,t){return e.toString().replace(/\/?$/,`/${t.parent.typeName}/${t.name}`)}function ys(e,t){return ce(e,t)}function wm(e,t){function n(o){return o.done===!0?o:{done:o.done,value:ys(e,o.value)}}return{[Symbol.asyncIterator](){const o=t[Symbol.asyncIterator](),r={next:()=>o.next().then(n)};return o.throw!==void 0&&(r.throw=a=>o.throw(a).then(n)),o.return!==void 0&&(r.return=a=>o.return(a).then(n)),r}}}function Is(e,t){if(!t)return e;for(const n of t.concat().reverse())e=n(e);return e}function Fm(e){var t;const n=Object.assign({},e);return(t=n.ignoreUnknownFields)!==null&&t!==void 0||(n.ignoreUnknownFields=!0),n}function Ia(e,t,n,o){const r=Pt(Xa(e.input,t),o),a=Pt(Ya(e.input,n),o),i=Pt(Xa(e.output,t),o),s=Pt(Ya(e.output,n),o);return{getI(l){return l?r:a},getO(l){return l?i:s}}}function Pt(e,t){return{serialize(n){const o=e.serialize(n);return om(t.writeMaxBytes,o.byteLength),o},parse(n){return Rs(t.readMaxBytes,n.byteLength,!0),e.parse(n)}}}function Xa(e,t){return{parse(n){try{return Ht(e,n,t)}catch(o){throw new B(`parse binary: ${o instanceof Error?o.message:String(o)}`,S.Internal)}},serialize(n){try{return Pi(e,n,t)}catch(o){throw new B(`serialize binary: ${o instanceof Error?o.message:String(o)}`,S.Internal)}}}}function Ya(e,t){var n,o;const r=(n=t?.textEncoder)!==null&&n!==void 0?n:new TextEncoder,a=(o=t?.textDecoder)!==null&&o!==void 0?o:new TextDecoder,i=Fm(t);return{parse(s){try{return Fu(e,a.decode(s),i)}catch(l){throw B.from(l,S.InvalidArgument)}},serialize(s){try{const l=Zu(e,s,i);return r.encode(l)}catch(l){throw B.from(l,S.Internal)}}}}function km(e){const t=Is(e.next,e.interceptors),[n,o,r]=Xs(e);return t(Object.assign(Object.assign({},e.req),{message:ys(e.req.method.input,e.req.message),signal:n})).then(a=>(r(),a),o)}function Um(e){const t=Is(e.next,e.interceptors),[n,o,r]=Xs(e),a=Object.assign(Object.assign({},e.req),{message:wm(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(a).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,r()),c),o)}}}}}),o)}function Xs(e){const{signal:t,cleanup:n}=Rm(e.timeoutMs),o=Zm(e.signal,t);return[o.signal,function(a){const i=o.signal.aborted?B.from(Lt(o.signal),S.Canceled):B.from(a);return o.abort(i),n(),Promise.reject(i)},function(){n(),o.abort()}]}var Jm=oe("CiVoYWdpY29kZS9jb21tb24vdjEvZXJyb3JfZGV0YWlsLnByb3RvEhJoYWdpY29kZS5jb21tb24udjEiQgoLRXJyb3JEZXRhaWwSDAoEY29kZRgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIoqgIlUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW1vbi5WMWIGcHJvdG8z",[Ue]),xm=v(Jm,0),$={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,QUOTA_UNKNOWN:34,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"}},Km=class extends Error{constructor(e){super(`Saga resources conflict with existing files: ${e.join(", ")}. Re-run with --force to replace them.`),this.name="SagaResourceConflictError"}},T=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}},mo=class extends Error{constructor(e){super(e),this.name="CliQuotaUnknownError"}},Do=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 _o(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return e}function
|
|
53
|
+
`)}),new TextEncoder().encode(t.join(""))}function Wa(){return{serialize:Sm,parse:Em}}var Vm="Content-Type",Ns="Grpc-Encoding",Gm="Grpc-Accept-Encoding",Nm="Grpc-Timeout",vs="Grpc-Status";var vm="Grpc-Status-Details-Bin",Wm="User-Agent",ym="X-User-Agent",Im="X-Grpc-Web",Xm="application/grpc-web+proto",Ym="application/grpc-web+json";function We(e,t,...n){if(n.length>0)throw new Error;return e.services[t]}var Cm=oe("CgxzdGF0dXMucHJvdG8SCmdvb2dsZS5ycGMiTgoGU3RhdHVzEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIlCgdkZXRhaWxzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUJeCg5jb20uZ29vZ2xlLnJwY0ILU3RhdHVzUHJvdG9QAVo3Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9ycGMvc3RhdHVzO3N0YXR1c6ICA1JQQ2IGcHJvdG8z",[$i]),Bm=v(Cm,0);function Ws(e){var t;const n=e.get(vm);if(n!=null){const r=qu(n,Bm);if(r.code==0)return;const a=new B(r.message,r.code,e);return a.details=r.details.map(i=>({type:i.typeUrl.substring(i.typeUrl.lastIndexOf("/")+1),value:i.value})),a.isWireError=!0,a}const o=e.get(vs);if(o!=null){if(o==="0")return;const r=parseInt(o,10);let a;return r in S?a=new B(decodeURIComponent((t=e.get("Grpc-Message"))!==null&&t!==void 0?t:""),r,e):a=new B(`invalid grpc-status: ${o}`,S.Internal,e),a.isWireError=!0,a}}function ya(e,t){return e.toString().replace(/\/?$/,`/${t.parent.typeName}/${t.name}`)}function ys(e,t){return ce(e,t)}function wm(e,t){function n(o){return o.done===!0?o:{done:o.done,value:ys(e,o.value)}}return{[Symbol.asyncIterator](){const o=t[Symbol.asyncIterator](),r={next:()=>o.next().then(n)};return o.throw!==void 0&&(r.throw=a=>o.throw(a).then(n)),o.return!==void 0&&(r.return=a=>o.return(a).then(n)),r}}}function Is(e,t){if(!t)return e;for(const n of t.concat().reverse())e=n(e);return e}function Fm(e){var t;const n=Object.assign({},e);return(t=n.ignoreUnknownFields)!==null&&t!==void 0||(n.ignoreUnknownFields=!0),n}function Ia(e,t,n,o){const r=Pt(Xa(e.input,t),o),a=Pt(Ya(e.input,n),o),i=Pt(Xa(e.output,t),o),s=Pt(Ya(e.output,n),o);return{getI(l){return l?r:a},getO(l){return l?i:s}}}function Pt(e,t){return{serialize(n){const o=e.serialize(n);return om(t.writeMaxBytes,o.byteLength),o},parse(n){return Rs(t.readMaxBytes,n.byteLength,!0),e.parse(n)}}}function Xa(e,t){return{parse(n){try{return Ht(e,n,t)}catch(o){throw new B(`parse binary: ${o instanceof Error?o.message:String(o)}`,S.Internal)}},serialize(n){try{return Pi(e,n,t)}catch(o){throw new B(`serialize binary: ${o instanceof Error?o.message:String(o)}`,S.Internal)}}}}function Ya(e,t){var n,o;const r=(n=t?.textEncoder)!==null&&n!==void 0?n:new TextEncoder,a=(o=t?.textDecoder)!==null&&o!==void 0?o:new TextDecoder,i=Fm(t);return{parse(s){try{return Fu(e,a.decode(s),i)}catch(l){throw B.from(l,S.InvalidArgument)}},serialize(s){try{const l=Zu(e,s,i);return r.encode(l)}catch(l){throw B.from(l,S.Internal)}}}}function km(e){const t=Is(e.next,e.interceptors),[n,o,r]=Xs(e);return t(Object.assign(Object.assign({},e.req),{message:ys(e.req.method.input,e.req.message),signal:n})).then(a=>(r(),a),o)}function Um(e){const t=Is(e.next,e.interceptors),[n,o,r]=Xs(e),a=Object.assign(Object.assign({},e.req),{message:wm(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(a).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,r()),c),o)}}}}}),o)}function Xs(e){const{signal:t,cleanup:n}=Rm(e.timeoutMs),o=Zm(e.signal,t);return[o.signal,function(a){const i=o.signal.aborted?B.from(Lt(o.signal),S.Canceled):B.from(a);return o.abort(i),n(),Promise.reject(i)},function(){n(),o.abort()}]}var Jm=oe("CiVoYWdpY29kZS9jb21tb24vdjEvZXJyb3JfZGV0YWlsLnByb3RvEhJoYWdpY29kZS5jb21tb24udjEiQgoLRXJyb3JEZXRhaWwSDAoEY29kZRgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIoqgIlUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW1vbi5WMWIGcHJvdG8z",[Ue]),xm=v(Jm,0),$={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,QUOTA_UNKNOWN:34,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"}},Km=class extends Error{constructor(e){super(`Saga resources conflict with existing files: ${e.join(", ")}. Re-run with --force to replace them.`),this.name="SagaResourceConflictError"}},T=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}},mo=class extends Error{constructor(e){super(e),this.name="CliQuotaUnknownError"}},Do=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 _o(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return e}function St(e,t){const n=_o(e)?.[t];return typeof n=="string"&&n.trim()?n.trim():void 0}function $o(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 Ca(e){switch(e){case 400:return $.HTTP_BAD_REQUEST;case 401:return $.HTTP_UNAUTHORIZED;case 403:return $.HTTP_FORBIDDEN;case 404:return $.HTTP_NOT_FOUND;case 409:return $.HTTP_CONFLICT;default:return e&&e>=400&&e<500?$.HTTP_CLIENT_ERROR:e&&e>=500?$.HTTP_SERVER_ERROR:$.UNKNOWN}}var zm={[S.InvalidArgument]:400,[S.OutOfRange]:400,[S.Unauthenticated]:401,[S.PermissionDenied]:403,[S.NotFound]:404,[S.AlreadyExists]:409,[S.FailedPrecondition]:409,[S.Aborted]:409,[S.Unimplemented]:501,[S.Internal]:500,[S.Unknown]:500,[S.DataLoss]:500,[S.Unavailable]:503,[S.DeadlineExceeded]:504},Lm=/exceeds?\s+the\s+maximum|too\s+large|payload\s+too\s+large/i;function jm(e){return e.code===S.ResourceExhausted?Lm.test(e.rawMessage)?413:429:zm[e.code]??500}function Tm(e){return e.code!==S.Unavailable&&e.code!==S.Unknown&&e.code!==S.Internal&&e.code!==S.Aborted?!1:e.cause instanceof Error||$o(e.rawMessage)}function vn(e){if(!(e instanceof B)||e.code===S.Canceled||Tm(e))return;const[t]=e.findDetails(xm),n=t&&t.code.length>0?t.code:void 0,o=t?.data??{},r=e.rawMessage.trim()||`The backend rejected the request (${S[e.code]}).`;return{status:jm(e),message:r,code:n,body:{error:r,...n?{code:n}:{},...o}}}function Ys(e){if(!(e instanceof B)||e.code!==S.FailedPrecondition)return;const t=vn(e);return new et(t?.message??e.rawMessage,{errorCode:t?.code})}function Cs(e){return e instanceof B?e.code===S.Unavailable||e.code===S.DeadlineExceeded||e.code!==S.Canceled&&vn(e)===void 0:e instanceof Error&&$o(e.message)}function Ba(e,t){const n=t.baseUrl??"the configured backend";return{exitCode:$.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 Bs(e,t={}){if(e instanceof N)return{exitCode:$.USAGE,message:e.message};if(e instanceof U)return{exitCode:$.OPERATION_FAILED,message:e.message};if(e instanceof Km)return{exitCode:$.SAGA_RESOURCE_CONFLICT,message:e.message};if(e instanceof T)return{exitCode:$.REFUSED,message:[e.reasons.length>1?"Refused:":"Refused.",...e.reasons.map(n=>` - ${n}`)].join(`
|
|
54
54
|
`),details:{errors:e.reasons}};if(e instanceof mo)return{exitCode:$.QUOTA_UNKNOWN,message:e.message};if(e instanceof Do)return{exitCode:$.WAIT_TIMEOUT,message:e.message};if(e instanceof et)return{exitCode:$.LOCK_LOST,message:e.message,errorCode:e.errorCode};if(e instanceof ye)return{exitCode:Ca(e.status),status:e.status,message:e.message,details:e.details};if(e instanceof B){const n=vn(e);if(n){const o=Qm(n.body);return{exitCode:Ca(n.status),status:n.status,message:o.length>0?[n.message,...o].join(`
|
|
55
|
-
`):n.message,errorCode:
|
|
55
|
+
`):n.message,errorCode:St(n.body,"errorCode")??n.code,correlationId:St(n.body,"correlationId"),details:n.body}}return e.code===S.Canceled?{exitCode:$.UNKNOWN,message:"The request was cancelled."}:Ba(e.rawMessage,t)}return e instanceof Error?$o(e.message)?Ba(e.message,t):{exitCode:$.UNKNOWN,message:e.message}:{exitCode:$.UNKNOWN,message:String(e)}}function Hm(e){const t=_o(e)?.errors;return Array.isArray(t)?t.flatMap(n=>{const o=St(n,"field"),r=St(n,"message");return o&&r?[` - ${o}: ${r}`]:[]}):[]}function Qm(e){const t=_o(e)?.fieldErrors;return Array.isArray(t)?t.flatMap(n=>{const o=St(n,"field"),r=St(n,"message");return o&&r?[` - ${o}: ${r}`]:[]}):[]}function ws(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
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}`,...Hm(e.details)].join(`
|
|
57
57
|
`)+`
|
|
58
|
-
`}var Mm="--base-url",Om="HAGI_API_BASE_URL";function Ee(e){const t=e?.trim();return t||void 0}function Po(e=process.env){return(0,R.join)(Ee(e.XDG_CONFIG_HOME)??(0,R.join)((0,ec.homedir)(),".config"),"hagi","config.json")}function Fs(e){const t=Po(e);let n;try{n=(0,Y.readFileSync)(t,"utf8")}catch(r){if(r.code==="ENOENT")return;throw new N(`Cannot read CLI config file ${t}: ${r instanceof Error?r.message:String(r)}`)}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 Dm(e=process.env){const t=Fs(e)?.baseUrl;return typeof t=="string"?Ee(t):void 0}function _m(e=process.env){const t=Fs(e)?.steer;if(t===void 0||typeof t=="boolean")return t;throw new N(`CLI config file ${Po(e)} has a "steer" value that is not true or false.`)}function $m(e={},t=process.env){const n=Ee(e.baseUrl)??Ee(t.HAGI_API_BASE_URL)??Dm(t);if(!n)throw new N(`No backend base URL is configured. Set ${Mm} <url>, the ${Om} environment variable, or "baseUrl" in ${Po(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 Pm(e={},t=process.env){return jt=$m(e,t),jt}function ks(){if(!jt)throw new N("The backend connection is not configured. Resolve the API runtime before calling the backend.");return jt}function qm(){return Ee(jt?.baseUrl)}var se=oe("CiFoYWdpY29kZS9wcm9qZWN0L3YxL3Byb2plY3QucHJvdG8SE2hhZ2ljb2RlLnByb2plY3QudjEiSwoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSMwoEYm9keRgBIAEoCzIlLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdER0byJIChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USLwoGcmVzdWx0GAEgASgLMh8uaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0RHRvIhoKGENyZWF0ZURlbW9Qcm9qZWN0UmVxdWVzdCJMChlDcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEi8KBnJlc3VsdBgBIAEoCzIfLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdER0byJXChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIzCgRib2R5GAIgASgLMiUuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0RHRvIkgKFVVwZGF0ZVByb2plY3RSZXNwb25zZRIvCgZyZXN1bHQYASABKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REdG8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlIkUKHkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg8KB3JlZnJlc2gYAiABKAgiZwofR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzUmVzcG9uc2VEdG8iPgooR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInsKKUdldFByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8ikAEKKVNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSTwoEYm9keRgCIAEoCzJBLmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3REdG8ifAoqU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8iMwodR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJdCh5HZXRNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvIiwKFlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJWChdSZWxvYWRNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8igAEKIUNsb25lTW9ub1NwZWNzUmVwb3NpdG9yaWVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkcKBGJvZHkYAiABKAsyOS5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yaWVzUmVxdWVzdER0byJwCiJDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0byJpCihSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoEcGF0aBgCIAEoCUgAiAEBEg0KBWZvcmNlGAMgASgIQgcKBV9wYXRoInQKKVJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0byIwChpJbml0aWFsaXplTW9ub1NwZWNzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIloKG0luaXRpYWxpemVNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8ifgogVXBkYXRlTW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRJGCgRib2R5GAIgASgLMjguaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0byJgCiFVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvImcKH0dldFByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIcCg9yZXBvc2l0b3J5X3BhdGgYAiABKAlIAIgBAUISChBfcmVwb3NpdG9yeV9wYXRoImEKIEdldFByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdERlc2lnbkRvY3VtZW50RHRvIoABCiBTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkgKBGJvZHkYAiABKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8ibAohU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3VsdER0byI2CiBHZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJImMKIUdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXNwb25zZRI+CgZyZXN1bHQYASABKAsyLi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhEdG8iRwojR2V0UHJvamVjdERlc2lnblNpdGVEb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRzbHVnGAIgASgJImkKJEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlRG9jdW1lbnREdG8ieQocVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKC2JyYW5jaF9uYW1lGAIgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgDIAEoCUgAiAEBQhIKEF9yZXBvc2l0b3J5X3BhdGgiYQodVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucHJvamVjdC52MS5CcmFuY2hWYWxpZGF0aW9uUmVzcG9uc2VEdG8iKgoaVmFsaWRhdGVQcm9qZWN0UGF0aFJlcXVlc3QSDAoEcGF0aBgBIAEoCSJdChtWYWxpZGF0ZVByb2plY3RQYXRoUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5QYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvIlcKGlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0EjkKBGJvZHkYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc1JlcXVlc3REdG8iWwobU2NhbkdpdFJlcG9zaXRvcmllc1Jlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnByb2plY3QudjEuU2NhbkdpdFJlcG9zUmVzcG9uc2VEdG8iYAoeVmFsaWRhdGVNb25vU3BlY3NDb25maWdSZXF1ZXN0Ej4KBGJvZHkYASABKAsyMC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzUmVxdWVzdER0byJkCh9WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAEoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVNb25vU3BlY3NSZXNwb25zZUR0byItChdHZXRQcm9qZWN0VmF1bHRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIlUKGEdldFByb2plY3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIqABCh5PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgCIAEoCUgAiAEBEhUKCHN1Yl9wYXRoGAMgASgJSAGIAQFCHQobX2N1cnJlbnRfaW50ZXJmYWNlX2xhbmd1YWdlQgsKCV9zdWJfcGF0aCJlCh9PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnByb2plY3QudjEuVnNDb2RlU2VydmVyTGF1bmNoUmVzcG9uc2VEdG8iNQofR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIl4KIEdldFByb2plY3RHaXRXYXRjaFN0YXR1c1Jlc3BvbnNlEjoKBnJlc3VsdBgBIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdEdpdFdhdGNoU3RhdHVzIkAKDlN1YlJlcG9JbmZvRHRvEgwKBG5hbWUYASABKAkSDAoEcGF0aBgCIAEoCRISCgpoYXNfYWdlbnRzGAMgASgIIvEDCgpQcm9qZWN0RHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjEKDWNyZWF0aW9uX3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKFmxhc3RfbW9kaWZpY2F0aW9uX3RpbWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWlzX21vbm9fc3BlY3MYByABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAggASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgJIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgKIAEoCEgDiAEBEj0KEHN1Yl9yZXBvc2l0b3JpZXMYCyADKAsyIy5oYWdpY29kZS5wcm9qZWN0LnYxLlN1YlJlcG9JbmZvRHRvQg4KDF9kZXNjcmlwdGlvbkIVChNfbW9ub19zcGVjc192ZXJzaW9uQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiWAoQQ3JlYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iWAoQVXBkYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24i5gIKG1Byb2plY3RTdGFuZGFyZFdvcmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIWCglwYXJlbnRfaWQYAyABKAlIAIgBARIPCgdlbmFibGVkGAQgASgIEg0KBW9yZGVyGAUgASgFEhMKC3NvdXJjZV90eXBlGAYgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAcgASgJEgwKBHRhZ3MYCCADKAkSFQoIbGFuZ3VhZ2UYCSABKAlIAYgBARJQCghtZXRhZGF0YRgKIAMoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIu0CChxQcm9qZWN0U3RhbmRhcmRXb3JkUGhyYXNlRHRvEhAKCGdyb3VwX2lkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIWCg5zdWJtaXR0ZWRfdGV4dBgEIAEoCRIPCgdlbmFibGVkGAUgASgIEg0KBW9yZGVyGAYgASgFEhMKC3NvdXJjZV90eXBlGAcgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAggASgJEgwKBHRhZ3MYCSADKAkSFQoIbGFuZ3VhZ2UYCiABKAlIAIgBARJRCghtZXRhZGF0YRgLIAMoCzI/LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFBocmFzZUR0by5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUILCglfbGFuZ3VhZ2UinAEKHFByb2plY3RTdGFuZGFyZFdvcmRTb3VyY2VEdG8SDAoEdHlwZRgBIAEoCRIVCg1yZWxhdGl2ZV9wYXRoGAIgASgJEhEKCWZ1bGxfcGF0aBgDIAEoCRIOCgZleGlzdHMYBCABKAgSNAoQbGFzdF9tb2RpZmllZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiygEKIVByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGAoLc291cmNlX3R5cGUYBCABKAlIAIgBARIaCg1yZWxhdGl2ZV9wYXRoGAUgASgJSAGIAQESEgoFZmllbGQYBiABKAlIAogBAUIOCgxfc291cmNlX3R5cGVCEAoOX3JlbGF0aXZlX3BhdGhCCAoGX2ZpZWxkIr0DCh9Qcm9qZWN0U3RhbmRhcmRXb3Jkc1Jlc3BvbnNlRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKZnJvbV9jYWNoZRgFIAEoCBJCCgdzb3VyY2VzGAYgAygLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3JkU291cmNlRHRvEkAKBmdyb3VwcxgHIAMoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvEkIKB3BocmFzZXMYCCADKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRQaHJhc2VEdG8SSwoLZGlhZ25vc3RpY3MYCSADKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0byK6AgolUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZVBocmFzZUR0bxILCgNrZXkYASABKAkSDQoFbGFiZWwYAiABKAkSFgoOc3VibWl0dGVkX3RleHQYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSACIAQESWgoIbWV0YWRhdGEYCCADKAsySC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCwoJX2xhbmd1YWdlIpIDCiRQcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSFgoJcGFyZW50X2lkGAMgASgJSACIAQESDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSAGIAQESWQoIbWV0YWRhdGEYCCADKAsyRy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVHcm91cER0by5NZXRhZGF0YUVudHJ5EksKB3BocmFzZXMYCSADKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8aLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIsQBCiVQcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEhMKC3NvdXJjZV90eXBlGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhMKC2dyb3VwX2NvdW50GAQgASgFEhQKDHBocmFzZV9jb3VudBgFIAEoBRI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLWAQokUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhMKC3NvdXJjZV90eXBlGAIgASgJEhUKDXJlbGF0aXZlX3BhdGgYAyABKAkSEQoJZnVsbF9wYXRoGAQgASgJEg4KBmV4aXN0cxgFIAEoCBI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglzaWduYXR1cmUYByABKAkilgEKIVByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxITCgtncm91cF9jb3VudBgBIAEoBRIUCgxwaHJhc2VfY291bnQYAiABKAUSHAoUZGlzYWJsZWRfZW50cnlfY291bnQYAyABKAUSEQoJdGFnX2NvdW50GAQgASgFEhUKDXNvdXJjZV9zdGF0dXMYBSABKAki8wQKKVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudERvY3VtZW50RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASSQoGZ3JvdXBzGAUgAygLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SQgoHc291cmNlcxgGIAMoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFNvdXJjZUR0bxJaChZ1c2VyX292ZXJsYXlfc3VtbWFyaWVzGAcgAygLMjouaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEkoKCnN0YXRpc3RpY3MYCCABKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxJRCg5zb3VyY2VfdmVyc2lvbhgJIAEoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEksKC2RpYWdub3N0aWNzGAogAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0RpYWdub3N0aWNEdG8i5AEKLFNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEkkKBmdyb3VwcxgCIAMoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZUdyb3VwRHRvElEKDnNvdXJjZV92ZXJzaW9uGAMgASgLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc1NvdXJjZVZlcnNpb25EdG8iVQojTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJEhIKCnZhbHVlX2tpbmQYAyABKAki5gQKIE1vbm9TcGVjc01hbmFnZW1lbnRSZXBvc2l0b3J5RHRvEgwKBG5hbWUYASABKAkSEQoEY29kZRgCIAEoCUgAiAEBEgwKBHBhdGgYAyABKAkSEAoDdXJsGAQgASgJSAGIAQESGQoMZGlzcGxheV9uYW1lGAUgASgJSAKIAQESEQoEdHlwZRgGIAEoCUgDiAEBEhEKBGljb24YByABKAlIBIgBARIQCghvcHRpb25hbBgIIAEoCBIMCgR0YWdzGAkgAygJEkoKCG1ldGFkYXRhGAogAygLMjguaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50TWV0YWRhdGFFbnRyeUR0bxIZChFpc192YWxpZF9naXRfcmVwbxgLIAEoCBITCgZicmFuY2gYDCABKAlIBYgBARIfChdoYXNfdW5jb21taXR0ZWRfY2hhbmdlcxgNIAEoCBIdChV1bnB1c2hlZF9jb21taXRfY291bnQYDiABKAUSGwoTaGFzX3RyYWNraW5nX2JyYW5jaBgPIAEoCBI1Cg90cmFja2luZ19icmFuY2gYECABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSEwoLYWhlYWRfY291bnQYESABKAUSFAoMYmVoaW5kX2NvdW50GBIgASgFEhcKCnN5bmNfc3RhdGUYEyABKAlIBogBAUIHCgVfY29kZUIGCgRfdXJsQg8KDV9kaXNwbGF5X25hbWVCBwoFX3R5cGVCBwoFX2ljb25CCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSKiAgoWTW9ub1NwZWNzTWFuYWdlbWVudER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhMKC2NvbmZpZ19wYXRoGAMgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYBCABKAgSFAoMeWFtbF9wcmV2aWV3GAUgASgJEksKDHJlcG9zaXRvcmllcxgGIAMoCzI1LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudFJlcG9zaXRvcnlEdG8SSgoIbWV0YWRhdGEYByADKAsyOC5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnRNZXRhZGF0YUVudHJ5RHRvImMKIU1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yeVJlc3VsdER0bxIMCgRwYXRoGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQFCCgoIX21lc3NhZ2UicAolTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0bxJHCgdyZXN1bHRzGAEgAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDbG9uZVJlcG9zaXRvcnlSZXN1bHREdG8iTwokTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXF1ZXN0RHRvEg0KBXBhdGhzGAEgAygJEhgKEGluY2x1ZGVfb3B0aW9uYWwYAiABKAgiZQoiTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0bxIMCgRwYXRoGAEgASgJEg8KB3JlbW92ZWQYAiABKAgSFAoHbWVzc2FnZRgDIAEoCUgAiAEBQgoKCF9tZXNzYWdlIoQCCiNVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYAyABKAgSSwoMcmVwb3NpdG9yaWVzGAQgAygLMjUuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50UmVwb3NpdG9yeUR0bxJKCghtZXRhZGF0YRgFIAMoCzI4LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8inQEKGFByb2plY3REZXNpZ25Eb2N1bWVudER0bxIMCgRwYXRoGAEgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgCIAEoCUgAiAEBEg8KB2NvbnRlbnQYAyABKAkSDgoGZXhpc3RzGAQgASgIEhQKB3ZlcnNpb24YBSABKAlIAYgBAUISChBfcmVwb3NpdG9yeV9wYXRoQgoKCF92ZXJzaW9uIoYBCiJTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzdWx0RHRvEgwKBHBhdGgYASABKAkSHAoPcmVwb3NpdG9yeV9wYXRoGAIgASgJSACIAQESDwoHY3JlYXRlZBgDIAEoCBIPCgd2ZXJzaW9uGAQgASgJQhIKEF9yZXBvc2l0b3J5X3BhdGgingEKJVVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8SHAoPcmVwb3NpdG9yeV9wYXRoGAEgASgJSACIAQESDwoHY29udGVudBgCIAEoCRIdChBleHBlY3RlZF92ZXJzaW9uGAMgASgJSAGIAQFCEgoQX3JlcG9zaXRvcnlfcGF0aEITChFfZXhwZWN0ZWRfdmVyc2lvbiLAAQoeUHJvamVjdERlc2lnblNpdGVJbmRleEVudHJ5RHRvEgwKBHNsdWcYASABKAkSDQoFdGl0bGUYAiABKAkSDwoHc3VtbWFyeRgDIAEoCRISCgpkZXRhaWxfdXJsGAQgASgJEhsKE2Rlc2lnbl9kb3dubG9hZF91cmwYBSABKAkSHwoXcHJldmlld19saWdodF9pbWFnZV91cmwYBiABKAkSHgoWcHJldmlld19kYXJrX2ltYWdlX3VybBgHIAEoCSK+AgoZUHJvamVjdERlc2lnblNpdGVJbmRleER0bxITCgtjYXRhbG9nX3VybBgBIAEoCRIVCg1zb3VyY2Vfc3RhdHVzGAIgASgJEhMKC2VudHJ5X2NvdW50GAMgASgFEkQKB2VudHJpZXMYBCADKAsyMy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhFbnRyeUR0bxIaCg1jYWNoZV9jb250cm9sGAUgASgJSACIAQESEgoFZV90YWcYBiABKAlIAYgBARIaCg1sYXN0X21vZGlmaWVkGAcgASgJSAKIAQESFAoHZXhwaXJlcxgIIAEoCUgDiAEBQhAKDl9jYWNoZV9jb250cm9sQggKBl9lX3RhZ0IQCg5fbGFzdF9tb2RpZmllZEIKCghfZXhwaXJlcyKZAgocUHJvamVjdERlc2lnblNpdGVEb2N1bWVudER0bxIMCgRzbHVnGAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB2NvbnRlbnQYAyABKAkSEgoKZGV0YWlsX3VybBgEIAEoCRIbChNkZXNpZ25fZG93bmxvYWRfdXJsGAUgASgJEhoKDWNhY2hlX2NvbnRyb2wYBiABKAlIAIgBARISCgVlX3RhZxgHIAEoCUgBiAEBEhoKDWxhc3RfbW9kaWZpZWQYCCABKAlIAogBARIUCgdleHBpcmVzGAkgASgJSAOIAQFCEAoOX2NhY2hlX2NvbnRyb2xCCAoGX2VfdGFnQhAKDl9sYXN0X21vZGlmaWVkQgoKCF9leHBpcmVzImoKG0JyYW5jaFZhbGlkYXRpb25SZXNwb25zZUR0bxIOCgZleGlzdHMYASABKAgSEAoIaXNfdmFsaWQYAiABKAgSFAoMaXNfYXZhaWxhYmxlGAMgASgIEhMKC2JyYW5jaF9uYW1lGAQgASgJIogDChlQYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvEhAKCGlzX3ZhbGlkGAEgASgIEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhYKCXBhdGhfdHlwZRgEIAEoCUgAiAEBEiIKFWhhc19tb25vX3NwZWNzX2NvbmZpZxgFIAEoCEgBiAEBEiMKFm1vbm9fc3BlY3NfY29uZmlnX3BhdGgYBiABKAlIAogBARImChltb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5GAcgASgJSAOIAQESKwoebW9ub19zcGVjc19jb21taXRfd2hlbl9hcmNoaXZlGAggASgISASIAQFCDAoKX3BhdGhfdHlwZUIYChZfaGFzX21vbm9fc3BlY3NfY29uZmlnQhkKF19tb25vX3NwZWNzX2NvbmZpZ19wYXRoQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiVgoKR2l0UmVwb0R0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSFQoNcmVsYXRpdmVfcGF0aBgDIAEoCRIVCg1pc19tb25vX3NwZWNzGAQgASgIIqQBChdTY2FuR2l0UmVwb3NSZXNwb25zZUR0bxI1CgxyZXBvc2l0b3JpZXMYASADKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLkdpdFJlcG9EdG8SEwoLdG90YWxfY291bnQYAiABKAUSDwoHc3VjY2VzcxgDIAEoCBIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UijwEKFlNjYW5HaXRSZXBvc1JlcXVlc3REdG8SEQoJcm9vdF9wYXRoGAEgASgJEhEKCW1heF9kZXB0aBgCIAEoBRIWCg5leGNsdWRlX2hpZGRlbhgDIAEoCBIdChVtYXhfZm9sZGVyc19wZXJfbGV2ZWwYBCABKAUSGAoQZXhjbHVkZV9wYXR0ZXJucxgFIAMoCSJEChlNb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEg8KB3ZlcnNpb24YASABKAkSFgoOcmVwb19kaXJlY3RvcnkYAiABKAkikgEKHFZhbGlkYXRlTW9ub1NwZWNzUmVzcG9uc2VEdG8SEAoIaXNfdmFsaWQYASABKAgSPgoGY29uZmlnGAIgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEhAKCHdhcm5pbmdzGAMgAygJEg4KBmVycm9ycxgEIAMoCSIzChtWYWxpZGF0ZU1vbm9TcGVjc1JlcXVlc3REdG8SFAoMcHJvamVjdF9wYXRoGAEgASgJInwKG1ZhdWx0Qm9vdHN0cmFwRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGgoNcmVsYXRpdmVfcGF0aBgEIAEoCUgAiAEBQhAKDl9yZWxhdGl2ZV9wYXRoIt8CCgxWYXVsdEl0ZW1EdG8SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEhUKDXBoeXNpY2FsX3BhdGgYBCABKAkSFAoHZ2l0X3VybBgFIAEoCUgAiAEBEjIKDmNyZWF0ZWRfYXRfdXRjGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCg51cGRhdGVkX2F0X3V0YxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASTwoVYm9vdHN0cmFwX2RpYWdub3N0aWNzGAggAygLMjAuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEJvb3RzdHJhcERpYWdub3N0aWNEdG8SDQoFc2NvcGUYCSABKAkSFwoKcHJvamVjdF9pZBgKIAEoCUgBiAEBQgoKCF9naXRfdXJsQg0KC19wcm9qZWN0X2lkIn4KFFZhdWx0TGlzdFJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKBWl0ZW1zGAIgAygLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8inwQKHFZzQ29kZVNlcnZlclJ1bnRpbWVTdGF0dXNEdG8SDgoGc3RhdHVzGAEgASgJEhsKE2FjdGl2ZV9jYXBhYmlsaXRpZXMYAiADKAkSEQoEaG9zdBgDIAEoCUgAiAEBEhwKD2NvbmZpZ3VyZWRfcG9ydBgEIAEoBUgBiAEBEhsKDmVmZmVjdGl2ZV9wb3J0GAUgASgFSAKIAQESFQoIYmFzZV91cmwYBiABKAlIA4gBARIWCglhdXRoX21vZGUYByABKAlIBIgBARITCgZzb3VyY2UYCCABKAlIBYgBARIVCg1zb3VyY2VfbG9ja2VkGAkgASgIEhIKCmhhc19zZWNyZXQYCiABKAgSGgoNc2VjcmV0X3NvdXJjZRgLIAEoCUgGiAEBEjkKFWxhc3RfYXR0ZW1wdGVkX2F0X3V0YxgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKbGFzdF9lcnJvchgNIAEoCUgHiAEBEhsKDnN0YXR1c19tZXNzYWdlGA4gASgJSAiIAQFCBwoFX2hvc3RCEgoQX2NvbmZpZ3VyZWRfcG9ydEIRCg9fZWZmZWN0aXZlX3BvcnRCCwoJX2Jhc2VfdXJsQgwKCl9hdXRoX21vZGVCCQoHX3NvdXJjZUIQCg5fc2VjcmV0X3NvdXJjZUINCgtfbGFzdF9lcnJvckIRCg9fc3RhdHVzX21lc3NhZ2UinAIKHVZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvEhIKCmxhdW5jaF91cmwYASABKAkSHQoQY29ubmVjdGlvbl90b2tlbhgCIAEoCUgAiAEBEhEKCW9wZW5fbW9kZRgDIAEoCRJCCgdydW50aW1lGAQgASgLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Wc0NvZGVTZXJ2ZXJSdW50aW1lU3RhdHVzRHRvEhgKC2luc3RhbmNlX2lkGAUgASgJSAGIAQESMgoOZXhwaXJlc19hdF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhMKEV9jb25uZWN0aW9uX3Rva2VuQg4KDF9pbnN0YW5jZV9pZCKXAgoVUHJvamVjdEdpdFdhdGNoU3RhdHVzEh4KFm1vbml0b3JlZF9yZXBvc2l0b3JpZXMYASADKAkSNAoQbGFzdF9zY2FuX2F0X3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoQbmV4dF9zY2FuX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQcmVwb3NpdG9yeV9jb3VudBgEIAEoBRISCgppc19ydW5uaW5nGAUgASgIEiIKGm1heF9tb25pdG9yZWRfcmVwb3NpdG9yaWVzGAYgASgFEiAKGGdpdF9hdXRvX3JlZnJlc2hfZW5hYmxlZBgHIAEoCDL1GAoOUHJvamVjdFNlcnZpY2USZgoNQ3JlYXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJyChFDcmVhdGVEZW1vUHJvamVjdBItLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlRGVtb1Byb2plY3RSZXF1ZXN0Gi4uaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEmYKDVVwZGF0ZVByb2plY3QSKS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USZgoNRGVsZXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRKEAQoXR2V0UHJvamVjdFN0YW5kYXJkV29yZHMSMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRKiAQohR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50Ej0uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0Gj4uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKlAQoiU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudBI+LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3QaPy5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKBAQoWR2V0TW9ub1NwZWNzTWFuYWdlbWVudBIyLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QaMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldE1vbm9TcGVjc01hbmFnZW1lbnRSZXNwb25zZRJsCg9SZWxvYWRNb25vU3BlY3MSKy5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QaLC5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1Jlc3BvbnNlEo0BChpDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllcxI2LmhhZ2ljb2RlLnByb2plY3QudjEuQ2xvbmVNb25vU3BlY3NSZXBvc2l0b3JpZXNSZXF1ZXN0GjcuaGFnaWNvZGUucHJvamVjdC52MS5DbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEqIBCiFSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXQSPS5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlcXVlc3QaPi5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEngKE0luaXRpYWxpemVNb25vU3BlY3MSLy5oYWdpY29kZS5wcm9qZWN0LnYxLkluaXRpYWxpemVNb25vU3BlY3NSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5Jbml0aWFsaXplTW9ub1NwZWNzUmVzcG9uc2USigEKGVVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2UShwEKGEdldFByb2plY3REZXNpZ25Eb2N1bWVudBI0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBo1LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGVNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5TYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGUdldFByb2plY3REZXNpZ25TaXRlSW5kZXgSNS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVzcG9uc2USkwEKHEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnQSOC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXF1ZXN0GjkuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZURvY3VtZW50UmVzcG9uc2USfgoVVmFsaWRhdGVQcm9qZWN0QnJhbmNoEjEuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXF1ZXN0GjIuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXNwb25zZRJ4ChNWYWxpZGF0ZVByb2plY3RQYXRoEi8uaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RQYXRoUmVxdWVzdBowLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVQcm9qZWN0UGF0aFJlc3BvbnNlEngKE1NjYW5HaXRSZXBvc2l0b3JpZXMSLy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5TY2FuR2l0UmVwb3NpdG9yaWVzUmVzcG9uc2UShAEKF1ZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnEjMuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1JlcXVlc3QaNC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnUmVzcG9uc2USbwoQR2V0UHJvamVjdFZhdWx0cxIsLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFZhdWx0c1JlcXVlc3QaLS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RWYXVsdHNSZXNwb25zZRKEAQoXT3BlblByb2plY3RJbkNvZGVTZXJ2ZXISMy5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5Qcm9qZWN0SW5Db2RlU2VydmVyUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuT3BlblByb2plY3RJbkNvZGVTZXJ2ZXJSZXNwb25zZRKHAQoYR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzEjQuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXF1ZXN0GjUuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlByb2plY3QuVjFiBnByb3RvMw",[Ne,rs]),eh=v(se,1),th=v(se,5),nh=v(se,15),oh=v(se,17),rh=v(se,19),ah=v(se,21),ih=v(se,23),sh=v(se,25),lh=v(se,41),ch=v(se,50),dh=v(se,51),uh=v(se,69),mh=v(se,71),hh=v(se,85),bh=We(se,0),Je=oe("Ch9oYWdpY29kZS9wcm9qZWN0L3YxL3ZhdWx0LnByb3RvEhNoYWdpY29kZS5wcm9qZWN0LnYxIhMKEUxpc3RWYXVsdHNSZXF1ZXN0Ik8KEkxpc3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIk4KEkNyZWF0ZVZhdWx0UmVxdWVzdBI4CgRib2R5GAEgASgLMiouaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3REdG8iSAoTQ3JlYXRlVmF1bHRSZXNwb25zZRIxCgZyZXN1bHQYASABKAsyIS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0SXRlbUR0byJaChJVcGRhdGVWYXVsdFJlcXVlc3QSCgoCaWQYASABKAkSOAoEYm9keRgCIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXF1ZXN0RHRvIkgKE1VwZGF0ZVZhdWx0UmVzcG9uc2USMQoGcmVzdWx0GAEgASgLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8iPAoSRGVsZXRlVmF1bHRSZXF1ZXN0EgoKAmlkGAEgASgJEhoKEmRlbGV0ZV9sb2NhbF9maWxlcxgCIAEoCCJSChNEZWxldGVWYXVsdFJlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXNwb25zZUR0byI+ChRHZXRWYXVsdEZpbGVzUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRwYXRoGAIgASgJSACIAQFCBwoFX3BhdGgiVgoVR2V0VmF1bHRGaWxlc1Jlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlTGlzdFJlc3BvbnNlRHRvIjYKGkdldFZhdWx0RmlsZVByZXZpZXdSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBHBhdGgYAiABKAkiXwobR2V0VmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlEkAKBnJlc3VsdBgBIAEoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlRHRvIo4BChxPcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBHBhdGgYAiABKAlIAIgBARInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgDIAEoCUgBiAEBQgcKBV9wYXRoQh0KG19jdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZSJjCh1PcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wcm9qZWN0LnYxLlZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvImwKFUNyZWF0ZVZhdWx0UmVxdWVzdER0bxIMCgRuYW1lGAEgASgJEgwKBHR5cGUYAiABKAkSFQoNcGh5c2ljYWxfcGF0aBgDIAEoCRIUCgdnaXRfdXJsGAQgASgJSACIAQFCCgoIX2dpdF91cmwibAoVVXBkYXRlVmF1bHRSZXF1ZXN0RHRvEgwKBG5hbWUYASABKAkSDAoEdHlwZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhQKB2dpdF91cmwYBCABKAlIAIgBAUIKCghfZ2l0X3VybCKdAQoWRGVsZXRlVmF1bHRSZXNwb25zZUR0bxIKCgJpZBgBIAEoCRIPCgdkZWxldGVkGAIgASgIEiQKHGRlbGV0ZV9sb2NhbF9maWxlc19yZXF1ZXN0ZWQYAyABKAgSIwobbG9jYWxfZmlsZXNfZGVsZXRpb25fc3RhdHVzGAQgASgJEhsKE2xvY2FsX2ZpbGVzX2RlbGV0ZWQYBSABKAgizAEKEVZhdWx0RmlsZUVudHJ5RHRvEhUKDXJlbGF0aXZlX3BhdGgYASABKAkSEQoJZmlsZV9uYW1lGAIgASgJEhQKDGlzX2RpcmVjdG9yeRgDIAEoCBIRCglleHRlbnNpb24YBCABKAkSEgoKc2l6ZV9ieXRlcxgFIAEoAxI1ChFsYXN0X21vZGlmaWVkX3V0YxgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRcHJldmlld19zdXBwb3J0ZWQYByABKAgimAIKGFZhdWx0RmlsZUxpc3RSZXNwb25zZUR0bxIQCgh2YXVsdF9pZBgBIAEoCRISCgp2YXVsdF9uYW1lGAIgASgJEhUKDXBoeXNpY2FsX3BhdGgYAyABKAkSDgoGc3RhdHVzGAQgASgJEhcKCmVycm9yX2NvZGUYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESFAoMaXNfdHJ1bmNhdGVkGAcgASgIEhgKEHRvdGFsX2ZpbGVfY291bnQYCCABKAUSNQoFaXRlbXMYCSADKAsyJi5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0RmlsZUVudHJ5RHRvQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIpQDChtWYXVsdEZpbGVQcmV2aWV3UmVzcG9uc2VEdG8SEAoIdmF1bHRfaWQYASABKAkSEgoKdmF1bHRfbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhUKDXJlbGF0aXZlX3BhdGgYBCABKAkSEQoJZmlsZV9uYW1lGAUgASgJEhEKCWV4dGVuc2lvbhgGIAEoCRISCgpzaXplX2J5dGVzGAcgASgDEjUKEWxhc3RfbW9kaWZpZWRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZzdGF0dXMYCSABKAkSFwoKZXJyb3JfY29kZRgKIAEoCUgAiAEBEhQKB21lc3NhZ2UYCyABKAlIAYgBARIZChFwcmV2aWV3X3N1cHBvcnRlZBgMIAEoCBIZChFjb250ZW50X3RydW5jYXRlZBgNIAEoCBIUCgdjb250ZW50GA4gASgJSAKIAQFCDQoLX2Vycm9yX2NvZGVCCgoIX21lc3NhZ2VCCgoIX2NvbnRlbnQy9QUKDFZhdWx0U2VydmljZRJdCgpMaXN0VmF1bHRzEiYuaGFnaWNvZGUucHJvamVjdC52MS5MaXN0VmF1bHRzUmVxdWVzdBonLmhhZ2ljb2RlLnByb2plY3QudjEuTGlzdFZhdWx0c1Jlc3BvbnNlEmAKC0NyZWF0ZVZhdWx0EicuaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3QaKC5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVZhdWx0UmVzcG9uc2USYAoLVXBkYXRlVmF1bHQSJy5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVZhdWx0UmVxdWVzdBooLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXNwb25zZRJgCgtEZWxldGVWYXVsdBInLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXF1ZXN0GiguaGFnaWNvZGUucHJvamVjdC52MS5EZWxldGVWYXVsdFJlc3BvbnNlEmYKDUdldFZhdWx0RmlsZXMSKS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZXNSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5HZXRWYXVsdEZpbGVzUmVzcG9uc2USeAoTR2V0VmF1bHRGaWxlUHJldmlldxIvLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0VmF1bHRGaWxlUHJldmlld1JlcXVlc3QaMC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZVByZXZpZXdSZXNwb25zZRJ+ChVPcGVuVmF1bHRJbkNvZGVTZXJ2ZXISMS5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlcXVlc3QaMi5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuUHJvamVjdC5WMWIGcHJvdG8z",[Ne,se]),gh=v(Je,1),ph=v(Je,3),Ah=v(Je,5),fh=v(Je,7),Zh=v(Je,9),Rh=v(Je,11),Eh=v(Je,14),Sh=v(Je,15),Vh=We(Je,0),Qe=oe("CitoYWdpY29kZS9jb21tdW5pdHkvdjEvc2NoZWR1bGVkX3BsYW5zLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiQwoZTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiWgoaTGlzdFNjaGVkdWxlZFBsYW5zUmVzcG9uc2USPAoGcmVzdWx0GAEgAygLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSIlChdHZXRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJYChhHZXRTY2hlZHVsZWRQbGFuUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSI2CiBMaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIm0KIUxpc3RTY2hlZHVsZWRQbGFuUHJvYmxlbXNSZXNwb25zZRJICgZyZXN1bHQYASADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkRlZmluaXRpb25Qcm9ibGVtRHRvIvMBCiNMaXN0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VzUmVxdWVzdBIYCgtyYW5nZV9zdGFydBgBIAEoCUgAiAEBEhYKCXJhbmdlX2VuZBgCIAEoCUgBiAEBEh4KEWRpc3BsYXlfdGltZV96b25lGAMgASgJSAKIAQESEwoGY3Vyc29yGAQgASgJSAOIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgEiAEBQg4KDF9yYW5nZV9zdGFydEIMCgpfcmFuZ2VfZW5kQhQKEl9kaXNwbGF5X3RpbWVfem9uZUIJCgdfY3Vyc29yQg0KC19wcm9qZWN0X2lkInIKJExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VQYWdlUmVzcG9uc2UiWwoaQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSPQoEYm9keRgBIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiZwoaVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkSPQoEYm9keRgCIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoaRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiHQobRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlInkKIkVkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlcXVlc3QSCgoCaWQYASABKAkSRwoEYm9keRgCIAEoCzI5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0ImMKI0VkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiYAokRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0EgoKAmlkGAEgASgJEhoKDW9jY3VycmVuY2VfYXQYAiABKAlIAIgBAUIQCg5fb2NjdXJyZW5jZV9hdCJlCiVEZWxldGVTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiJQoXUnVuU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiVQoYUnVuU2NoZWR1bGVkUGxhblJlc3BvbnNlEjkKBnJlc3VsdBgBIAEoCzIpLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXNzaW9uUmVzcG9uc2VEdG8iJwoZU3RhcnRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpTdGFydFNjaGVkdWxlZFBsYW5SZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvIjUKJ0NvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBIKCgJpZBgBIAEoCSJuCihDb25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUnVuQWNjZXB0ZWREdG8iNAomQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlcXVlc3QSCgoCaWQYASABKAkiZwonQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoVU2NoZWR1bGVkUGxhbkFnZW50RHRvEg8KB2hlcm9faWQYASABKAkiawoZU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxIQCghzdHJhdGVneRgBIAEoCRI8CgZhZ2VudHMYAiADKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50RHRvIuABCidTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USKgoGcnVuX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgRuYW1lGAIgASgJSACIAQESRAoKYWdlbnRfcG9vbBgDIAEoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuQWdlbnRQb29sRHRvEicKB3BheWxvYWQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCBwoFX25hbWUi4wEKHlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIvCgtvcmlnaW5hbF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEa2luZBgCIAEoCRJQCghvdmVycmlkZRgDIAEoCzI+LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USHAoPaW5wdXRfZmlsZV9wYXRoGAQgASgJSACIAQFCEgoQX2lucHV0X2ZpbGVfcGF0aCI4ChZTY2hlZHVsZWRQbGFuUmVwZWF0RHRvEgwKBHJ1bGUYASABKAkSEAoId2Vla2RheXMYAiADKAkiiAIKGlNjaGVkdWxlZFBsYW5RdW90YVJlc2V0RHRvEhMKBndpbmRvdxgBIAEoCUgAiAEBEiIKFW1pbl9yZW1haW5pbmdfcGVyY2VudBgCIAEoBUgBiAEBEiUKGG1heF9taW51dGVzX2JlZm9yZV9yZXNldBgDIAEoBUgCiAEBEigKG3JlcXVpcmVfbWFudWFsX2NvbmZpcm1hdGlvbhgEIAEoCEgDiAEBQgkKB193aW5kb3dCGAoWX21pbl9yZW1haW5pbmdfcGVyY2VudEIbChlfbWF4X21pbnV0ZXNfYmVmb3JlX3Jlc2V0Qh4KHF9yZXF1aXJlX21hbnVhbF9jb25maXJtYXRpb24i9wIKGFNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxIMCgRtb2RlGAEgASgJEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoJdGltZV96b25lGAMgASgJSACIAQESFwoKc3RhcnRfZGF0ZRgEIAEoCUgBiAEBEhUKCGVuZF9kYXRlGAUgASgJSAKIAQESGAoLdGltZV9vZl9kYXkYBiABKAlIA4gBARI9CgZyZXBlYXQYByABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlcGVhdER0bxJGCgtxdW90YV9yZXNldBgIIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUXVvdGFSZXNldER0b0IMCgpfdGltZV96b25lQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki0AYKFVNjaGVkdWxlZFBsYW5SZXNwb25zZRIKCgJpZBgBIAEoCRIMCgR0eXBlGAIgASgJEg0KBXNjb3BlGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSIQoUZGVmaW5pdGlvbl9maWxlX3BhdGgYBSABKAlIAIgBARIMCgRuYW1lGAYgASgJEg8KB2VuYWJsZWQYByABKAgSEQoEaWNvbhgIIAEoCUgBiAEBEhIKBWNvbG9yGAkgASgJSAKIAQESLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoIc2NoZWR1bGUYDCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblNjaGVkdWxlRHRvEkQKCmFnZW50X3Bvb2wYDSABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGA4gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg0KBXN0YXRlGA8gASgJEi8KC25leHRfcnVuX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJJCgpleGNlcHRpb25zGBEgAygLMjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIcCg9pbnB1dF9maWxlX3BhdGgYEiABKAlIA4gBARI7ChdsYXN0X3RyaWdnZXJlZF9yZXNldF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASWQoVcGVuZGluZ19xdW90YV90cmlnZ2VyGBQgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5QZW5kaW5nUXVvdGFUcmlnZ2VyRHRvQhcKFV9kZWZpbml0aW9uX2ZpbGVfcGF0aEIHCgVfaWNvbkIICgZfY29sb3JCEgoQX2lucHV0X2ZpbGVfcGF0aCKJAQojU2NoZWR1bGVkUGxhblBlbmRpbmdRdW90YVRyaWdnZXJEdG8SLQoJcmFpc2VkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg93aW5kb3dfcmVzZXRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkcKIVNjaGVkdWxlZFBsYW5EZWZpbml0aW9uUHJvYmxlbUR0bxIRCglmaWxlX3BhdGgYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLTAQofU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIMCgRtb2RlGAEgASgJEhEKBHJ1bGUYAiABKAlIAIgBARIQCgh3ZWVrZGF5cxgDIAMoCRIXCgpzdGFydF9kYXRlGAQgASgJSAGIAQESFQoIZW5kX2RhdGUYBSABKAlIAogBARIYCgt0aW1lX29mX2RheRgGIAEoCUgDiAEBQgcKBV9ydWxlQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki6gMKH1NjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USDwoHcGxhbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEjEKDW9jY3VycmVuY2VfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBG5hbWUYBCABKAkSDAoEdHlwZRgFIAEoCRIPCgdlbmFibGVkGAYgASgIEhEKBGljb24YByABKAlIAIgBARISCgVjb2xvchgIIAEoCUgBiAEBEg0KBXN0YXRlGAkgASgJEh8KEnNjaGVkdWxlX3RpbWVfem9uZRgKIAEoCUgCiAEBEkoKCnJlY3VycmVuY2UYCyABKAsyNi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIvCgtuZXh0X3J1bl9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLb3JpZ2luYWxfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2lzX21vZGlmaWVkGA4gASgIQgcKBV9pY29uQggKBl9jb2xvckIVChNfc2NoZWR1bGVfdGltZV96b25lIpMCCiNTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVBhZ2VSZXNwb25zZRIvCgtyYW5nZV9zdGFydBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJcmFuZ2VfZW5kGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZChFkaXNwbGF5X3RpbWVfem9uZRgDIAEoCRJHCgdlbnRyaWVzGAQgAygLMjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USGAoLbmV4dF9jdXJzb3IYBSABKAlIAIgBAUIOCgxfbmV4dF9jdXJzb3Ii0QIKGFNjaGVkdWxlZFBsYW5TYXZlUmVxdWVzdBIMCgR0eXBlGAEgASgJEhIKBXNjb3BlGAIgASgJSACIAQESDAoEbmFtZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIEhEKBGljb24YBSABKAlIAYgBARISCgVjb2xvchgGIAEoCUgCiAEBEkEKCHNjaGVkdWxlGAcgASgLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxJECgphZ2VudF9wb29sGAggASgLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5BZ2VudFBvb2xEdG8SJwoHcGF5bG9hZBgJIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUIICgZfc2NvcGVCBwoFX2ljb25CCAoGX2NvbG9yIo4CCiJTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0EjEKDW9jY3VycmVuY2VfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoEbmFtZRgDIAEoCUgAiAEBEkQKCmFnZW50X3Bvb2wYBCABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGAUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlQgcKBV9uYW1lIs4DChJDaGF0SGVyb1N1bW1hcnlEdG8SDwoHaGVyb19pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoEaWNvbhgEIAEoCUgBiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBSABKAkSGQoMYWdlbnRfY2xpX2lkGAYgASgJSAKIAQESGwoOYWdlbnRfY2xpX25hbWUYByABKAlIA4gBARIbCg5hZ2VudF9jbGlfaWNvbhgIIAEoCUgEiAEBEhUKCG1vZGVsX2lkGAkgASgJSAWIAQESFwoKbW9kZWxfbmFtZRgKIAEoCUgGiAEBEhcKCm1vZGVsX2ljb24YCyABKAlIB4gBARIiChVzZWNvbmRhcnlfbW9kZWxfbGFiZWwYDCABKAlICIgBAUIOCgxfZGVzY3JpcHRpb25CBwoFX2ljb25CDwoNX2FnZW50X2NsaV9pZEIRCg9fYWdlbnRfY2xpX25hbWVCEQoPX2FnZW50X2NsaV9pY29uQgsKCV9tb2RlbF9pZEINCgtfbW9kZWxfbmFtZUINCgtfbW9kZWxfaWNvbkIYChZfc2Vjb25kYXJ5X21vZGVsX2xhYmVsIjgKFE9wZW5TcGVjVGFza1Byb2dyZXNzEhEKCWNvbXBsZXRlZBgBIAEoBRINCgV0b3RhbBgCIAEoBSKAAgoQT3BlblNwZWNGaWxlSW5mbxIRCglmaWxlX25hbWUYASABKAkSFQoNcmVsYXRpdmVfcGF0aBgCIAEoCRIOCgZleGlzdHMYAyABKAgSEQoJZmlsZV90eXBlGAQgASgJEhMKC2lzX3JlcXVpcmVkGAUgASgIEhMKC2lzX2FyY2hpdmVkGAYgASgIEjEKDWFyY2hpdmVkX2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkIKDXRhc2tfcHJvZ3Jlc3MYCCABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuT3BlblNwZWNUYXNrUHJvZ3Jlc3MiXgoRT3BlblNwZWNGaWxlc0luZm8SEQoJYmFzZV9wYXRoGAEgASgJEjYKBWZpbGVzGAIgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLk9wZW5TcGVjRmlsZUluZm8izAEKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCEIXChVfZXhlY3V0aW9uX21lc3NhZ2VfaWQigAEKFlNlc3Npb25Ob3RpZmljYXRpb25EdG8SDAoEa2luZBgBIAEoCRIvCgtvYnNlcnZlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJwoHcGF5bG9hZBgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSLtAQoWU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIaCg1wcm9tcHRfdG9rZW5zGAEgASgFSACIAQESIQoUY2FjaGVkX3Byb21wdF90b2tlbnMYAiABKAVIAYgBARIeChFjb21wbGV0aW9uX3Rva2VucxgDIAEoBUgCiAEBEjMKD2xhc3RfdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCEAoOX3Byb21wdF90b2tlbnNCFwoVX2NhY2hlZF9wcm9tcHRfdG9rZW5zQhQKEl9jb21wbGV0aW9uX3Rva2VucyJfChRTdGFnZUV4ZWN1dG9ySW5mb0R0bxIVCg1wcm92aWRlcl90eXBlGAEgASgJEjAKDGxhc3RfdXBkYXRlZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAivAIKFVN0YWdlSGVyb1NlbGVjdGlvbkR0bxIRCglzdGFnZV9rZXkYASABKAkSEgoKc2NyaXB0X2tleRgCIAEoCRIVCg1zY2VuYXJpb19uYW1lGAMgASgJEhQKB2hlcm9faWQYBCABKAlIAIgBARIWCgloZXJvX25hbWUYBSABKAlIAYgBARIWCgloZXJvX2ljb24YBiABKAlIAogBARIVCg1leGVjdXRvcl90eXBlGAcgASgJEhUKDXVzZWRfZmFsbGJhY2sYCCABKAgSGAoQc2VsZWN0aW9uX3NvdXJjZRgJIAEoCRIvCgtzZWxlY3RlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uIrcLChJTZXNzaW9uUmVzcG9uc2VEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRINCgV0aXRsZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhwKD2NoaWVmX2NvbXBsYWludBgEIAEoCUgBiAEBEgwKBGNvZGUYBSABKAUSDAoEdHlwZRgGIAEoCRIOCgZzdGF0dXMYByABKAkSEQoJaXNfYWN0aXZlGAggASgIEjIKDmxhc3RfYWN0aXZlX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpwcm9qZWN0X2lkGAogASgJEhQKDHByb2plY3RfbmFtZRgLIAEoCRIUCgxwcm9qZWN0X3BhdGgYDCABKAkSGgoNcHJvcG9zYWxfbmFtZRgNIAEoCUgCiAEBEkEKD29wZW5fc3BlY19maWxlcxgOIAEoCzIoLmhhZ2ljb2RlLmNvbW11bml0eS52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSRQoOcXVldWVfbWVzc2FnZXMYECADKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuUXVldWVNZXNzYWdlU3VtbWFyeUR0bxIeChF3b3JraW5nX2RpcmVjdG9yeRgRIAEoCUgDiAEBEhUKCG1ldGFkYXRhGBIgASgJSASIAQESHwoSY2hhdF9leGVjdXRvcl90eXBlGBMgASgJSAWIAQESPAoJY2hhdF9oZXJvGBQgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoYXRIZXJvU3VtbWFyeUR0bxJbChJzdGFnZV9leGVjdXRvcl9tYXAYFSADKAsyPy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJmChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyRC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlSGVyb1NlbGVjdGlvbk1hcEVudHJ5EiAKE3J1bnRpbWVfbW9kZWxfbGFiZWwYFyABKAlIBogBARI5ChVwcm9jZXNzaW5nX3N0YXJ0ZWRfYXQYGCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkQKDXNlc3Npb25fdXNhZ2UYGSABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIcCg9wcmV2aW91c19zdGF0dXMYGiABKAlIB4gBARJECg1ub3RpZmljYXRpb25zGBsgAygLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8aZAoVU3RhZ2VFeGVjdXRvck1hcEVudHJ5EgsKA2tleRgBIAEoCRI6CgV2YWx1ZRgCIAEoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaagoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjsKBXZhbHVlGAIgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YWdlSGVyb1NlbGVjdGlvbkR0bzoCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMiLgobU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvEg8KB3BsYW5faWQYASABKAkymQ4KFVNjaGVkdWxlZFBsYW5zU2VydmljZRJ5ChJMaXN0U2NoZWR1bGVkUGxhbnMSMC5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBoxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhbnNSZXNwb25zZRJzChBHZXRTY2hlZHVsZWRQbGFuEi4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXF1ZXN0Gi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXNwb25zZRKOAQoZTGlzdFNjaGVkdWxlZFBsYW5Qcm9ibGVtcxI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBo4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVzcG9uc2USlwEKHExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXMSOi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1JlcXVlc3QaOy5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1Jlc3BvbnNlEnwKE0NyZWF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE1VwZGF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE0RlbGV0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEpQBChtFZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRWRpdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVxdWVzdBo6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5FZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXNwb25zZRKaAQodRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOy5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0GjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2UScwoQUnVuU2NoZWR1bGVkUGxhbhIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVzcG9uc2USeQoSU3RhcnRTY2hlZHVsZWRQbGFuEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YXJ0U2NoZWR1bGVkUGxhblJlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuU3RhcnRTY2hlZHVsZWRQbGFuUmVzcG9uc2USowEKIENvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBo/LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEqABCh9DYW5jZWxTY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXF1ZXN0Gj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXNwb25zZUIrqgIoUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW11bml0eS5WMWIGcHJvdG8z",[Ue,Ne]),Gh=v(Qe,1),Nh=v(Qe,3),vh=v(Qe,9),Wh=v(Qe,11),yh=v(Qe,19),Ih=v(Qe,21),wa=v(Qe,39),Xh=We(Qe,0),Yh=oe("Ci1oYWdpY29kZS9jb21tdW5pdHkvdjEvY29tbXVuaXR5X3ByZXNldHMucHJvdG8SFWhhZ2ljb2RlLmNvbW11bml0eS52MSIdChtMaXN0Q29tbXVuaXR5UHJlc2V0c1JlcXVlc3QiYwocTGlzdENvbW11bml0eVByZXNldHNSZXNwb25zZRJDCgZyZXN1bHQYASABKAsyMy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RSZXNwb25zZUR0byJmCh1JbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVxdWVzdBJFCgRib2R5GAEgASgLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvImwKHkluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8ifAogU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3QSEQoJcHJlc2V0X2lkGAEgASgJEkUKBGJvZHkYAiABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8ibwohU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRPcGVyYXRpb25SZXNwb25zZUR0byI0Ch9Vbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXF1ZXN0EhEKCXByZXNldF9pZBgBIAEoCSJuCiBVbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8iIAoeUmVmcmVzaENvbW11bml0eVByZXNldHNSZXF1ZXN0IiEKH1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UihwEKFkNvbW11bml0eVByZXNldFJpc2tEdG8SGQoRZGVjbGFyZXNfY29tbWFuZHMYASABKAgSFwoPZGVjbGFyZXNfc2tpbGxzGAIgASgIEhYKDmRlY2xhcmVzX2hvb2tzGAMgASgIEiEKGWRlY2xhcmVzX2NsaV9yZXF1aXJlbWVudHMYBCABKAgi2QQKGExvY2FsSGFnaVRhc2tMaXN0SXRlbUR0bxIRCglwcmVzZXRfaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSEwoLc291cmNlX2tpbmQYBCABKAkSGQoRaW5zdGFsbGF0aW9uX2tpbmQYBSABKAkSFwoPbWFuYWdlbWVudF9raW5kGAYgASgJEiAKGGlzX3Nlc3Npb25fY3JlYXRpb25fb25seRgHIAEoCBIPCgdlbmFibGVkGAggASgIEhQKDGlzX3JlbW92YWJsZRgJIAEoCBIRCglwdWJsaXNoZXIYCiABKAkSHQoQc291cmNlX3JlZmVyZW5jZRgLIAEoCUgAiAEBEhsKDmFyY2hpdmVfc2hhMjU2GAwgASgJSAGIAQESNAoQaW5zdGFsbGVkX2F0X3V0YxgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoScmVsYXRpdmVfZGlyZWN0b3J5GA4gASgJEhgKC2Rlc2NyaXB0aW9uGA8gASgJSAKIAQESPAoFcmlza3MYECABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0Umlza0R0bxIWCglzb3VyY2VfaWQYESABKAlIA4gBARIRCgRpY29uGBIgASgJSASIAQFCEwoRX3NvdXJjZV9yZWZlcmVuY2VCEQoPX2FyY2hpdmVfc2hhMjU2Qg4KDF9kZXNjcmlwdGlvbkIMCgpfc291cmNlX2lkQgcKBV9pY29uIloKHVByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIRCgRwYXRoGAMgASgJSACIAQFCBwoFX3BhdGgiqQEKHExvY2FsSGFnaVRhc2tMaXN0UmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RJdGVtRHRvEkkKC2RpYWdub3N0aWNzGAIgAygLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvIqwDCh5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SEQoJcHJlc2V0X2lkGAEgASgJEhYKCW5hbWVzcGFjZRgCIAEoCUgAiAEBEg8KB3ZlcnNpb24YAyABKAkSEQoJcHVibGlzaGVyGAQgASgJEh0KEHNvdXJjZV9yZWZlcmVuY2UYBSABKAlIAYgBARIWCg5hcmNoaXZlX3NoYTI1NhgGIAEoCRI0ChBpbnN0YWxsZWRfYXRfdXRjGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJyZWxhdGl2ZV9kaXJlY3RvcnkYCCABKAkSDwoHZW5hYmxlZBgJIAEoCBI8CgVyaXNrcxgKIAEoCzItLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRSaXNrRHRvEhYKCXNvdXJjZV9pZBgLIAEoCUgCiAEBEhEKBGljb24YDCABKAlIA4gBAUIMCgpfbmFtZXNwYWNlQhMKEV9zb3VyY2VfcmVmZXJlbmNlQgwKCl9zb3VyY2VfaWRCBwoFX2ljb24ilAIKI0NvbW11bml0eVByZXNldE9wZXJhdGlvblJlc3BvbnNlRHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIWCglwcmVzZXRfaWQYAiABKAlIAIgBARISCgVlcnJvchgDIAEoCUgBiAEBEksKDGluc3RhbGxhdGlvbhgEIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SSQoLZGlhZ25vc3RpY3MYBSADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG9CDAoKX3ByZXNldF9pZEIICgZfZXJyb3IisgIKIENvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvEhYKDmFyY2hpdmVfYmFzZTY0GAEgASgJEh8KEmV4cGVjdGVkX3ByZXNldF9pZBgCIAEoCUgAiAEBEh0KEGV4cGVjdGVkX3ZlcnNpb24YAyABKAlIAYgBARIcCg9leHBlY3RlZF9zaGEyNTYYBCABKAlIAogBARIWCglwdWJsaXNoZXIYBSABKAlIA4gBARIdChBzb3VyY2VfcmVmZXJlbmNlGAYgASgJSASIAQFCFQoTX2V4cGVjdGVkX3ByZXNldF9pZEITChFfZXhwZWN0ZWRfdmVyc2lvbkISChBfZXhwZWN0ZWRfc2hhMjU2QgwKCl9wdWJsaXNoZXJCEwoRX3NvdXJjZV9yZWZlcmVuY2UiMwogQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8SDwoHZW5hYmxlZBgBIAEoCDLMBQoXQ29tbXVuaXR5UHJlc2V0c1NlcnZpY2USfwoUTGlzdENvbW11bml0eVByZXNldHMSMi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdENvbW11bml0eVByZXNldHNSZXF1ZXN0GjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UShQEKFkluc3RhbGxDb21tdW5pdHlQcmVzZXQSNC5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNS5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlc3BvbnNlEo4BChlTZXRDb21tdW5pdHlQcmVzZXRFbmFibGVkEjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXF1ZXN0GjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXNwb25zZRKLAQoYVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0EjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVzcG9uc2USiAEKF1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzEjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVxdWVzdBo2LmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZWZyZXNoQ29tbXVuaXR5UHJlc2V0c1Jlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ne]),qo=oe("CihoYWdpY29kZS9jb21tdW5pdHkvdjEvcHJlc2V0X3Rhc2tzLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiHQobR2V0UHJlc2V0VGFza0NhdGFsb2dSZXF1ZXN0ImMKHEdldFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8ibwoiQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrUmVxdWVzdER0byJzCiNDaGVja1ByZXNldFRhc2tSZXF1aXJlbWVudHNSZXNwb25zZRJMCgZyZXN1bHQYASABKAsyPC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tSZXNwb25zZUR0byIeChxMaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0ImIKHUxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hU3VtbWFyeUR0byI0ChpHZXRQcmVzZXRUYXNrU2NoZW1hUmVxdWVzdBIWCg5wcmVzZXRfdGFza19pZBgBIAEoCSJhChtHZXRQcmVzZXRUYXNrU2NoZW1hUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDcmVhdGlvblNjaGVtYUR0byLKAQogUHJlc2V0VGFza0NhdGFsb2dEaXNhYmxlZEl0ZW1EdG8SCgoCaWQYASABKAkSEAoIZ3JvdXBfaWQYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSDgoGc3RhdHVzGAQgASgJEhgKEHBsdWdpbl9yb290X3BhdGgYBSABKAkSSQoLZGlhZ25vc3RpY3MYBiADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG8iPQodUHJlc2V0VGFza0FnZW50UmVxdWlyZW1lbnREdG8SDAoEbW9kZRgBIAEoCRIOCgZhZ2VudHMYAiADKAki6gEKFFByZXNldFRhc2tDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhIKBXNraWxsGAUgASgJSACIAQESEAoDdXJsGAYgASgJSAGIAQESFgoJZG9jc19zbHVnGAcgASgJSAKIAQESHQoQcHJlbHVkZV90ZW1wbGF0ZRgIIAEoCUgDiAEBQggKBl9za2lsbEIGCgRfdXJsQgwKCl9kb2NzX3NsdWdCEwoRX3ByZWx1ZGVfdGVtcGxhdGUiNgoZUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgV0aXRsZRgCIAEoCSLMAQobUHJlc2V0VGFza0NvbW1hbmRDYXRhbG9nRHRvEhQKDHBhcmFtZXRlcl9pZBgBIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgCIAEoCRJACgZncm91cHMYAyADKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxI9Cghjb21tYW5kcxgEIAMoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tbWFuZER0byJWChpQcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxIOCgZsZWdhY3kYASABKAkSDwoHYmluZGluZxgCIAEoCRIXCg9kaWFnbm9zdGljX2NvZGUYAyABKAkidAoWUHJlc2V0VGFza0V4ZWN1dGlvbkR0bxIWCg5zY2hlbWFfdmVyc2lvbhgBIAEoCRIQCghzdHJhdGVneRgCIAEoCRIcCg9leHRlbnNpb25fcG9pbnQYAyABKAlIAIgBAUISChBfZXh0ZW5zaW9uX3BvaW50Ip8CChlQcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEg0KBWlucHV0GAEgASgJEh0KEHByb21wdF9wYXJhbWV0ZXIYAiABKAlIAIgBARIZCgxtZXRhZGF0YV9rZXkYAyABKAlIAYgBARIQCghyZXF1aXJlZBgEIAEoCBIVCghwcm9kdWNlchgFIAEoCUgCiAEBEhcKCnZhbHVlX3R5cGUYBiABKAlIA4gBARIWCgl0cmFuc2Zvcm0YByABKAlIBIgBARIPCgdhbGlhc2VzGAggAygJQhMKEV9wcm9tcHRfcGFyYW1ldGVyQg8KDV9tZXRhZGF0YV9rZXlCCwoJX3Byb2R1Y2VyQg0KC192YWx1ZV90eXBlQgwKCl90cmFuc2Zvcm0iOAoYUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvEg0KBXZhbHVlGAEgASgJEg0KBWxhYmVsGAIgASgJIt4DCiBQcmVzZXRUYXNrRmllbGRDb21wb25lbnRQcm9wc0R0bxIgChN0YXJnZXRfc2VsZWN0aW9uX2lkGAEgASgJSACIAQESFwoKZW1wdHlfdGV4dBgCIAEoCUgBiAEBEiMKFmFsbG93X291dHB1dF9zZWxlY3Rpb24YAyABKAhIAogBARIlChhyZXF1aXJlX291dHB1dF9zZWxlY3Rpb24YBCABKAhIA4gBARIYCgtlbXB0eV90aXRsZRgFIAEoCUgEiAEBEh4KEWVtcHR5X2Rlc2NyaXB0aW9uGAYgASgJSAWIAQESHQoQcmVxdWlyZWRfbWVzc2FnZRgHIAEoCUgGiAEBEkAKB29wdGlvbnMYCCADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvQhYKFF90YXJnZXRfc2VsZWN0aW9uX2lkQg0KC19lbXB0eV90ZXh0QhkKF19hbGxvd19vdXRwdXRfc2VsZWN0aW9uQhsKGV9yZXF1aXJlX291dHB1dF9zZWxlY3Rpb25CDgoMX2VtcHR5X3RpdGxlQhQKEl9lbXB0eV9kZXNjcmlwdGlvbkITChFfcmVxdWlyZWRfbWVzc2FnZSL3AgoXUHJlc2V0VGFza1BhbmVsRmllbGREdG8SCgoCaWQYASABKAkSEAoIcmVuZGVyZXIYAiABKAkSEgoKaW5wdXRfdHlwZRgDIAEoCRISCgp2YWx1ZV90eXBlGAQgASgJEhIKBWxhYmVsGAUgASgJSACIAQESEQoEaGludBgGIAEoCUgBiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAKIAQESEAoIcmVxdWlyZWQYCCABKAgSEwoGb3V0cHV0GAkgASgJSAOIAQESGwoOc2VsZWN0aW9uX21vZGUYCiABKAlIBIgBARJQCg9jb21wb25lbnRfcHJvcHMYCyABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkQ29tcG9uZW50UHJvcHNEdG9CCAoGX2xhYmVsQgcKBV9oaW50Qg4KDF9wbGFjZWhvbGRlckIJCgdfb3V0cHV0QhEKD19zZWxlY3Rpb25fbW9kZSJ3ChlQcmVzZXRUYXNrUGFuZWxTZWN0aW9uRHRvEgoKAmlkGAEgASgJEg4KBmxheW91dBgCIAEoCRI+CgZmaWVsZHMYAyADKAsyLi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BhbmVsRmllbGREdG8iyQEKIVByZXNldFRhc2tQcm9tcHRWYXJpYW50U3VtbWFyeUR0bxIKCgJpZBgBIAEoCRJSCgVtYXRjaBgCIAMoCzJDLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUHJvbXB0VmFyaWFudFN1bW1hcnlEdG8uTWF0Y2hFbnRyeRpECgpNYXRjaEVudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi/gEKIlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SDAoEdHlwZRgBIAEoCRIWCg5kZWZhdWx0X2xvY2FsZRgCIAEoCRIZChFzdXBwb3J0ZWRfbG9jYWxlcxgDIAMoCRIRCglzZWxlY3RvcnMYBCADKAkSSgoIdmFyaWFudHMYBSADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1Byb21wdFZhcmlhbnRTdW1tYXJ5RHRvEiAKE2ZhbGxiYWNrX3ZhcmlhbnRfaWQYBiABKAlIAIgBAUIWChRfZmFsbGJhY2tfdmFyaWFudF9pZCJFChhQcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SDAoEdHlwZRgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBW5hbWVzGAMgAygJIqoDCh5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8SEQoJc2NlbmVfa2V5GAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB3N1bW1hcnkYAyABKAkSYQoPdGl0bGVfYnlfbG9jYWxlGAQgAygLMkguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZVJlZ2lzdHJhdGlvbkR0by5UaXRsZUJ5TG9jYWxlRW50cnkSZQoRc3VtbWFyeV9ieV9sb2NhbGUYBSADKAsySi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjZW5lUmVnaXN0cmF0aW9uRHRvLlN1bW1hcnlCeUxvY2FsZUVudHJ5Eh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgGIAEoBRo0ChJUaXRsZUJ5TG9jYWxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo2ChRTdW1tYXJ5QnlMb2NhbGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIo8BChJQcmVzZXRUYXNrU2NlbmVEdG8SEAoIcHJvdmlkZXIYASABKAkSGQoRZGVmYXVsdF9zY2VuZV9rZXkYAiABKAkSTAoNcmVnaXN0cmF0aW9ucxgDIAMoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8ivAEKHFByZXNldFRhc2tUYXJnZXRTZWxlY3Rpb25EdG8SCgoCaWQYASABKAkSDAoEa2luZBgCIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgDIAEoCRIcChRhbGxvd2VkX2FjY2Vzc190eXBlcxgEIAMoCRIOCgZvdXRwdXQYBSABKAkSGQoMc2NvcGVfc291cmNlGAYgASgJSACIAQESEAoIcmVxdWlyZWQYByABKAhCDwoNX3Njb3BlX3NvdXJjZSKBCQoYUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSEQoEaWNvbhgFIAEoCUgAiAEBEhQKDGRpc3BsYXlfbmFtZRgGIAEoCRINCgV0aXRsZRgHIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIVCg1kZWZhdWx0X3RpdGxlGAkgASgJEhQKDHN1Ym1pdF9sYWJlbBgKIAEoCRIYChBzdWJtaXR0aW5nX2xhYmVsGAsgASgJEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYDCABKAkSGwoTYWxsb3dfaGVyb19vdmVycmlkZRgNIAEoCBISCgpzb3J0X29yZGVyGA4gASgFEhkKEXN1cHBvcnRlZF9sb2NhbGVzGA8gAygJEkIKCHNlY3Rpb25zGBAgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQYW5lbFNlY3Rpb25EdG8SSwoPY29tbWFuZF9jYXRhbG9nGBEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kQ2F0YWxvZ0R0bxJOChF0YXJnZXRfc2VsZWN0aW9ucxgSIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrVGFyZ2V0U2VsZWN0aW9uRHRvEk8KEWFnZW50X3JlcXVpcmVtZW50GBMgASgLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tBZ2VudFJlcXVpcmVtZW50RHRvEkUKDHJlcXVpcmVtZW50cxgUIAMoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SUgoPcHJvbXB0X3N0cmF0ZWd5GBUgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SQAoJZXhlY3V0aW9uGBYgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tFeGVjdXRpb25EdG8SSAoNY29tcGF0aWJpbGl0eRgXIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxJICg5pbnB1dF9iaW5kaW5ncxgYIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEjgKBXNjZW5lGBkgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZUR0bxIjChZzZXJ2ZXJfZGVjaWRlZF9oZXJvX2lkGBogASgJSAGIAQFCBwoFX2ljb25CGQoXX3NlcnZlcl9kZWNpZGVkX2hlcm9faWQirwEKHFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEk8KDmRpc2FibGVkX2l0ZW1zGAIgAygLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nRGlzYWJsZWRJdGVtRHRvIkgKJ1ByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrRGlhZ25vc3RpY0R0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkitQEKIVByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0bxIMCgR0eXBlGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGcGFzc2VkGAMgASgIEg8KB21lc3NhZ2UYBCABKAkSUwoLZGlhZ25vc3RpY3MYBSADKAsyPi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tEaWFnbm9zdGljRHRvIqMBCiVQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1Jlc3BvbnNlRHRvEhYKDnByZXNldF90YXNrX2lkGAEgASgJEhIKCmFsbF9wYXNzZWQYAiABKAgSTgoMcmVxdWlyZW1lbnRzGAMgAygLMjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0byI+CiRQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1JlcXVlc3REdG8SFgoOcHJlc2V0X3Rhc2tfaWQYASABKAkiygEKGlByZXNldFRhc2tTY2hlbWFTdW1tYXJ5RHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSDQoFdGl0bGUYBSABKAkSEwoLZGVzY3JpcHRpb24YBiABKAkSFAoMdGFyZ2V0X2NvdW50GAcgASgFEhUKDWNvbW1hbmRfY291bnQYCCABKAUSFwoPcGFyYW1ldGVyX2NvdW50GAkgASgFIngKGlByZXNldFRhc2tTY2hlbWFDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhAKA3VybBgFIAEoCUgAiAEBQgYKBF91cmwi0gEKG1ByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxIUCgxwYXJhbWV0ZXJfaWQYASABKAkSFgoOc2VsZWN0aW9uX21vZGUYAiABKAkSQAoGZ3JvdXBzGAMgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kR3JvdXBEdG8SQwoIY29tbWFuZHMYBCADKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYUNvbW1hbmREdG8iOwoYUHJlc2V0VGFza1NjaGVtYUFsaWFzRHRvEgsKA2tleRgBIAEoCRISCgpkZXByZWNhdGVkGAIgASgIIrQCChxQcmVzZXRUYXNrU2NoZW1hUGFyYW1ldGVyRHRvEgsKA2tleRgBIAEoCRIOCgZvcmlnaW4YAiABKAkSFQoIcHJvZHVjZXIYAyABKAlIAIgBARISCgp2YWx1ZV90eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEg0KBWxhYmVsGAYgASgJEhEKBGhpbnQYByABKAlIAYgBARJACgdvcHRpb25zGAggAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tGaWVsZE9wdGlvbkR0bxJACgdhbGlhc2VzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFBbGlhc0R0b0ILCglfcHJvZHVjZXJCBwoFX2hpbnQihwEKGlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEg4KBm1ldGhvZBgBIAEoCRIMCgRwYXRoGAIgASgJEhwKFHByZXNldF90YXNrX2lkX2ZpZWxkGAMgASgJEhQKDGxvY2FsZV9maWVsZBgEIAEoCRIXCg9yZXF1aXJlZF9maWVsZHMYBSADKAkieAokUHJlc2V0VGFza1NjaGVtYVNjZW5lUmVnaXN0cmF0aW9uRHRvEhEKCXNjZW5lX2tleRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgEIAEoBSKcAQoZUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxIQCghwcm92aWRlchgBIAEoCRIZChFkZWZhdWx0X3NjZW5lX2tleRgCIAEoCRJSCg1yZWdpc3RyYXRpb25zGAMgAygLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFTY2VuZVJlZ2lzdHJhdGlvbkR0byL0AQoZUHJlc2V0VGFza1NjaGVtYVRhcmdldER0bxIKCgJpZBgBIAEoCRIMCgRraW5kGAIgASgJEhYKDnNlbGVjdGlvbl9tb2RlGAMgASgJEhAKCHJlcXVpcmVkGAQgASgIEhwKFGFsbG93ZWRfYWNjZXNzX3R5cGVzGAUgAygJEhkKDHNjb3BlX3NvdXJjZRgGIAEoCUgAiAEBEhMKC3JlcXVlc3Rfa2V5GAcgASgJEh4KEXNjb3BlX3JlcXVlc3Rfa2V5GAggASgJSAGIAQFCDwoNX3Njb3BlX3NvdXJjZUIUChJfc2NvcGVfcmVxdWVzdF9rZXkiegoYUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYASABKAkSQQoHdGFyZ2V0cxgCIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hVGFyZ2V0RHRvIuMEChtQcmVzZXRUYXNrQ3JlYXRpb25TY2hlbWFEdG8SCgoCaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIOCgZsb2NhbGUYAyABKAkSDQoFdGl0bGUYBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSPgoFc2NvcGUYBiABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEkQKCGNvbW1hbmRzGAcgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxJHCgpwYXJhbWV0ZXJzGAggAygLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFQYXJhbWV0ZXJEdG8SRQoMcmVxdWlyZW1lbnRzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudER0bxJACgZzY2VuZXMYCiABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxJCCgdyZXF1ZXN0GAsgASgLMjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEi0KDGlucHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKAoHZXhhbXBsZRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QyrwQKElByZXNldFRhc2tzU2VydmljZRJ/ChRHZXRQcmVzZXRUYXNrQ2F0YWxvZxIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRQcmVzZXRUYXNrQ2F0YWxvZ1JlcXVlc3QaMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza0NhdGFsb2dSZXNwb25zZRKUAQobQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzEjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoZWNrUHJlc2V0VGFza1JlcXVpcmVtZW50c1JlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVzcG9uc2USggEKFUxpc3RQcmVzZXRUYXNrU2NoZW1hcxIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEnwKE0dldFByZXNldFRhc2tTY2hlbWESMS5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ue,Yh]),Ch=v(qo,5),Bh=v(qo,7),wh=We(qo,0),re=oe("CiloYWdpY29kZS9jb21tdW5pdHkvdjEvc2tpbGxfZ2FsbGVyeS5wcm90bxIVaGFnaWNvZGUuY29tbXVuaXR5LnYxIhcKFUdldExvY2FsU2tpbGxzUmVxdWVzdCJfChZHZXRMb2NhbFNraWxsc1Jlc3BvbnNlEkUKBnJlc3VsdBgBIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8iLAocR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBIMCgRzbHVnGAEgASgJIl0KHUdldEJ1aWx0SW5Ta2lsbERldGFpbFJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5CdWlsdEluU2tpbGxEZXRhaWxEdG8iYAoaVW5pbnN0YWxsTG9jYWxTa2lsbFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vbmluc3RhbGxMb2NhbFNraWxsUmVxdWVzdER0byJiChtVbmluc3RhbGxMb2NhbFNraWxsUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXN1bHREdG8icAoiU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVxdWVzdBJKCgRib2R5GAEgASgLMjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3REdG8icgojU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2USSwoGcmVzdWx0GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0byI2ChZHZXRTa2lsbEdhbGxlcnlSZXF1ZXN0EhIKBXF1ZXJ5GAEgASgJSACIAQFCCAoGX3F1ZXJ5IlkKF0dldFNraWxsR2FsbGVyeVJlc3BvbnNlEj4KBnJlc3VsdBgBIAEoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlSZXNwb25zZUR0byI6ChxHZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCSJdCh1HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXNwb25zZRI8CgZyZXN1bHQYASABKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5RGV0YWlsRHRvIjkKG0dldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkiWwocR2V0U2tpbGxHYWxsZXJ5QXVkaXRSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5QXVkaXREdG8itAEKHFNraWxsR2FsbGVyeUF1ZGl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSEQoEcmlzaxgCIAEoCUgAiAEBEhMKBmFsZXJ0cxgDIAEoBUgBiAEBEhIKBXNjb3JlGAQgASgFSAKIAQESGAoLYW5hbHl6ZWRfYXQYBSABKAlIA4gBAUIHCgVfcmlza0IJCgdfYWxlcnRzQggKBl9zY29yZUIOCgxfYW5hbHl6ZWRfYXQijgEKFFNraWxsR2FsbGVyeUF1ZGl0RHRvEgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCRISCgpza2lsbF9zbHVnGAMgASgJEkYKCXByb3ZpZGVycxgEIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlBdWRpdFByb3ZpZGVyRHRvIkIKJEdldFNraWxsR2FsbGVyeUluc3RhbGxDb250ZXh0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkibQolR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHREdG8iIQofR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVxdWVzdCJuCiBHZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8ibgohVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0EkkKBGJvZHkYASABKAsyOy5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvInAKIlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVzcG9uc2USSgoGcmVzdWx0GAEgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyTGlzdFJlc3BvbnNlRHRvIm4KIURlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdER0byJwCiJEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckxpc3RSZXNwb25zZUR0byIjCiFSZXNldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QicAoiUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8iUgoTSW5zdGFsbFNraWxsUmVxdWVzdBI7CgRib2R5GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3REdG8iVAoUSW5zdGFsbFNraWxsUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlc3VsdER0byL3AQoYTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvEg8KB2VuYWJsZWQYASABKAgSFAoHdmVyc2lvbhgCIAEoCUgAiAEBEhMKBnNvdXJjZRgDIAEoCUgBiAEBEhcKCnJlcG9zaXRvcnkYBCABKAlIAogBARIQCgNyZWYYBSABKAlIA4gBARIRCgRwYXRoGAYgASgJSASIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAWIAQFCCgoIX3ZlcnNpb25CCQoHX3NvdXJjZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQg8KDV9jb250ZW50X2hhc2givAIKI0xvY2FsU2tpbGxNYW5hZ2VkSW5zdGFsbE1ldGFkYXRhRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgFEhAKCHNraWxsX2lkGAIgASgJEg4KBnNvdXJjZRgDIAEoCRISCgpza2lsbF9zbHVnGAQgASgJEhQKB3ZlcnNpb24YBSABKAlIAIgBARIhChRub3JtYWxpemVkX3NraWxsX2tleRgGIAEoCUgBiAEBEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSAKIAQESMwoPcmVjb3JkZWRfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfdmVyc2lvbkIXChVfbm9ybWFsaXplZF9za2lsbF9rZXlCFAoSX2luc3RhbGxfcmVmZXJlbmNlIosCChFMb2NhbFNraWxsSXRlbUR0bxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBXNjb3BlGAMgASgJEgwKBHBhdGgYBCABKAkSDgoGYWdlbnRzGAUgAygJElwKGG1hbmFnZWRfaW5zdGFsbF9tZXRhZGF0YRgGIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsTWFuYWdlZEluc3RhbGxNZXRhZGF0YUR0bxIOCgZvcmlnaW4YByABKAkSQQoIYnVpbHRfaW4YCCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvIo8BCh5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNwoFaXRlbXMYAiADKAsyKC5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEl0ZW1EdG8isQEKG0J1aWx0SW5Ta2lsbERldGFpbFNvdXJjZUR0bxIRCgR0eXBlGAEgASgJSACIAQESFwoKcmVwb3NpdG9yeRgCIAEoCUgBiAEBEhAKA3JlZhgDIAEoCUgCiAEBEhEKBHBhdGgYBCABKAlIA4gBARIQCgN1cmwYBSABKAlIBIgBAUIHCgVfdHlwZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQgYKBF91cmwiPAoYQnVpbHRJblNraWxsRmlsZUVudHJ5RHRvEgwKBHBhdGgYASABKAkSEgoKc2l6ZV9ieXRlcxgCIAEoAyI5ChtCdWlsdEluU2tpbGxNZXRhZGF0YVBhaXJEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJIo4EChVCdWlsdEluU2tpbGxEZXRhaWxEdG8SDAoEc2x1ZxgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhQKB3ZlcnNpb24YBCABKAlIAIgBARIPCgdlbmFibGVkGAUgASgIEkQKCG1ldGFkYXRhGAYgAygLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbE1ldGFkYXRhUGFpckR0bxJCCgZzb3VyY2UYByABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQnVpbHRJblNraWxsRGV0YWlsU291cmNlRHRvEhkKDGNvbnRlbnRfaGFzaBgIIAEoCUgBiAEBEj4KBWZpbGVzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbEZpbGVFbnRyeUR0bxISCgpmaWxlX2NvdW50GAogASgFEhgKEHRvdGFsX3NpemVfYnl0ZXMYCyABKAMSFwoPZmlsZXNfdHJ1bmNhdGVkGAwgASgIEhUKDWxpY2Vuc2VfZmlsZXMYDSADKAkSDAoEYm9keRgOIAEoCRIWCg5ib2R5X3RydW5jYXRlZBgPIAEoCBIXCg9ib2R5X3NpemVfYnl0ZXMYECABKANCCgoIX3ZlcnNpb25CDwoNX2NvbnRlbnRfaGFzaCLXAQocVW5pbnN0YWxsTG9jYWxTa2lsbFJlc3VsdER0bxISCgpza2lsbF9uYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIZCgx1c2VyX21lc3NhZ2UYAyABKAlIAIgBARIfChJkaWFnbm9zdGljX21lc3NhZ2UYBCABKAlIAYgBARIvCgtvY2N1cnJlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX3VzZXJfbWVzc2FnZUIVChNfZGlhZ25vc3RpY19tZXNzYWdlIjMKHVVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0RHRvEhIKCnNraWxsX25hbWUYASABKAkivAEKJFNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0bxIMCgRzbHVnGAEgASgJEg8KB2VuYWJsZWQYAiABKAgSEQoJc3VjY2VlZGVkGAMgASgIEhkKDHVzZXJfbWVzc2FnZRgEIAEoCUgAiAEBEh8KEmRpYWdub3N0aWNfbWVzc2FnZRgFIAEoCUgBiAEBQg8KDV91c2VyX21lc3NhZ2VCFQoTX2RpYWdub3N0aWNfbWVzc2FnZSJGCiVTZXRCdWlsdEluU2tpbGxBdmFpbGFiaWxpdHlSZXF1ZXN0RHRvEgwKBHNsdWcYASABKAkSDwoHZW5hYmxlZBgCIAEoCCKlAgoiU2tpbGxHYWxsZXJ5UmVwb3NpdG9yeURpc2NvdmVyeUR0bxIMCgRtb2RlGAEgASgJEhwKD3JlcXVlc3RlZF9xdWVyeRgCIAEoCUgAiAEBEh4KEW5vcm1hbGl6ZWRfc291cmNlGAMgASgJSAGIAQESGwoOcmVwb3NpdG9yeV91cmwYBCABKAlIAogBARIPCgdvdXRjb21lGAUgASgJEhcKCmVycm9yX2NvZGUYBiABKAlIA4gBARIUCgdtZXNzYWdlGAcgASgJSASIAQFCEgoQX3JlcXVlc3RlZF9xdWVyeUIUChJfbm9ybWFsaXplZF9zb3VyY2VCEQoPX3JlcG9zaXRvcnlfdXJsQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIuYBCiNUcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSHgoRbWF0Y2hlZF9ydWxlX3R5cGUYBCABKAlIAIgBARIfChJtYXRjaGVkX3J1bGVfdmFsdWUYBSABKAlIAYgBARIRCglpc19wcmVzZXQYBiABKAhCFAoSX21hdGNoZWRfcnVsZV90eXBlQhUKE19tYXRjaGVkX3J1bGVfdmFsdWUiwwEKFFNraWxsR2FsbGVyeVNraWxsRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc291cmNlGAMgASgJEhAKCGluc3RhbGxzGAQgASgFEhkKEWlzX3RydXN0ZWRfc291cmNlGAUgASgIElQKEHRydXN0ZWRfcHJvdmlkZXIYBiABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJUcnVzdFN1bW1hcnlEdG8i5AEKF1NraWxsR2FsbGVyeVJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKBWl0ZW1zGAIgAygLMisuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVNraWxsRHRvElcKFHJlcG9zaXRvcnlfZGlzY292ZXJ5GAMgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVJlcG9zaXRvcnlEaXNjb3ZlcnlEdG8i7AUKFVNraWxsR2FsbGVyeURldGFpbER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhwKD3JlcG9zaXRvcnlfbmFtZRgFIAEoCUgBiAEBEiEKFHJlcG9zaXRvcnlfZnVsbF9uYW1lGAYgASgJSAKIAQESGwoOcmVwb3NpdG9yeV91cmwYByABKAlIA4gBARImChlyZXBvc2l0b3J5X2RlZmF1bHRfYnJhbmNoGAggASgJSASIAQESHwoScmVwb3NpdG9yeV9wcml2YXRlGAkgASgISAWIAQESFgoOaXNfaW5zdGFsbGFibGUYCiABKAgSGQoRaXNfdHJ1c3RlZF9zb3VyY2UYCyABKAgSVAoQdHJ1c3RlZF9wcm92aWRlchgMIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxIeChFpbnN0YWxsX3JlZmVyZW5jZRgNIAEoCUgGiAEBEiQKF2luc3RhbGxfY29tbWFuZF9wcmV2aWV3GA4gASgJSAeIAQESHAoPaW5zdGFsbF92ZXJzaW9uGA8gASgJSAiIAQESGQoMaW5zdGFsbF9oaW50GBAgASgJSAmIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9yZXBvc2l0b3J5X25hbWVCFwoVX3JlcG9zaXRvcnlfZnVsbF9uYW1lQhEKD19yZXBvc2l0b3J5X3VybEIcChpfcmVwb3NpdG9yeV9kZWZhdWx0X2JyYW5jaEIVChNfcmVwb3NpdG9yeV9wcml2YXRlQhQKEl9pbnN0YWxsX3JlZmVyZW5jZUIaChhfaW5zdGFsbF9jb21tYW5kX3ByZXZpZXdCEgoQX2luc3RhbGxfdmVyc2lvbkIPCg1faW5zdGFsbF9oaW50Iq4DCh1Ta2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIWCg5pc19pbnN0YWxsYWJsZRgEIAEoCBIZChFpc190cnVzdGVkX3NvdXJjZRgFIAEoCBJUChB0cnVzdGVkX3Byb3ZpZGVyGAYgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyVHJ1c3RTdW1tYXJ5RHRvEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSACIAQESJAoXaW5zdGFsbF9jb21tYW5kX3ByZXZpZXcYCCABKAlIAYgBARIcCg9pbnN0YWxsX3ZlcnNpb24YCSABKAlIAogBARIZCgxpbnN0YWxsX2hpbnQYCiABKAlIA4gBAUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCGgoYX2luc3RhbGxfY29tbWFuZF9wcmV2aWV3QhIKEF9pbnN0YWxsX3ZlcnNpb25CDwoNX2luc3RhbGxfaGludCJFCiBUcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0bxISCgptYXRjaF90eXBlGAEgASgJEg0KBXZhbHVlGAIgASgJIo8CChdUcnVzdGVkU2tpbGxQcm92aWRlckR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSEQoJaXNfcHJlc2V0GAQgASgIEhIKCmlzX2VuYWJsZWQYBSABKAgSEgoKc29ydF9vcmRlchgGIAEoBRISCgpydWxlX2NvdW50GAcgASgFEhcKD3NvdXJjZV9leGFtcGxlcxgIIAMoCRJMCgttYXRjaF9ydWxlcxgJIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0byKrAQojVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmVyc2lvbhgCIAEoBRI9CgVpdGVtcxgDIAMoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckR0byLxAQokVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtiYWRnZV9sYWJlbBgDIAEoCUgAiAEBEhIKCmlzX2VuYWJsZWQYBCABKAgSEgoKc29ydF9vcmRlchgFIAEoBRJMCgttYXRjaF9ydWxlcxgGIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0b0IOCgxfYmFkZ2VfbGFiZWwiOwokRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJIrgDChVJbnN0YWxsU2tpbGxSZXN1bHREdG8SEAoIc2tpbGxfaWQYASABKAkSDgoGc291cmNlGAIgASgJEhIKCnNraWxsX3NsdWcYAyABKAkSIQoUbm9ybWFsaXplZF9za2lsbF9rZXkYBCABKAlIAIgBARIeChFpbnN0YWxsX3JlZmVyZW5jZRgFIAEoCUgBiAEBEhwKD2NvbW1hbmRfcHJldmlldxgGIAEoCUgCiAEBEhQKB3ZlcnNpb24YByABKAlIA4gBARIOCgZzdGF0dXMYCCABKAkSGQoMdXNlcl9tZXNzYWdlGAkgASgJSASIAQESHwoSZGlhZ25vc3RpY19tZXNzYWdlGAogASgJSAWIAQESLwoLb2NjdXJyZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9ub3JtYWxpemVkX3NraWxsX2tleUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCEgoQX2NvbW1hbmRfcHJldmlld0IKCghfdmVyc2lvbkIPCg1fdXNlcl9tZXNzYWdlQhUKE19kaWFnbm9zdGljX21lc3NhZ2UiagoWSW5zdGFsbFNraWxsUmVxdWVzdER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIUCgd2ZXJzaW9uGAQgASgJSACIAQFCCgoIX3ZlcnNpb24iGwoZTGlzdFVzZXJTa2lsbEJhc2VzUmVxdWVzdCJfChpMaXN0VXNlclNraWxsQmFzZXNSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8iWgoXQWRkVXNlclNraWxsQmFzZVJlcXVlc3QSPwoEYm9keRgBIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdER0byJZChhBZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVtb3ZlVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJiChtSZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlbW92ZVVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVzY2FuVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJcChtSZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iYAoaU2V0VXNlclNraWxsRW5hYmxlZFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdER0byJiChtTZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldFVzZXJTa2lsbEVuYWJsZWRSZXN1bHREdG8i+AEKEFVzZXJTa2lsbEJhc2VEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSDAoEcGF0aBgDIAEoCRIOCgZzdGF0dXMYBCABKAkSGgoNc3RhdHVzX3JlYXNvbhgFIAEoCUgAiAEBEhsKDnN0YXR1c19tZXNzYWdlGAYgASgJSAGIAQESMwoGc2tpbGxzGAcgAygLMiMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbER0bxIYChBza2lsbHNfdHJ1bmNhdGVkGAggASgIQhAKDl9zdGF0dXNfcmVhc29uQhEKD19zdGF0dXNfbWVzc2FnZSL9AQoMVXNlclNraWxsRHRvEgwKBHNsdWcYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg8KB2VuYWJsZWQYBCABKAgSDgoGc3RhdHVzGAUgASgJEhsKDmNvbmZsaWN0c193aXRoGAYgASgJSAGIAQESPAoIcHJvYmxlbXMYByADKAsyKi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsUHJvYmxlbUR0bxIKCgJpZBgIIAEoCRIMCgRwYXRoGAkgASgJQg4KDF9kZXNjcmlwdGlvbkIRCg9fY29uZmxpY3RzX3dpdGgiNAoTVXNlclNraWxsUHJvYmxlbUR0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkiSAoaQWRkVXNlclNraWxsQmFzZVJlcXVlc3REdG8SDAoEcGF0aBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBQggKBl9sYWJlbCKTAQoaVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8SEQoJc3VjY2VlZGVkGAEgASgIEhkKDHVzZXJfbWVzc2FnZRgCIAEoCUgAiAEBEjYKBWJhc2VzGAMgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VEdG9CDwoNX3VzZXJfbWVzc2FnZSKOAQoWVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESNQoEYmFzZRgDIAEoCzInLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vc2VyU2tpbGxCYXNlRHRvQg8KDV91c2VyX21lc3NhZ2UibgocUmVtb3ZlVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESDwoHYmFzZV9pZBgDIAEoCUIPCg1fdXNlcl9tZXNzYWdlIlUKHVNldFVzZXJTa2lsbEVuYWJsZWRSZXF1ZXN0RHRvEg8KB2Jhc2VfaWQYASABKAkSEgoKc2tpbGxfc2x1ZxgCIAEoCRIPCgdlbmFibGVkGAMgASgIIpMBChxTZXRVc2VyU2tpbGxFbmFibGVkUmVzdWx0RHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIZCgx1c2VyX21lc3NhZ2UYAiABKAlIAIgBARIPCgdiYXNlX2lkGAMgASgJEhIKCnNraWxsX3NsdWcYBCABKAkSDwoHZW5hYmxlZBgFIAEoCEIPCg1fdXNlcl9tZXNzYWdlMtASChNTa2lsbEdhbGxlcnlTZXJ2aWNlEm0KDkdldExvY2FsU2tpbGxzEiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldExvY2FsU2tpbGxzUmVxdWVzdBotLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRMb2NhbFNraWxsc1Jlc3BvbnNlEoIBChVHZXRCdWlsdEluU2tpbGxEZXRhaWwSMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBo0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRCdWlsdEluU2tpbGxEZXRhaWxSZXNwb25zZRJ8ChNVbmluc3RhbGxMb2NhbFNraWxsEjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0GjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXNwb25zZRKUAQobU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5EjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2UScAoPR2V0U2tpbGxHYWxsZXJ5Ei0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeVJlcXVlc3QaLi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5UmVzcG9uc2USggEKFUdldFNraWxsR2FsbGVyeURldGFpbBIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeURldGFpbFJlc3BvbnNlEn8KFEdldFNraWxsR2FsbGVyeUF1ZGl0EjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBozLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlBdWRpdFJlc3BvbnNlEpoBCh1HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dBI7LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dFJlcXVlc3QaPC5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRKLAQoYR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzEjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USkQEKGlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyEjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBo5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5VcHNlcnRUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEpEBChpEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlchI4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5EZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlcXVlc3QaOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXNwb25zZRKRAQoaUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnMSOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXF1ZXN0GjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlc2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USZwoMSW5zdGFsbFNraWxsEiouaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3QaKy5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbFNraWxsUmVzcG9uc2USeQoSTGlzdFVzZXJTa2lsbEJhc2VzEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RVc2VyU2tpbGxCYXNlc1JlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFVzZXJTa2lsbEJhc2VzUmVzcG9uc2UScwoQQWRkVXNlclNraWxsQmFzZRIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVtb3ZlVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVzY2FuVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTU2V0VXNlclNraWxsRW5hYmxlZBIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2VCK6oCKFBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5Db21tdW5pdHkuVjFiBnByb3RvMw",[Ne]),Fh=v(re,1),kh=v(re,5),Uh=v(re,7),Jh=v(re,9),xh=v(re,11),Kh=v(re,13),zh=v(re,19),Lh=v(re,21),jh=v(re,23),Th=v(re,25),Hh=v(re,27),Qh=v(re,37),Mh=v(re,39),Oh=v(re,49),Dh=v(re,50),_h=v(re,52),$h=We(re,0),er=oe("CiVoYWdpY29kZS9wbGF0Zm9ybS92MS9zdGF0aXN0aWNzLnByb3RvEhRoYWdpY29kZS5wbGF0Zm9ybS52MSJ1ChhHZXRBZ2dyZWdhdGVkRGF0YVJlcXVlc3QSFQoNZm9yY2VfcmVmcmVzaBgBIAEoCBIlChhnaXRfYXV0b19yZWZyZXNoX2VuYWJsZWQYAiABKAhIAIgBAUIbChlfZ2l0X2F1dG9fcmVmcmVzaF9lbmFibGVkIl0KGUdldEFnZ3JlZ2F0ZWREYXRhUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8iHQobR2V0VG9rZW5Nb25pdG9yVXNhZ2VSZXF1ZXN0ImIKHEdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yVXNhZ2VTbmFwc2hvdER0byK/AQodR2V0VG9rZW5Nb25pdG9ySGlzdG9yeVJlcXVlc3QSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgAiAEBEhcKCnBhZ2VfdG9rZW4YBCABKAlIAYgBAUIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuImIKHkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRJACgZyZXN1bHQYASABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JIaXN0b3J5UGFnZUR0byKTAQoaVG9rZW5Nb25pdG9ySGlzdG9yeVBhZ2VEdG8SQwoHc2FtcGxlcxgBIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlTYW1wbGVEdG8SHAoPbmV4dF9wYWdlX3Rva2VuGAIgASgJSACIAQFCEgoQX25leHRfcGFnZV90b2tlbiKhAwocVG9rZW5Nb25pdG9ySGlzdG9yeVNhbXBsZUR0bxIzCg9vYnNlcnZlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGwoOZmFpbHVyZV9yZWFzb24YBCABKAlIAIgBARIVCghkYXRlX2tleRgFIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgGIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAcgASgBSAOIAQESQwoHcGVyaW9kcxgIIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlQZXJpb2REdG8SQwoHd2luZG93cxgJIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlXaW5kb3dEdG9CEQoPX2ZhaWx1cmVfcmVhc29uQgsKCV9kYXRlX2tleUIPCg1fdG90YWxfdG9rZW5zQgsKCV9jb3N0X3VzZCKOAwocVG9rZW5Nb25pdG9ySGlzdG9yeVBlcmlvZER0bxIOCgZwZXJpb2QYASABKAkSFAoMdG90YWxfdG9rZW5zGAIgASgDEhAKCGNvc3RfdXNkGAMgASgBEh4KEWNhY2hlX3JlYWRfdG9rZW5zGAQgASgDSACIAQESHwoSY2FjaGVfd3JpdGVfdG9rZW5zGAUgASgDSAGIAQESGgoNb3V0cHV0X3Rva2VucxgGIAEoA0gCiAEBEhkKDHRpbWVkX3Rva2VucxgHIAEoA0gDiAEBEiAKE3RpbWVkX291dHB1dF90b2tlbnMYCCABKANIBIgBARIeChF0aW1lZF9kdXJhdGlvbl9tcxgJIAEoA0gFiAEBQhQKEl9jYWNoZV9yZWFkX3Rva2Vuc0IVChNfY2FjaGVfd3JpdGVfdG9rZW5zQhAKDl9vdXRwdXRfdG9rZW5zQg8KDV90aW1lZF90b2tlbnNCFgoUX3RpbWVkX291dHB1dF90b2tlbnNCFAoSX3RpbWVkX2R1cmF0aW9uX21zIp0DChxUb2tlbk1vbml0b3JIaXN0b3J5V2luZG93RHRvEhAKCHByb3ZpZGVyGAEgASgJEhcKCnBsYW5fbGFiZWwYAiABKAlIAIgBARIXCg9wcm92aWRlcl9zdGF0dXMYAyABKAkSDAoEa2luZBgEIAEoCRISCgVsYWJlbBgFIAEoCUgBiAEBEhsKDndpbmRvd19taW51dGVzGAYgASgFSAKIAQESGQoMdXNlZF9wZXJjZW50GAcgASgBSAOIAQESHgoRcmVtYWluaW5nX3BlcmNlbnQYCCABKAFIBIgBARIxCg1yZXNldHNfYXRfdXRjGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVzb3VyY2VfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19wbGFuX2xhYmVsQggKBl9sYWJlbEIRCg9fd2luZG93X21pbnV0ZXNCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnQidQohR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2VSZXF1ZXN0EigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJmCiJHZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEkAKBnJlc3VsdBgBIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhvdXJseVVzYWdlRHRvItcCChpUb2tlbk1vbml0b3JIb3VybHlVc2FnZUR0bxIyCg5ob3VyX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXRjX29mZnNldF9taW51dGVzGAIgASgFEg4KBnRva2VucxgDIAEoAxIQCghjb3N0X3VzZBgEIAEoARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSACIAQESHgoRY2FjaGVfcmVhZF90b2tlbnMYBiABKANIAYgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYByABKANIAogBARIYChBvYnNlcnZlZF9zZWNvbmRzGAggASgFEhEKCWVzdGltYXRlZBgJIAEoCEIQCg5fb3V0cHV0X3Rva2Vuc0IUChJfY2FjaGVfcmVhZF90b2tlbnNCFQoTX2NhY2hlX3dyaXRlX3Rva2VucyIlCiNHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVxdWVzdCJgCiRHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0RHRvIkQKIEdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXF1ZXN0EhQKB21pbnV0ZXMYASABKAVIAIgBAUIKCghfbWludXRlcyJiCiFHZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVzcG9uc2USPQoGcmVzdWx0GAEgAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0U25hcHNob3QiOAoaR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QSEQoEZGF0ZRgBIAEoCUgAiAEBQgcKBV9kYXRlIlgKG0dldEhlcm9CYXR0bGVSZXBvcnRSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RHRvIkAKIEdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXF1ZXN0EhIKBXJhbmdlGAEgASgJSACIAQFCCAoGX3JhbmdlImcKIUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvIuwCChxHZXRIaXN0b3JpY2FsVGltZWxpbmVSZXF1ZXN0EhgKC2VudGl0eV90eXBlGAEgASgJSACIAQESFgoJZW50aXR5X2lkGAIgASgJSAGIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgCiAEBEhcKCnNlc3Npb25faWQYBCABKAlIA4gBARIzCg9yYW5nZV9zdGFydF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjEKDXJhbmdlX2VuZF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBmN1cnNvchgHIAEoCUgEiAEBEhYKCXBhZ2Vfc2l6ZRgIIAEoBUgFiAEBQg4KDF9lbnRpdHlfdHlwZUIMCgpfZW50aXR5X2lkQg0KC19wcm9qZWN0X2lkQg0KC19zZXNzaW9uX2lkQgkKB19jdXJzb3JCDAoKX3BhZ2Vfc2l6ZSJpCh1HZXRIaXN0b3JpY2FsVGltZWxpbmVSZXNwb25zZRJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvIiUKI0dldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXF1ZXN0InIKJEdldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VEdG8iqgEKFkFnZ3JlZ2F0aW9uTWV0YWRhdGFEdG8SLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg50b3RhbF9wcm9qZWN0cxgCIAEoBRIaChJ0b3RhbF9yZXBvc2l0b3JpZXMYAyABKAUSFwoPZmFpbGVkX3Byb2plY3RzGAQgASgFEhQKDGhhc19mYWlsdXJlcxgFIAEoCCKyBQoYUmVwb3NpdG9yeUFnZ3JlZ2F0aW9uRHRvEhEKBGNvZGUYASABKAlIAIgBARIMCgRuYW1lGAIgASgJEgwKBHBhdGgYAyABKAkSFQoNcmVsYXRpdmVfcGF0aBgEIAEoCRIUCgxkaXNwbGF5X25hbWUYBSABKAkSEQoEdHlwZRgGIAEoCUgBiAEBEgwKBHRhZ3MYByADKAkSEQoEaWNvbhgIIAEoCUgCiAEBEhAKA3VybBgJIAEoCUgDiAEBEhgKEGNvbGxhcHNlX3RvX21vcmUYCiABKAgSGQoRaXNfdmFsaWRfZ2l0X3JlcG8YCyABKAgSHAoUZ2l0X3N0YXR1c19hdmFpbGFibGUYDCABKAgSEwoGYnJhbmNoGA0gASgJSASIAQESHwoXaGFzX3VuY29tbWl0dGVkX2NoYW5nZXMYDiABKAgSHQoVdW5wdXNoZWRfY29tbWl0X2NvdW50GA8gASgFEhsKE2hhc190cmFja2luZ19icmFuY2gYECABKAgSNQoPdHJhY2tpbmdfYnJhbmNoGBEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEhMKC2FoZWFkX2NvdW50GBIgASgFEhQKDGJlaGluZF9jb3VudBgTIAEoBRIXCgpzeW5jX3N0YXRlGBQgASgJSAWIAQESEwoLaXNfb3B0aW9uYWwYFSABKAgSFAoMaXNfc2FuaXRpemVkGBYgASgIEhsKE3Nhbml0aXphdGlvbl9yZWFzb24YFyABKAkSGAoQaGFzX25hbWVfd2FybmluZxgYIAEoCBIVCg1uYW1lX3dhcm5pbmdzGBkgAygJQgcKBV9jb2RlQgcKBV90eXBlQgcKBV9pY29uQgYKBF91cmxCCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSK6BAoVUHJvamVjdEFnZ3JlZ2F0aW9uRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhUKDWlzX21vbm9fc3BlY3MYBSABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAYgASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgHIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgIIAEoCEgDiAEBEkQKDHJlcG9zaXRvcmllcxgJIAMoCzIuLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlJlcG9zaXRvcnlBZ2dyZWdhdGlvbkR0bxJBCh1naXRfc25hcHNob3RfcmVmcmVzaGVkX2F0X3V0YxgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIQoZZ2l0X3NuYXBzaG90X3NlcnZlZF9zdGFsZRgLIAEoCBIrCgVlcnJvchgMIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIRCgloYXNfZXJyb3IYDSABKAhCDgoMX2Rlc2NyaXB0aW9uQhUKE19tb25vX3NwZWNzX3ZlcnNpb25CHAoaX21vbm9fc3BlY3NfcmVwb19kaXJlY3RvcnlCIQofX21vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZSKbAQoaRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8SPQoIcHJvamVjdHMYASADKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Qcm9qZWN0QWdncmVnYXRpb25EdG8SPgoIbWV0YWRhdGEYAiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5BZ2dyZWdhdGlvbk1ldGFkYXRhRHRvIqkDChxUb2tlbk1vbml0b3JVc2FnZVNuYXBzaG90RHRvEg4KBnN0YXR1cxgBIAEoCRIOCgZzb3VyY2UYAiABKAkSGwoOZmFpbHVyZV9yZWFzb24YAyABKAlIAIgBARIVCghkYXRlX2tleRgEIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgFIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAYgASgBSAOIAQESLwoLcmVhZF9hdF91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhgKEHNuYXBzaG90X3ZlcnNpb24YCCABKAMSOwoGbGltaXRzGAkgASgLMisuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yTGltaXRzRHRvEj0KB3BlcmlvZHMYCiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RzRHRvQhEKD19mYWlsdXJlX3JlYXNvbkILCglfZGF0ZV9rZXlCDwoNX3RvdGFsX3Rva2Vuc0ILCglfY29zdF91c2QiugEKFVRva2VuTW9uaXRvckxpbWl0c0R0bxIyCg51cGRhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKcmVmcmVzaF9tcxgCIAEoBUgAiAEBEkUKCXByb3ZpZGVycxgDIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG9CDQoLX3JlZnJlc2hfbXMi0wIKHFRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSDgoGc3RhdHVzGAIgASgJEhcKCnBsYW5fbGFiZWwYAyABKAlIAIgBARIyCg51cGRhdGVkX2F0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoHd2luZG93cxgFIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEhgKC2JhbGFuY2VfdXNkGAYgASgBSAGIAQESSAoNcmVzZXRfY3JlZGl0cxgHIAEoCzIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0b0INCgtfcGxhbl9sYWJlbEIOCgxfYmFsYW5jZV91c2Qi9QMKGlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEgwKBGtpbmQYASABKAkSEgoFbGFiZWwYAiABKAlIAIgBARIZCgx1c2VkX3BlcmNlbnQYAyABKAFIAYgBARIeChFyZW1haW5pbmdfcGVyY2VudBgEIAEoAUgCiAEBEhEKBHVzZWQYBSABKAFIA4gBARISCgVsaW1pdBgGIAEoAUgEiAEBEhYKCXJlbWFpbmluZxgHIAEoAUgFiAEBEhUKCGN1cnJlbmN5GAggASgJSAaIAQESMQoNcmVzZXRzX2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOd2luZG93X21pbnV0ZXMYCiABKAVIB4gBARIeChFyZXNldF9kZXNjcmlwdGlvbhgLIAEoCUgIiAEBEhoKDW1ldGVyX3Zpc2libGUYDCABKAhICYgBAUIICgZfbGFiZWxCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnRCBwoFX3VzZWRCCAoGX2xpbWl0QgwKCl9yZW1haW5pbmdCCwoJX2N1cnJlbmN5QhEKD193aW5kb3dfbWludXRlc0IUChJfcmVzZXRfZGVzY3JpcHRpb25CEAoOX21ldGVyX3Zpc2libGUivQEKG1Rva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0bxIcCg9hdmFpbGFibGVfY291bnQYASABKAVIAIgBARI3ChNuZXh0X2V4cGlyZXNfYXRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9leHBpcmF0aW9uc191dGMYAyADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhIKEF9hdmFpbGFibGVfY291bnQizwEKFlRva2VuTW9uaXRvclBlcmlvZHNEdG8SOgoFdG9kYXkYASABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SOgoFbW9udGgYAiABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SPQoIYWxsX3RpbWUYAyABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8iigQKFVRva2VuTW9uaXRvclBlcmlvZER0bxIUCgx0b3RhbF90b2tlbnMYASABKAMSEAoIY29zdF91c2QYAiABKAESHgoRY2FjaGVfcmVhZF90b2tlbnMYAyABKANIAIgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYBCABKANIAYgBARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSAKIAQESGQoMdGltZWRfdG9rZW5zGAYgASgDSAOIAQESIAoTdGltZWRfb3V0cHV0X3Rva2VucxgHIAEoA0gEiAEBEh4KEXRpbWVkX2R1cmF0aW9uX21zGAggASgDSAWIAQESTQoMY2FwYWJpbGl0aWVzGAkgASgLMjcuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEkIKB2NsaWVudHMYCiADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RDbGllbnREdG9CFAoSX2NhY2hlX3JlYWRfdG9rZW5zQhUKE19jYWNoZV93cml0ZV90b2tlbnNCEAoOX291dHB1dF90b2tlbnNCDwoNX3RpbWVkX3Rva2Vuc0IWChRfdGltZWRfb3V0cHV0X3Rva2Vuc0IUChJfdGltZWRfZHVyYXRpb25fbXMifwohVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEh0KEHRva2VuX2NvbXBvbmVudHMYASABKAhIAIgBARIXCgp0aHJvdWdocHV0GAIgASgISAGIAQFCEwoRX3Rva2VuX2NvbXBvbmVudHNCDQoLX3Rocm91Z2hwdXQiTwobVG9rZW5Nb25pdG9yUGVyaW9kQ2xpZW50RHRvEg4KBmNsaWVudBgBIAEoCRIOCgZ0b2tlbnMYAiABKAMSEAoIY29zdF91c2QYAyABKAEi2AIKElRva2VuVGhyb3VnaHB1dER0bxIfChdpbnB1dF90b2tlbnNfcGVyX21pbnV0ZRgBIAEoBRIgChhvdXRwdXRfdG9rZW5zX3Blcl9taW51dGUYAiABKAUSGgoSdG90YWxfaW5wdXRfdG9rZW5zGAMgASgDEhsKE3RvdGFsX291dHB1dF90b2tlbnMYBCABKAMSMAoMbGFzdF91cGRhdGVkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCh9yZWd1bGFyX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAYgASgFEiUKHWNhY2hlX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAcgASgFEiIKGnRvdGFsX3JlZ3VsYXJfaW5wdXRfdG9rZW5zGAggASgDEiAKGHRvdGFsX2NhY2hlX2lucHV0X3Rva2VucxgJIAEoAyKvAQoXVG9rZW5UaHJvdWdocHV0U25hcHNob3QSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxpbnB1dF90b2tlbnMYAiABKAUSFQoNb3V0cHV0X3Rva2VucxgDIAEoBRIcChRyZWd1bGFyX2lucHV0X3Rva2VucxgEIAEoBRIaChJjYWNoZV9pbnB1dF90b2tlbnMYBSABKAUi4AEKLEhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvEhUKDWNhbm9uaWNhbF9rZXkYASABKAkSEAoIbmFtZV9rZXkYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSMwoPdW5sb2NrZWRfYXRfdXRjGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5wcm9ncmVzc19hZnRlchgFIAEoBRIOCgZ0YXJnZXQYBiABKAUSFQoNcmV3YXJkX2Ftb3VudBgHIAEoAyK7AQopSGVyb0JhdHRsZVJlcG9ydFBlbmRpbmdBY2hpZXZlbWVudEhpbnREdG8SFQoNY2Fub25pY2FsX2tleRgBIAEoCRIQCghuYW1lX2tleRgCIAEoCRIRCglnb2FsX3R5cGUYAyABKAkSEAoIcHJvZ3Jlc3MYBCABKAUSDgoGdGFyZ2V0GAUgASgFEhcKD3JlbWFpbmluZ19jb3VudBgGIAEoBRIXCg9jb21wbGV0aW9uX3JhdGUYByABKAEivQIKJUhlcm9CYXR0bGVSZXBvcnRBY2hpZXZlbWVudFN1bW1hcnlEdG8SGAoQaGFzX2FyY2hpdmVfZGF0YRgBIAEoCBIXCg9jb21wbGV0ZWRfY291bnQYAiABKAUSEwoLdG90YWxfY291bnQYAyABKAUSFwoPY29tcGxldGlvbl9yYXRlGAQgASgBElsKD2xhdGVzdF91bmxvY2tlZBgFIAEoCzJCLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvElYKDXBlbmRpbmdfaGludHMYBiADKAsyPy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UGVuZGluZ0FjaGlldmVtZW50SGludER0byL0AgojSGVyb0JhdHRsZVJlcG9ydEhpZ2hsaWdodFNlc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRISCgV0aXRsZRgCIAEoCUgAiAEBEhkKDHNlc3Npb25fY29kZRgDIAEoCUgBiAEBEhkKDHNlc3Npb25fdHlwZRgEIAEoCUgCiAEBEhoKDXByb3Bvc2FsX25hbWUYBSABKAlIA4gBARIWCg5hY3Rpdml0eV9jb3VudBgGIAEoBRIiChpjb21wbGV0ZWRfYXNzaXN0YW5jZV9jb3VudBgHIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgIIAEoBRI4ChRsYXN0X2FjdGl2aXR5X2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX3RpdGxlQg8KDV9zZXNzaW9uX2NvZGVCDwoNX3Nlc3Npb25fdHlwZUIQCg5fcHJvcG9zYWxfbmFtZSKnAwoiSGVyb0JhdHRsZVJlcG9ydEFjdGl2aXR5U3VtbWFyeUR0bxIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYASABKAUSIgoaY2hhdF9zZXNzaW9uX2NyZWF0ZWRfY291bnQYAiABKAUSJgoecHJvcG9zYWxfc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgFEhYKDnByb3Bvc2FsX2NvdW50GAQgASgFEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgFIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgGIAEoBRIfChdwcm9wb3NhbF9hcmNoaXZlZF9jb3VudBgHIAEoBRIiChphc3Npc3RhbmNlX2NvbXBsZXRlZF9jb3VudBgIIAEoBRIfChdhc3Npc3RhbmNlX2ZhaWxlZF9jb3VudBgJIAEoBRJVChJoaWdobGlnaHRfc2Vzc2lvbnMYCiADKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGlnaGxpZ2h0U2Vzc2lvbkR0byJGCiNIZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxIQCghwcmV2aW91cxgBIAEoAxINCgVkZWx0YRgCIAEoAyK8BQodSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25EdG8SGAoQaGFzX3ByZXZpb3VzX2RheRgBIAEoCBIaCg1wcmV2aW91c19kYXRlGAIgASgJSACIAQESVAoRYWN0aXZlX2hlcm9fY291bnQYAyABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg9leGVjdXRpb25fY291bnQYBCABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg90b29sX2NhbGxfY291bnQYBSABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJPCgx0b3RhbF90b2tlbnMYBiABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJYChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYByABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJRCg5wcm9wb3NhbF9jb3VudBgIIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvElcKFGhhZ2lwb3dlcl9uZXRfY2hhbmdlGAkgASgLMjkuaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25NZXRyaWNEdG9CEAoOX3ByZXZpb3VzX2RhdGUixgEKG0hlcm9CYXR0bGVSZXBvcnRFeGVjdXRvckR0bxIVCg1leGVjdXRvcl90eXBlGAEgASgJEhIKCmhlcm9fY291bnQYAiABKAUSGQoRYWN0aXZlX2hlcm9fY291bnQYAyABKAUSFwoPZXhlY3V0aW9uX2NvdW50GAQgASgFEhcKD3Rvb2xfY2FsbF9jb3VudBgFIAEoBRIUCgx0b3RhbF90b2tlbnMYBiABKAMSGQoRdG90YWxfZHVyYXRpb25fbXMYByABKAMiuAEKIUhlcm9CYXR0bGVSZXBvcnRIYWdpcG93ZXJQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItwDChxIZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEjMKD3JhbmdlX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoNcmFuZ2VfZW5kX3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoOYnVja2V0X21pbnV0ZXMYAyABKAUSFwoPaGFzX2ZpbGxlZF9nYXBzGAQgASgIEhwKFGhhc19yZWNvcmRlZF9oaXN0b3J5GAUgASgIEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYBiABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAcgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgIIAEoAxISCgpuZXRfY2hhbmdlGAkgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEk4KDXB1YmxpY19zZXJpZXMYCyADKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyUG9pbnREdG8iiQQKF0hlcm9CYXR0bGVSZXBvcnRIZXJvRHRvEg8KB2hlcm9faWQYASABKAkSEQoJaGVyb19uYW1lGAIgASgJEhYKCWhlcm9faWNvbhgDIAEoCUgAiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBCABKAkSEgoFbW9kZWwYBSABKAlIAYgBARIYCgtkZXNjcmlwdGlvbhgGIAEoCUgCiAEBEgwKBHJhbmsYByABKAUSDgoGc3RhdHVzGAggASgJEg0KBWdyYWRlGAkgASgJEhQKDGJhdHRsZV9zY29yZRgKIAEoBRIXCg9leGVjdXRpb25fY291bnQYCyABKAUSFwoPdG9vbF9jYWxsX2NvdW50GAwgASgFEhQKDGlucHV0X3Rva2VucxgNIAEoAxIaChJjYWNoZV9pbnB1dF90b2tlbnMYDiABKAMSFQoNb3V0cHV0X3Rva2VucxgPIAEoAxIbChNjYWNoZV9vdXRwdXRfdG9rZW5zGBAgASgDEhQKDHRvdGFsX3Rva2VucxgRIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgSIAEoAxI5ChVsYXN0X2NvbXBsZXRlZF9hdF91dGMYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsQg4KDF9kZXNjcmlwdGlvbiKAAgoiSGVyb0JhdHRsZVJlcG9ydFByb2plY3RBY3Rpdml0eUR0bxISCgpwcm9qZWN0X2lkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIWCg5hY3Rpdml0eV9jb3VudBgDIAEoBRIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYBCABKAUSFgoOcHJvcG9zYWxfY291bnQYBSABKAUSIgoaYXNzaXN0YW5jZV9jb21wbGV0ZWRfY291bnQYBiABKAUSHwoXYXNzaXN0YW5jZV9mYWlsZWRfY291bnQYByABKAUSFgoOYWN0aXZpdHlfc2hhcmUYCCABKAFCBwoFX25hbWUi+gEKIUhlcm9CYXR0bGVSZXBvcnRQcm9qZWN0UHJvZmlsZUR0bxIQCghoYXNfZGF0YRgBIAEoCBIdChVwcm9qZWN0X2NyZWF0ZWRfY291bnQYAiABKAMSHQoVc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgDEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgEIAEoAxIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgFIAEoAxITCgt0b2tlbl90b3RhbBgGIAEoAxItCglhc19vZl91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIo0CChtIZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SGwoTdG90YWxfcHJvamVjdF9jb3VudBgBIAEoBRIcChRhY3RpdmVfcHJvamVjdF9jb3VudBgCIAEoBRIZChFuZXdfcHJvamVjdF9jb3VudBgDIAEoBRJOCgx0b3BfcHJvamVjdHMYBCADKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdEFjdGl2aXR5RHRvEkgKB3Byb2ZpbGUYBSABKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdFByb2ZpbGVEdG8irQIKFkhlcm9CYXR0bGVSZXBvcnRNdnBEdG8SDwoHaGVyb19pZBgBIAEoCRIRCgloZXJvX25hbWUYAiABKAkSFgoJaGVyb19pY29uGAMgASgJSACIAQESFQoNZXhlY3V0b3JfdHlwZRgEIAEoCRISCgVtb2RlbBgFIAEoCUgBiAEBEgwKBHJhbmsYBiABKAUSFAoMYmF0dGxlX3Njb3JlGAcgASgFEg0KBWdyYWRlGAggASgJEhcKD2V4ZWN1dGlvbl9jb3VudBgJIAEoBRIXCg90b29sX2NhbGxfY291bnQYCiABKAUSFAoMdG90YWxfdG9rZW5zGAsgASgDEhkKEXRvdGFsX2R1cmF0aW9uX21zGAwgASgDQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsItkCChpIZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxIYChB0b3RhbF9oZXJvX2NvdW50GAEgASgFEhkKEWFjdGl2ZV9oZXJvX2NvdW50GAIgASgFEhoKEnRvdGFsX2JhdHRsZV9zY29yZRgDIAEoBRIYChB0b3RhbF90b29sX2NhbGxzGAQgASgFEhQKDHRvdGFsX3Rva2VucxgFIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgGIAEoAxIUCgxpbnB1dF90b2tlbnMYByABKAMSGgoSY2FjaGVfaW5wdXRfdG9rZW5zGAggASgDEhUKDW91dHB1dF90b2tlbnMYCSABKAMSGwoTY2FjaGVfb3V0cHV0X3Rva2VucxgKIAEoAxI5CgNtdnAYCyABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0TXZwRHRvIqYGChNIZXJvQmF0dGxlUmVwb3J0RHRvEhMKC3JlcG9ydF9kYXRlGAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHRpbWVfem9uZV9pZBgDIAEoCRI1ChFjb3ZlcmVkX3N0YXJ0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoPY292ZXJlZF9lbmRfdXRjGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJFCgloYWdpcG93ZXIYBiABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEkEKB3N1bW1hcnkYByABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxJRCgxhY2hpZXZlbWVudHMYCCABKAsyOy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWNoaWV2ZW1lbnRTdW1tYXJ5RHRvElIKEGFjdGl2aXR5X3N1bW1hcnkYCSABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWN0aXZpdHlTdW1tYXJ5RHRvEkcKCmNvbXBhcmlzb24YCiABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbkR0bxJECglleGVjdXRvcnMYCyADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RXhlY3V0b3JEdG8SQwoIcHJvamVjdHMYDCABKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SPQoGaGVyb2VzGA0gAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydEhlcm9EdG8itQEKHkhhZ2lwb3dlclB1YmxpY0hpc3RvcnlQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItcBCh5IYWdpcG93ZXJTdGF0aXN0aWNzTWV0YWRhdGFEdG8SMwoPcmFuZ2Vfc3RhcnRfdXRjGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1yYW5nZV9lbmRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5idWNrZXRfbWludXRlcxgDIAEoBRIXCg9oYXNfZmlsbGVkX2dhcHMYBCABKAgSHAoUaGFzX3JlY29yZGVkX2hpc3RvcnkYBSABKAgi1gEKHUhhZ2lwb3dlclN0YXRpc3RpY3NTdW1tYXJ5RHRvEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYASABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAIgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgDIAEoAxISCgpuZXRfY2hhbmdlGAQgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIogCChxIYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvEg0KBXJhbmdlGAEgASgJEkYKCG1ldGFkYXRhGAIgASgLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyU3RhdGlzdGljc01ldGFkYXRhRHRvEkQKB3N1bW1hcnkYAyABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzU3VtbWFyeUR0bxJLCg1wdWJsaWNfc2VyaWVzGAQgAygLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyUHVibGljSGlzdG9yeVBvaW50RHRvIrsDChpIaXN0b3JpY2FsVGltZWxpbmVFdmVudER0bxIQCghldmVudF9pZBgBIAEoCRIzCg9vY2N1cnJlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDmNyZWF0ZWRfYXRfdXRjGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtlbnRpdHlfdHlwZRgEIAEoCRIRCgllbnRpdHlfaWQYBSABKAkSFwoKcHJvamVjdF9pZBgGIAEoCUgAiAEBEhcKCnNlc3Npb25faWQYByABKAlIAYgBARIMCgRjb2RlGAggASgJEigKCG1ldGFkYXRhGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhMKBnNvdXJjZRgKIAEoCUgCiAEBEhUKCGFjdG9yX2lkGAsgASgJSAOIAQESGwoOY29ycmVsYXRpb25faWQYDCABKAlIBIgBAUINCgtfcHJvamVjdF9pZEINCgtfc2Vzc2lvbl9pZEIJCgdfc291cmNlQgsKCV9hY3Rvcl9pZEIRCg9fY29ycmVsYXRpb25faWQiiAEKH0hpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8SEQoJcGFnZV9zaXplGAEgASgFEhYKDnJldHVybmVkX2NvdW50GAIgASgFEhAKCGhhc19tb3JlGAMgASgIEhgKC25leHRfY3Vyc29yGAQgASgJSACIAQFCDgoMX25leHRfY3Vyc29yIrABCiJIaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvEj8KBWl0ZW1zGAEgAygLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnREdG8SSQoKcGFnaW5hdGlvbhgCIAEoCzI1LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8imwMKIEhpc3RvcmljYWxUaW1lbGluZUV2ZW50U2FtcGxlRHRvEhMKC2VudGl0eV90eXBlGAEgASgJEgwKBGNvZGUYAiABKAkSGAoQc2FtcGxlX2VudGl0eV9pZBgDIAEoCRIeChFzYW1wbGVfcHJvamVjdF9pZBgEIAEoCUgAiAEBEh4KEXNhbXBsZV9zZXNzaW9uX2lkGAUgASgJSAGIAQESGgoNc2FtcGxlX3NvdXJjZRgGIAEoCUgCiAEBEhwKD3NhbXBsZV9hY3Rvcl9pZBgHIAEoCUgDiAEBEiIKFXNhbXBsZV9jb3JyZWxhdGlvbl9pZBgIIAEoCUgEiAEBEjAKEG1ldGFkYXRhX2V4YW1wbGUYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCFAoSX3NhbXBsZV9wcm9qZWN0X2lkQhQKEl9zYW1wbGVfc2Vzc2lvbl9pZEIQCg5fc2FtcGxlX3NvdXJjZUISChBfc2FtcGxlX2FjdG9yX2lkQhgKFl9zYW1wbGVfY29ycmVsYXRpb25faWQibQokSGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1Jlc3BvbnNlRHRvEkUKBWl0ZW1zGAEgAygLMjYuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnRTYW1wbGVEdG8y7QoKEVN0YXRpc3RpY3NTZXJ2aWNlEnQKEUdldEFnZ3JlZ2F0ZWREYXRhEi4uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXF1ZXN0Gi8uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXNwb25zZRJ9ChRHZXRUb2tlbk1vbml0b3JVc2FnZRIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVxdWVzdBoyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USgwEKFkdldFRva2VuTW9uaXRvckhpc3RvcnkSMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIaXN0b3J5UmVxdWVzdBo0LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRKPAQoaR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2USNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlcXVlc3QaOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEpUBChxHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5UaHJvdWdocHV0U3RhdGlzdGljc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USjAEKGUdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnkSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXNwb25zZRJ6ChNHZXRIZXJvQmF0dGxlUmVwb3J0EjAuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QaMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIZXJvQmF0dGxlUmVwb3J0UmVzcG9uc2USjAEKGUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnQSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIYWdpcG93ZXJIaXN0b3J5UmVwb3J0UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRKAAQoVR2V0SGlzdG9yaWNhbFRpbWVsaW5lEjIuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lUmVxdWVzdBozLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhpc3RvcmljYWxUaW1lbGluZVJlc3BvbnNlEpUBChxHZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VCKqoCJ1BDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5QbGF0Zm9ybS5WMWIGcHJvdG8z",[Ue,Ne,rs]),Ph=v(er,1),qh=v(er,3),eb=We(er,0),de=oe("CiJoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25zLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIlUKFk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QSOwoEYm9keRgBIAEoCzItLmhhZ2ljb2RlLnNlc3Npb24udjEuQ3JlYXRlQ2hhdFNlc3Npb25SZXF1ZXN0IlIKF09wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIk0KEk9wZW5TZXNzaW9uUmVxdWVzdBI3CgRib2R5GAEgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdCJOChNPcGVuU2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIicKEUdldFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiTQoSR2V0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvImEKElNhdmVTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjcKBGJvZHkYAiABKAsyKS5oYWdpY29kZS5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25SZXF1ZXN0Ik4KE1NhdmVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8izAEKE0xpc3RTZXNzaW9uc1JlcXVlc3QSEQoEdHlwZRgBIAEoCUgAiAEBEhgKC2FjdGl2ZV9vbmx5GAIgASgISAGIAQESHQoQaW5jbHVkZV9hcmNoaXZlZBgDIAEoCEgCiAEBEhcKCnByb2plY3RfaWQYBCABKAlIA4gBARITCgtwcm9qZWN0X2lkcxgFIAMoCUIHCgVfdHlwZUIOCgxfYWN0aXZlX29ubHlCEwoRX2luY2x1ZGVfYXJjaGl2ZWRCDQoLX3Byb2plY3RfaWQiUwoUTGlzdFNlc3Npb25zUmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTGlzdFJlc3BvbnNlRHRvIkAKFERlbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSFAoMZGVsZXRlX2ZpbGVzGAIgASgIIlYKFURlbGV0ZVNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIvChlBcmNoaXZlQ2hhdFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWwoaQXJjaGl2ZUNoYXRTZXNzaW9uUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5TaW1wbGVNZXNzYWdlUmVzcG9uc2VEdG8idAoZU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEkMKBGJvZHkYAiABKAsyNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0IlUKGlN3aXRjaFN0b3BwZWRBZ2VudFJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIl4KG1N0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBI/CgRib2R5GAEgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVIYWdpVGFza1Nlc3Npb25SZXF1ZXN0IlcKHFN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iZAohU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXF1ZXN0Ej8KBGJvZHkYASABKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkNyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QiXQoiU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byLOAwoSQ2hhdEhlcm9TdW1tYXJ5RHRvEg8KB2hlcm9faWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhEKBGljb24YBCABKAlIAYgBARIVCg1leGVjdXRvcl90eXBlGAUgASgJEhkKDGFnZW50X2NsaV9pZBgGIAEoCUgCiAEBEhsKDmFnZW50X2NsaV9uYW1lGAcgASgJSAOIAQESGwoOYWdlbnRfY2xpX2ljb24YCCABKAlIBIgBARIVCghtb2RlbF9pZBgJIAEoCUgFiAEBEhcKCm1vZGVsX25hbWUYCiABKAlIBogBARIXCgptb2RlbF9pY29uGAsgASgJSAeIAQESIgoVc2Vjb25kYXJ5X21vZGVsX2xhYmVsGAwgASgJSAiIAQFCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQg8KDV9hZ2VudF9jbGlfaWRCEQoPX2FnZW50X2NsaV9uYW1lQhEKD19hZ2VudF9jbGlfaWNvbkILCglfbW9kZWxfaWRCDQoLX21vZGVsX25hbWVCDQoLX21vZGVsX2ljb25CGAoWX3NlY29uZGFyeV9tb2RlbF9sYWJlbCI4ChRPcGVuU3BlY1Rhc2tQcm9ncmVzcxIRCgljb21wbGV0ZWQYASABKAUSDQoFdG90YWwYAiABKAUi/gEKEE9wZW5TcGVjRmlsZUluZm8SEQoJZmlsZV9uYW1lGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhEKCWZpbGVfdHlwZRgEIAEoCRITCgtpc19yZXF1aXJlZBgFIAEoCBITCgtpc19hcmNoaXZlZBgGIAEoCBIxCg1hcmNoaXZlZF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJACg10YXNrX3Byb2dyZXNzGAggASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY1Rhc2tQcm9ncmVzcyJcChFPcGVuU3BlY0ZpbGVzSW5mbxIRCgliYXNlX3BhdGgYASABKAkSNAoFZmlsZXMYAiADKAsyJS5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TcGVjRmlsZUluZm8i3gIKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCBIWCglzY2hlZHVsZWQYByABKAhIAYgBARIuCgpkdWVfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIhChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgJIAEoCUgCiAEBQhcKFV9leGVjdXRpb25fbWVzc2FnZV9pZEIMCgpfc2NoZWR1bGVkQhcKFV9zY2hlZHVsZWRfbWVzc2FnZV9pZCKAAQoWU2Vzc2lvbk5vdGlmaWNhdGlvbkR0bxIMCgRraW5kGAEgASgJEi8KC29ic2VydmVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCgdwYXlsb2FkGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIu0BChZTZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhoKDXByb21wdF90b2tlbnMYASABKAVIAIgBARIhChRjYWNoZWRfcHJvbXB0X3Rva2VucxgCIAEoBUgBiAEBEh4KEWNvbXBsZXRpb25fdG9rZW5zGAMgASgFSAKIAQESMwoPbGFzdF91cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIQCg5fcHJvbXB0X3Rva2Vuc0IXChVfY2FjaGVkX3Byb21wdF90b2tlbnNCFAoSX2NvbXBsZXRpb25fdG9rZW5zIl8KFFN0YWdlRXhlY3V0b3JJbmZvRHRvEhUKDXByb3ZpZGVyX3R5cGUYASABKAkSMAoMbGFzdF91cGRhdGVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK8AgoVU3RhZ2VIZXJvU2VsZWN0aW9uRHRvEhEKCXN0YWdlX2tleRgBIAEoCRISCgpzY3JpcHRfa2V5GAIgASgJEhUKDXNjZW5hcmlvX25hbWUYAyABKAkSFAoHaGVyb19pZBgEIAEoCUgAiAEBEhYKCWhlcm9fbmFtZRgFIAEoCUgBiAEBEhYKCWhlcm9faWNvbhgGIAEoCUgCiAEBEhUKDWV4ZWN1dG9yX3R5cGUYByABKAkSFQoNdXNlZF9mYWxsYmFjaxgIIAEoCBIYChBzZWxlY3Rpb25fc291cmNlGAkgASgJEi8KC3NlbGVjdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfaGVyb19pZEIMCgpfaGVyb19uYW1lQgwKCl9oZXJvX2ljb24i9QwKElNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESHAoPY2hpZWZfY29tcGxhaW50GAQgASgJSAGIAQESDAoEY29kZRgFIAEoBRIMCgR0eXBlGAYgASgJEg4KBnN0YXR1cxgHIAEoCRIRCglpc19hY3RpdmUYCCABKAgSMgoObGFzdF9hY3RpdmVfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnByb2plY3RfaWQYCiABKAkSFAoMcHJvamVjdF9uYW1lGAsgASgJEhQKDHByb2plY3RfcGF0aBgMIAEoCRIaCg1wcm9wb3NhbF9uYW1lGA0gASgJSAKIAQESPwoPb3Blbl9zcGVjX2ZpbGVzGA4gASgLMiYuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSQwoOcXVldWVfbWVzc2FnZXMYECADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SHgoRd29ya2luZ19kaXJlY3RvcnkYESABKAlIA4gBARIVCghtZXRhZGF0YRgSIAEoCUgEiAEBEh8KEmNoYXRfZXhlY3V0b3JfdHlwZRgTIAEoCUgFiAEBEjoKCWNoYXRfaGVybxgUIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2hhdEhlcm9TdW1tYXJ5RHRvElkKEnN0YWdlX2V4ZWN1dG9yX21hcBgVIAMoCzI9LmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJkChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyQi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5TdGFnZUhlcm9TZWxlY3Rpb25NYXBFbnRyeRIgChNydW50aW1lX21vZGVsX2xhYmVsGBcgASgJSAaIAQESOQoVcHJvY2Vzc2luZ19zdGFydGVkX2F0GBggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJCCg1zZXNzaW9uX3VzYWdlGBkgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhwKD3ByZXZpb3VzX3N0YXR1cxgaIAEoCUgHiAEBEkIKDW5vdGlmaWNhdGlvbnMYGyADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8SRwoSc2NoZWR1bGVkX21lc3NhZ2VzGBwgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvElAKDXVzZXJfbWV0YWRhdGEYHSADKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5Vc2VyTWV0YWRhdGFFbnRyeRpiChVTdGFnZUV4ZWN1dG9yTWFwRW50cnkSCwoDa2V5GAEgASgJEjgKBXZhbHVlGAIgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaaAoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjkKBXZhbHVlGAIgASgLMiouaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUhlcm9TZWxlY3Rpb25EdG86AjgBGjMKEVVzZXJNZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMi+QEKGENyZWF0ZUNoYXRTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhgKEGlzX2RlZmF1bHRfdGl0bGUYAyABKAgSFAoHaGVyb19pZBgEIAEoCUgAiAEBEk0KCG1ldGFkYXRhGAUgAygLMjsuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVDaGF0U2Vzc2lvblJlcXVlc3QuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCgoIX2hlcm9faWQivgIKEFBhdGhSZWZlcmVuY2VEdG8SCgoCaWQYASABKAkSDgoGc291cmNlGAIgASgJEhUKDWRpc3BsYXlfdmFsdWUYAyABKAkSFQoNcGh5c2ljYWxfcGF0aBgEIAEoCRINCgVzdGFydBgFIAEoBRILCgNlbmQYBiABKAUSFgoJZW50aXR5X2lkGAcgASgJSACIAQESFwoKcHJvamVjdF9pZBgIIAEoCUgBiAEBEkUKCG1ldGFkYXRhGAkgAygLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9lbnRpdHlfaWRCDQoLX3Byb2plY3RfaWQi+wEKGVNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIQCghpbWFnZV9pZBgCIAEoCRIWCg5oYWdpX2ltYWdlX3VybBgDIAEoCRIYCgtwcmV2aWV3X3VybBgEIAEoCUgAiAEBEhYKCWZpbGVfbmFtZRgFIAEoCUgBiAEBEhkKDGNvbnRlbnRfdHlwZRgGIAEoCUgCiAEBEhYKCWZpbGVfc2l6ZRgHIAEoA0gDiAEBQg4KDF9wcmV2aWV3X3VybEIMCgpfZmlsZV9uYW1lQg8KDV9jb250ZW50X3R5cGVCDAoKX2ZpbGVfc2l6ZSJ+ChlUYXJnZXRQcm9qZWN0UmVmZXJlbmNlRHRvEhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhgKC2FjY2Vzc190eXBlGAQgASgJSACIAQFCDgoMX2FjY2Vzc190eXBlIocBChNUYXJnZXRSZXBvc2l0b3J5RHRvEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIZCgxkaXNwbGF5X25hbWUYAyABKAlIAIgBARIYCgthY2Nlc3NfdHlwZRgEIAEoCUgBiAEBQg8KDV9kaXNwbGF5X25hbWVCDgoMX2FjY2Vzc190eXBlIj0KGFRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxIMCgRtb2RlGAEgASgJEhMKC2FjY2Vzc190eXBlGAIgASgJIpEGChRDcmVhdGVTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRIcCg9jaGllZl9jb21wbGFpbnQYAiABKAlIAIgBARIlChhvcmlnaW5hbF9jaGllZl9jb21wbGFpbnQYAyABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAQgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhEKBHR5cGUYBSABKAlIAogBARISCgpwcm9qZWN0X2lkGAYgASgJEkUKE3RhcmdldF9yZXBvc2l0b3JpZXMYByADKAsyKC5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlEdG8STgoXdGFyZ2V0X3JlcG9zaXRvcnlfc2NvcGUYCCABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxJHCg90YXJnZXRfcHJvamVjdHMYCSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAogAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEhgKEGlzX2RlZmF1bHRfdGl0bGUYCyABKAgSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgMIAEoCUgDiAEBEkkKCG1ldGFkYXRhGA0gAygLMjcuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUISChBfY2hpZWZfY29tcGxhaW50QhsKGV9vcmlnaW5hbF9jaGllZl9jb21wbGFpbnRCBwoFX3R5cGVCHAoaX3Byb3Bvc2FsX2NvbnRlbnRfbGFuZ3VhZ2UikwEKFFVwZGF0ZVNlc3Npb25SZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESEwoGc3RhdHVzGAMgASgJSAGIAQESFQoIbWV0YWRhdGEYBCABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCQoHX3N0YXR1c0ILCglfbWV0YWRhdGEiUwoWU2Vzc2lvbkxpc3RSZXNwb25zZUR0bxI5CghzZXNzaW9ucxgBIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIisKGFNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJIjMKIFN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0Eg8KB2hlcm9faWQYASABKAki6wgKHENyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QSDQoFdGl0bGUYASABKAkSGAoQaXNfZGVmYXVsdF90aXRsZRgCIAEoCBISCgpwcm9qZWN0X2lkGAMgASgJEhYKCXByb21wdF9pZBgEIAEoCUgAiAEBEhQKB21lc3NhZ2UYBSABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAYgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhwKD3JlcG9zaXRvcnlfcGF0aBgHIAEoCUgCiAEBEhgKC3RhcmdldF90eXBlGAggASgJSAOIAQESFQoIdmF1bHRfaWQYCSABKAlIBIgBARIcCg9vdXRwdXRfdmF1bHRfaWQYCiABKAlIBYgBARIbChNyZWZlcmVuY2VfdmF1bHRfaWRzGAsgAygJEhoKEmVkaXRhYmxlX3ZhdWx0X2lkcxgMIAMoCRJHCg90YXJnZXRfcHJvamVjdHMYDSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SHwoScmVzZWFyY2hfZGlyZWN0aW9uGA4gASgJSAaIAQESGwoOcHJlc2V0X3Rhc2tfaWQYDyABKAlIB4gBARIfChJwcmVzZXRfdGFza19sb2NhbGUYECABKAlICIgBARIxChFwcmVzZXRfdGFza19pbnB1dBgRIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIXCg9yZXBvc2l0b3J5X3VybHMYEiADKAkSEwoLcHJvamVjdF9pZHMYEyADKAkSEQoJbmVlZF9wdXNoGBQgASgIEiQKF3B1bGxfcmViYXNlX2JlZm9yZV9wdXNoGBUgASgISAmIAQESHwoSdGFyZ2V0X2JyYW5jaF9tb2RlGBYgASgJSAqIAQESHwoSdGFyZ2V0X2JyYW5jaF9uYW1lGBcgASgJSAuIAQESFwoKc2NyaXB0X2tleRgYIAEoCUgMiAEBEhQKB2hlcm9faWQYGSABKAlIDYgBARIgChNoZXJvX3NlbGVjdGlvbl9tb2RlGBogASgJSA6IAQFCDAoKX3Byb21wdF9pZEIKCghfbWVzc2FnZUISChBfcmVwb3NpdG9yeV9wYXRoQg4KDF90YXJnZXRfdHlwZUILCglfdmF1bHRfaWRCEgoQX291dHB1dF92YXVsdF9pZEIVChNfcmVzZWFyY2hfZGlyZWN0aW9uQhEKD19wcmVzZXRfdGFza19pZEIVChNfcHJlc2V0X3Rhc2tfbG9jYWxlQhoKGF9wdWxsX3JlYmFzZV9iZWZvcmVfcHVzaEIVChNfdGFyZ2V0X2JyYW5jaF9tb2RlQhUKE190YXJnZXRfYnJhbmNoX25hbWVCDQoLX3NjcmlwdF9rZXlCCgoIX2hlcm9faWRCFgoUX2hlcm9fc2VsZWN0aW9uX21vZGUy6ggKD1Nlc3Npb25zU2VydmljZRJsCg9PcGVuQ2hhdFNlc3Npb24SKy5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QaLC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEmAKC09wZW5TZXNzaW9uEicuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU2Vzc2lvblJlcXVlc3QaKC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TZXNzaW9uUmVzcG9uc2USXQoKR2V0U2Vzc2lvbhImLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblJlcXVlc3QaJy5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25SZXNwb25zZRJgCgtTYXZlU2Vzc2lvbhInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2F2ZVNlc3Npb25SZXF1ZXN0GiguaGFnaWNvZGUuc2Vzc2lvbi52MS5TYXZlU2Vzc2lvblJlc3BvbnNlEmMKDExpc3RTZXNzaW9ucxIoLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVzcG9uc2USZgoNRGVsZXRlU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuRGVsZXRlU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkRlbGV0ZVNlc3Npb25SZXNwb25zZRJ1ChJBcmNoaXZlQ2hhdFNlc3Npb24SLi5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlc3BvbnNlEnUKElN3aXRjaFN0b3BwZWRBZ2VudBIuLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVzcG9uc2USewoUU3RhcnRIYWdpVGFza1Nlc3Npb24SMC5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBoxLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRIYWdpVGFza1Nlc3Npb25SZXNwb25zZRKNAQoaU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb24SNi5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0TGVnYWN5SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlNlc3Npb24uVjFiBnByb3RvMw",[Ue,Ne]),tb=v(de,1),nb=v(de,3),ob=v(de,5),rb=v(de,7),ab=v(de,9),ib=v(de,11),sb=v(de,13),lb=v(de,17),cb=v(de,30),db=v(de,36),ub=v(de,37),mb=v(de,41),hb=We(de,0),Me=oe("CitoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fbWVzc2FnaW5nLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIr0BChlHZXRTZXNzaW9uTWVzc2FnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEQoEcGFnZRgCIAEoBUgAiAEBEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgBiAEBEhoKDWhpc3Rvcnlfc2NvcGUYBCABKAlIAogBARISCgVvcmRlchgFIAEoCUgDiAEBQgcKBV9wYWdlQgwKCl9wYWdlX3NpemVCEAoOX2hpc3Rvcnlfc2NvcGVCCAoGX29yZGVyIlkKGkdldFNlc3Npb25NZXNzYWdlc1Jlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUxpc3RSZXNwb25zZUR0byIqChRDYW5jZWxTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlYKFUNhbmNlbFNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZUR0byI3CiFHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJeCiJHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1Jlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvY2Vzc2luZ1N0YXR1c0R0byJGChtDYW5jZWxQZW5kaW5nTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBSJcChxDYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VEdG8iUQodQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgCIAEoCSJgCh5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvImQKE1N0ZWVyU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI5CgRib2R5GAIgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uU3RlZXJSZXF1ZXN0RHRvIlQKFFN0ZWVyU2Vzc2lvblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8ihQEKGVN0ZWVyUXVldWVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBRI/CgRib2R5GAMgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZWRNZXNzYWdlU3RlZXJSZXF1ZXN0RHRvImAKGlN0ZWVyUXVldWVkTWVzc2FnZVJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnNlc3Npb24udjEuUXVldWVkTWVzc2FnZVN0ZWVyUmVzcG9uc2VEdG8iZgoZUG9zdFNlc3Npb25NZXNzYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjUKBGJvZHkYAiABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVxdWVzdCJZChpQb3N0U2Vzc2lvbk1lc3NhZ2VSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVzcG9uc2VEdG8iYAoqR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEwoGbG9jYWxlGAIgASgJSACIAQFCCQoHX2xvY2FsZSJ/CitHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlElAKBnJlc3VsdBgBIAEoCzJALmhhZ2ljb2RlLnNlc3Npb24udjEuQ29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXNwb25zZUR0byJxCh9TdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSOgoEYm9keRgCIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8iaAogU3VibWl0U2Vzc2lvbkFubm90YXRpb25zUmVzcG9uc2USRAoGcmVzdWx0GAEgASgLMjQuaGFnaWNvZGUuc2Vzc2lvbi52MS5Bbm5vdGF0aW9uU3VibWlzc2lvblJlc3BvbnNlRHRvIvoBChZNZXNzYWdlSGVyb1NuYXBzaG90RHRvEhQKB2hlcm9faWQYASABKAlIAIgBARIWCgloZXJvX25hbWUYAiABKAlIAYgBARIWCgloZXJvX2ljb24YAyABKAlIAogBARIaCg1leGVjdXRvcl90eXBlGAQgASgJSAOIAQESEwoGc291cmNlGAUgASgJSASIAQESFgoJc3RhZ2Vfa2V5GAYgASgJSAWIAQFCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uQhAKDl9leGVjdXRvcl90eXBlQgkKB19zb3VyY2VCDAoKX3N0YWdlX2tleSJSChxNZXNzYWdlVXNlclF1ZXN0aW9uQW5zd2VyRHRvEhAKCHF1ZXN0aW9uGAEgASgJEg4KBnZhbHVlcxgCIAMoCRIQCghyZWplY3RlZBgDIAEoCCJCChxNZXNzYWdlVXNlclF1ZXN0aW9uT3B0aW9uRHRvEg0KBWxhYmVsGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIsgBChpNZXNzYWdlVXNlclF1ZXN0aW9uSXRlbUR0bxIQCghxdWVzdGlvbhgBIAEoCRIOCgZoZWFkZXIYAiABKAkSFAoMbXVsdGlfc2VsZWN0GAMgASgIEkIKB29wdGlvbnMYBCADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25PcHRpb25EdG8SGwoTYWxsb3dfY3VzdG9tX2Fuc3dlchgFIAEoCBIRCglpc19zZWNyZXQYBiABKAgiWgocTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0bxIZChFtYXhfYW5zd2VyX2xlbmd0aBgBIAEoBRIfChdtYXhfdmFsdWVzX3Blcl9xdWVzdGlvbhgCIAEoBSLYAgoWTWVzc2FnZVVzZXJRdWVzdGlvbkR0bxITCgtxdWVzdGlvbl9pZBgBIAEoCRITCgZydW5faWQYAiABKAlIAIgBARINCgVzdGF0ZRgDIAEoCRJCCglxdWVzdGlvbnMYBCADKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25JdGVtRHRvEkIKB2Fuc3dlcnMYBSADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25BbnN3ZXJEdG8SLwoLYW5zd2VyZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKBmxpbWl0cxgHIAEoCzIxLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0b0IJCgdfcnVuX2lkIo4EChJNZXNzYWdlUmVzcG9uc2VEdG8SCgoCaWQYASABKAkSEgoKc2Vzc2lvbl9pZBgCIAEoCRIMCgR0eXBlGAMgASgJEgwKBG1vZGUYBCABKAkSLQoJdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1jcmVhdGlvbl90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCg5jb250ZW50X2Jsb2NrcxgHIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRISCgVtb2RlbBgIIAEoCUgAiAEBEhUKCHByb3ZpZGVyGAkgASgJSAGIAQESQgoNaGVyb19zbmFwc2hvdBgKIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUhlcm9TbmFwc2hvdER0bxJCCg11c2VyX3F1ZXN0aW9uGAsgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlVXNlclF1ZXN0aW9uRHRvEhgKC3N0ZWVyX3N0YXRlGAwgASgJSAKIAQESHwoScGFyZW50X3Rvb2xfdXNlX2lkGA0gASgJSAOIAQFCCAoGX21vZGVsQgsKCV9wcm92aWRlckIOCgxfc3RlZXJfc3RhdGVCFQoTX3BhcmVudF90b29sX3VzZV9pZCKyAQoWTWVzc2FnZUxpc3RSZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHBhZ2UYAiABKAUSEQoJcGFnZV9zaXplGAMgASgFEhMKC3RvdGFsX2NvdW50GAQgASgFEhMKC3RvdGFsX3BhZ2VzGAUgASgFEjkKCG1lc3NhZ2VzGAYgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlUmVzcG9uc2VEdG8ikAEKGENhbmNlbFNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIwCgxjYW5jZWxsZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBnJ1bl9pZBgEIAEoCUgAiAEBQgkKB19ydW5faWQiyAIKE1Byb2Nlc3NpbmdTdGF0dXNEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIVCg1pc19wcm9jZXNzaW5nGAIgASgIEhwKFHF1ZXVlZF9tZXNzYWdlX2NvdW50GAMgASgFEkMKDnF1ZXVlX21lc3NhZ2VzGAQgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEjkKFXByb2Nlc3Npbmdfc3RhcnRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRwoSc2NoZWR1bGVkX21lc3NhZ2VzGAYgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEh8KF3NjaGVkdWxlZF9tZXNzYWdlX2NvdW50GAcgASgFIj0KFENhbmNlbGxlZE1lc3NhZ2VJbmZvEgwKBG1vZGUYASABKAkSFwoPY29udGVudF9wcmV2aWV3GAIgASgJIpIBChlDYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgDIAEoCRIhChlyZW1haW5pbmdfc2NoZWR1bGVkX2NvdW50GAQgASgFEg8KB21lc3NhZ2UYBSABKAkiwwEKF0NhbmNlbFBlbmRpbmdNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBITCgtxdWV1ZV9pbmRleBgDIAEoBRIXCg9yZW1haW5pbmdfY291bnQYBCABKAUSDwoHbWVzc2FnZRgFIAEoCRJEChFjYW5jZWxsZWRfbWVzc2FnZRgGIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsbGVkTWVzc2FnZUluZm8iUgoXU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRIXCgptZXNzYWdlX2lkGAIgASgJSACIAQFCDQoLX21lc3NhZ2VfaWQiKQoWU2Vzc2lvblN0ZWVyUmVxdWVzdER0bxIPCgdjb250ZW50GAEgASgJIjAKHVF1ZXVlZE1lc3NhZ2VTdGVlclJlc3BvbnNlRHRvEg8KB291dGNvbWUYASABKAkiPAocUXVldWVkTWVzc2FnZVN0ZWVyUmVxdWVzdER0bxIcChRleGVjdXRpb25fbWVzc2FnZV9pZBgBIAEoCSKVAQoWUG9zdE1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJEiEKFHNjaGVkdWxlZF9tZXNzYWdlX2lkGAIgASgJSACIAQESLgoKZHVlX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFwoVX3NjaGVkdWxlZF9tZXNzYWdlX2lkIu0BChJQb3N0TWVzc2FnZVJlcXVlc3QSDwoHY29udGVudBgBIAEoCRIMCgRtb2RlGAIgASgJEkIKCmltYWdlX3JlZnMYAyADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAQgAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEjQKEHNjaGVkdWxlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIl4KK0NvbnZlcnRUb1Byb3Bvc2FsSGFnaVNraWxsUHJvbXB0UmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRITCgZwcm9tcHQYAiABKAlIAIgBAUIJCgdfcHJvbXB0ImAKH0Fubm90YXRpb25TdWJtaXNzaW9uUmVzcG9uc2VEdG8SDwoHbWVzc2FnZRgBIAEoCRIYChBhbm5vdGF0aW9uX2NvdW50GAIgASgFEhIKCmZpbGVfY291bnQYAyABKAUiygEKEkJsb2NrQW5ub3RhdGlvbkR0bxIZChFzdGFydF9saW5lX251bWJlchgBIAEoBRIXCg9lbmRfbGluZV9udW1iZXIYAiABKAUSGAoQb3JpZ2luYWxfY29udGVudBgDIAEoCRISCgpibG9ja190eXBlGAQgASgJEhcKD2Fubm90YXRpb25fdGV4dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgoKAmlkGAcgASgJIq8BChFGaWxlQW5ub3RhdGlvbkR0bxIRCglmaWxlX25hbWUYASABKAkSEQoJZmlsZV9wYXRoGAIgASgJEkIKEWJsb2NrX2Fubm90YXRpb25zGAMgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5CbG9ja0Fubm90YXRpb25EdG8SHAoPZmlsZV9hbm5vdGF0aW9uGAQgASgJSACIAQFCEgoQX2ZpbGVfYW5ub3RhdGlvbiLfAQoXQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRI1CgVmaWxlcxgCIAMoCzImLmhhZ2ljb2RlLnNlc3Npb24udjEuRmlsZUFubm90YXRpb25EdG8SGQoRdG90YWxfYW5ub3RhdGlvbnMYAyABKAUSMAoMc3VibWl0dGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaCg1nbG9iYWxfcHJvbXB0GAUgASgJSACIAQFCEAoOX2dsb2JhbF9wcm9tcHQykQoKF1Nlc3Npb25NZXNzYWdpbmdTZXJ2aWNlEnUKEkdldFNlc3Npb25NZXNzYWdlcxIuLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVzcG9uc2USZgoNQ2FuY2VsU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZRKNAQoaR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXMSNi5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25Qcm9jZXNzaW5nU3RhdHVzUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXNSZXNwb25zZRJ7ChRDYW5jZWxQZW5kaW5nTWVzc2FnZRIwLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEoEBChZDYW5jZWxTY2hlZHVsZWRNZXNzYWdlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlc3BvbnNlEmMKDFN0ZWVyU2Vzc2lvbhIoLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVzcG9uc2USdQoSU3RlZXJRdWV1ZWRNZXNzYWdlEi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXF1ZXN0Gi8uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXNwb25zZRJ1ChJQb3N0U2Vzc2lvbk1lc3NhZ2USLi5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlc3BvbnNlEqgBCiNHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdBI/LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0GkAuaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlEocBChhTdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnMSNC5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1JlcXVlc3QaNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1Jlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuU2Vzc2lvbi5WMWIGcHJvdG8z",[Ue,Ne,de]),bb=v(Me,1),gb=v(Me,11),pb=v(Me,15),Ab=v(Me,19),fb=v(Me,34),Zb=v(Me,38),Rb=v(Me,43),Eb=We(Me,0),Ie=oe("CipoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fcHJvcG9zYWwucHJvdG8SE2hhZ2ljb2RlLnNlc3Npb24udjEiOAoiTGlzdFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInIKI0xpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEksKBnJlc3VsdBgBIAEoCzI7LmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZXNMaXN0UmVzcG9uc2VEdG8ijQIKGVVubGlua2VkT3BlblNwZWNDaGFuZ2VEdG8SDAoEbmFtZRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEhwKD3Rhc2tzX2NvbXBsZXRlZBgEIAEoBUgAiAEBEhgKC3Rhc2tzX3RvdGFsGAUgASgFSAGIAQESGQoRaGFzX3Byb3Bvc2FsX2ZpbGUYBiABKAgSDQoFZmlsZXMYByADKAkSIgoVbm90X2ltcG9ydGFibGVfcmVhc29uGAggASgJSAKIAQFCEgoQX3Rhc2tzX2NvbXBsZXRlZEIOCgxfdGFza3NfdG90YWxCGAoWX25vdF9pbXBvcnRhYmxlX3JlYXNvbiJpCiZVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc0xpc3RSZXNwb25zZUR0bxI/CgdjaGFuZ2VzGAEgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5VbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRHRvIjkKI0NvdW50VW5saW5rZWRPcGVuU3BlY0NoYW5nZXNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiawokQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEkMKBnJlc3VsdBgBIAEoCzIzLmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZUNvdW50RHRvIi8KHlVubGlua2VkT3BlblNwZWNDaGFuZ2VDb3VudER0bxINCgVjb3VudBgBIAEoBSJiCiRHZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtjaGFuZ2VfbmFtZRgCIAEoCRIRCglmaWxlX3BhdGgYAyABKAkiawolR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5zZXNzaW9uLnYxLlVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvIkMKHVVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvEhEKCWZpbGVfcGF0aBgBIAEoCRIPCgdjb250ZW50GAIgASgJIkgKHEltcG9ydE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFuZ2VfbmFtZXMYAiADKAkiZAodSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5JbXBvcnRPcGVuU3BlY0NoYW5nZXNSZXN1bHREdG8iZAoeSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzdWx0RHRvEkIKB3Jlc3VsdHMYASADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8imAEKHEltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8SDAoEbmFtZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSOAoHc2Vzc2lvbhgDIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvEhQKB21lc3NhZ2UYBCABKAlIAIgBAUIKCghfbWVzc2FnZSJwCh5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI6CgRib2R5GAIgASgLMiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVByb3Bvc2FsUmVxdWVzdCJtCh9PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0byJsChdHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEj0KBGJvZHkYAiABKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXF1ZXN0RHRvIlkKGEdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byJoChVBcmNoaXZlU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI7CgRib2R5GAIgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8iUQoWQXJjaGl2ZVNlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byJqChZFeGVjdXRlUHJvcG9zYWxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSPAoEYm9keRgCIAEoCzIuLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdER0byJYChdFeGVjdXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIsChZDb21wbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiUgoXQ29tcGxldGVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iMwodVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJaCh5WYWxpZGF0ZVNlc3Npb25FeGVjdXRlUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjEKG1ZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlgKHFZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjMKHVZhbGlkYXRlU2Vzc2lvbkFyY2hpdmVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWgoeVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblJlc3VsdER0byJyCiFQcm9wb3NhbE9wdGltaXphdGlvbkRpYWdub3N0aWNEdG8SDAoEY29kZRgBIAEoCRIQCghzZXZlcml0eRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhIKBWZpZWxkGAQgASgJSACIAQFCCAoGX2ZpZWxkIo4BCi1Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SEAoIaXNfdmFsaWQYASABKAgSSwoLZGlhZ25vc3RpY3MYAiADKAsyNi5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uRGlhZ25vc3RpY0R0byLcAwonUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvEhcKCnNjcmlwdF9rZXkYASABKAlIAIgBARIdChBzZWxlY3RlZF9oZXJvX2lkGAIgASgJSAGIAQESHAoPY2FwdGFpbl9oZXJvX2lkGAMgASgJSAKIAQESFgoJcm9zdGVyX2lkGAQgASgJSAOIAQESawoQZXh0ZW5zaW9uX2ZpZWxkcxgFIAMoCzJRLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvLkV4dGVuc2lvbkZpZWxkc0VudHJ5EhYKCXN0YWdlX2tleRgGIAEoCUgEiAEBEh0KEHNlbGVjdGlvbl9zb3VyY2UYByABKAlIBYgBARo2ChRFeHRlbnNpb25GaWVsZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19zY3JpcHRfa2V5QhMKEV9zZWxlY3RlZF9oZXJvX2lkQhIKEF9jYXB0YWluX2hlcm9faWRCDAoKX3Jvc3Rlcl9pZEIMCgpfc3RhZ2Vfa2V5QhMKEV9zZWxlY3Rpb25fc291cmNlIr4DCiNQcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVJlc3VsdER0bxIcCg9vcHRpbWl6ZWRfdGl0bGUYASABKAlIAIgBARIoChtvcHRpbWl6ZWRfcHJvcG9zYWxfbWFya2Rvd24YAiABKAlIAYgBARIfChdvcHRpbWl6ZWRfcHJvcG9zYWxfbmFtZRgDIAEoCRIdChVvcHRpbWl6ZWRfZGVzY3JpcHRpb24YBCABKAkSVwoRc2NlbmFyaW9fc2V0dGluZ3MYBSABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0bxJWCgp2YWxpZGF0aW9uGAYgASgLMkIuaGFnaWNvZGUuc2Vzc2lvbi52MS5Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SGQoMcmF3X3Jlc3BvbnNlGAcgASgJSAKIAQFCEgoQX29wdGltaXplZF90aXRsZUIeChxfb3B0aW1pemVkX3Byb3Bvc2FsX21hcmtkb3duQg8KDV9yYXdfcmVzcG9uc2Ui0ggKJFByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIbChNyZXF1ZXN0X2ZpbmdlcnByaW50GAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgDIAEoCRIVCg1hcHBsaWVkX3RpdGxlGAQgASgJEh0KFWFwcGxpZWRfcHJvcG9zYWxfbmFtZRgFIAEoCRIgChhwcm9wb3NhbF9kcmFmdF9hdmFpbGFibGUYBiABKAgSIAoYc2NlbmFyaW9fc2V0dGluZ3Nfc3RhdHVzGAcgASgJEhoKEmFwcGxpZWRfdGl0bGVfbW9kZRgIIAEoCRIQCghpc192YWxpZBgJIAEoCBJLCgtkaWFnbm9zdGljcxgKIAMoCzI2LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25EaWFnbm9zdGljRHRvEiYKGW9wdGltaXplZF90aXRsZV9jYW5kaWRhdGUYCyABKAlIAIgBARIjChZwcm9wb3NhbF9kcmFmdF9wcmV2aWV3GAwgASgJSAGIAQESGgoNYXJ0aWZhY3RfcGF0aBgNIAEoCUgCiAEBEhsKDmNvcnJlbGF0aW9uX2lkGA4gASgJSAOIAQESHQoQcmVzb2x2ZWRfaGVyb19pZBgPIAEoCUgEiAEBEh8KEnJlc29sdmVkX2hlcm9fbmFtZRgQIAEoCUgFiAEBEh8KEnJlc29sdmVkX2hlcm9faWNvbhgRIAEoCUgGiAEBEigKG3Jlc29sdmVkX2hlcm9fZXhlY3V0b3JfdHlwZRgSIAEoCUgHiAEBEiIKFWhlcm9fc2VsZWN0aW9uX3NvdXJjZRgTIAEoCUgIiAEBEiMKFmhlcm9fcm91dGluZ19zdGFnZV9rZXkYFCABKAlICYgBARIkChdoZXJvX3JvdXRpbmdfc2NyaXB0X2tleRgVIAEoCUgKiAEBEiQKF29wdGltaXphdGlvbl9jZXNzaW9uX2lkGBYgASgJSAuIAQFCHAoaX29wdGltaXplZF90aXRsZV9jYW5kaWRhdGVCGQoXX3Byb3Bvc2FsX2RyYWZ0X3ByZXZpZXdCEAoOX2FydGlmYWN0X3BhdGhCEQoPX2NvcnJlbGF0aW9uX2lkQhMKEV9yZXNvbHZlZF9oZXJvX2lkQhUKE19yZXNvbHZlZF9oZXJvX25hbWVCFQoTX3Jlc29sdmVkX2hlcm9faWNvbkIeChxfcmVzb2x2ZWRfaGVyb19leGVjdXRvcl90eXBlQhgKFl9oZXJvX3NlbGVjdGlvbl9zb3VyY2VCGQoXX2hlcm9fcm91dGluZ19zdGFnZV9rZXlCGgoYX2hlcm9fcm91dGluZ19zY3JpcHRfa2V5QhoKGF9vcHRpbWl6YXRpb25fY2Vzc2lvbl9pZCLVAQolUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0bxJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlUmVzdWx0RHRvEkoKB3N1bW1hcnkYAiABKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgDIAEoCSKJAwoXT3B0aW1pemVQcm9wb3NhbFJlcXVlc3QSEwoLZGVzY3JpcHRpb24YASABKAkSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgCIAEoCUgAiAEBEiMKFm9wdGltaXphdGlvbl9kaXJlY3Rpb24YAyABKAlIAYgBARISCgV0aXRsZRgEIAEoCUgCiAEBEhgKEGlzX2RlZmF1bHRfdGl0bGUYBSABKAgSJQoYb3JpZ2luYWxfY2hpZWZfY29tcGxhaW50GAYgASgJSAOIAQESVwoRc2NlbmFyaW9fc2V0dGluZ3MYByABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0b0IcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIZChdfb3B0aW1pemF0aW9uX2RpcmVjdGlvbkIICgZfdGl0bGVCGwoZX29yaWdpbmFsX2NoaWVmX2NvbXBsYWludCJFChpQbGFubmluZ0RpcmVjdGlvbk9wdGlvbkR0bxIPCgJpZBgBIAEoCUgAiAEBEg8KB2VuYWJsZWQYAiABKAhCBQoDX2lkIowCChpHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdER0bxIgChNlbmFibGVfZXhwbG9yZV9tb2RlGAEgASgISACIAQESTAoTcGxhbm5pbmdfZGlyZWN0aW9ucxgCIAMoCzIvLmhhZ2ljb2RlLnNlc3Npb24udjEuUGxhbm5pbmdEaXJlY3Rpb25PcHRpb25EdG8SJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgDIAEoCUgBiAEBEhQKB2hlcm9faWQYBCABKAlIAogBAUIWChRfZW5hYmxlX2V4cGxvcmVfbW9kZUIcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIKCghfaGVyb19pZCI8ChhBcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIj0KGUV4ZWN1dGVQcm9wb3NhbFJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIlcKC0NvbmZsaWN0RHRvEgwKBHR5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhIKCnJlc29sdXRpb24YBCABKAkiawoSVmFsaWRhdGlvbklzc3VlRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIQCghzZXZlcml0eRgDIAEoCRIWCgllbnRpdHlfaWQYBCABKAlIAIgBAUIMCgpfZW50aXR5X2lkIoUBChRWYWxpZGF0aW9uU3VtbWFyeUR0bxIVCg1wcm9qZWN0X2NvdW50GAEgASgFEhUKDXNlc3Npb25fY291bnQYAiABKAUSHwoXZHVwbGljYXRlX3Byb2plY3RfY291bnQYAyABKAUSHgoWb3JwaGFuZWRfc2Vzc2lvbl9jb3VudBgEIAEoBSKMAgoTVmFsaWRhdGlvblJlc3VsdER0bxIQCghpc192YWxpZBgBIAEoCBI5Cgh3YXJuaW5ncxgCIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjcKBmVycm9ycxgDIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjMKCWNvbmZsaWN0cxgEIAMoCzIgLmhhZ2ljb2RlLnNlc3Npb24udjEuQ29uZmxpY3REdG8SOgoHc3VtbWFyeRgFIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblN1bW1hcnlEdG8yngwKFlNlc3Npb25Qcm9wb3NhbFNlcnZpY2UShAEKF09wdGltaXplU2Vzc2lvblByb3Bvc2FsEjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QaNC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wdGltaXplU2Vzc2lvblByb3Bvc2FsUmVzcG9uc2USbwoQR2VuZXJhdGVQcm9wb3NhbBIsLmhhZ2ljb2RlLnNlc3Npb24udjEuR2VuZXJhdGVQcm9wb3NhbFJlcXVlc3QaLS5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRJpCg5BcmNoaXZlU2Vzc2lvbhIqLmhhZ2ljb2RlLnNlc3Npb24udjEuQXJjaGl2ZVNlc3Npb25SZXF1ZXN0GisuaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlc3BvbnNlEmwKD0V4ZWN1dGVQcm9wb3NhbBIrLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdBosLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVzcG9uc2USbAoPQ29tcGxldGVTZXNzaW9uEisuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXF1ZXN0GiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXNwb25zZRKBAQoWVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZRIyLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QaMy5oYWdpY29kZS5zZXNzaW9uLnYxLlZhbGlkYXRlU2Vzc2lvbkV4ZWN1dGVSZXNwb25zZRJ7ChRWYWxpZGF0ZVNlc3Npb25TdGFydBIwLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uU3RhcnRSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25TdGFydFJlc3BvbnNlEoEBChZWYWxpZGF0ZVNlc3Npb25BcmNoaXZlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25BcmNoaXZlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEpABChtMaXN0VW5saW5rZWRPcGVuU3BlY0NoYW5nZXMSNy5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QaOC5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpMBChxDb3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzEjguaGFnaWNvZGUuc2Vzc2lvbi52MS5Db3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBo5LmhhZ2ljb2RlLnNlc3Npb24udjEuQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpYBCh1HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZRI5LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXF1ZXN0GjouaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlc3BvbnNlEn4KFUltcG9ydE9wZW5TcGVjQ2hhbmdlcxIxLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVxdWVzdBoyLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2VCKaoCJlBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5TZXNzaW9uLlYxYgZwcm90bzM",[Ne,de]),Sb=v(Ie,15),Vb=v(Ie,17),Gb=v(Ie,19),Nb=v(Ie,21),vb=v(Ie,23),Wb=v(Ie,36),yb=v(Ie,38),Ib=v(Ie,39),Xb=v(Ie,40),Yb=We(Ie,0),Cb=oe("CixoYWdpY29kZS9jb29yZGluYXRpb24vdjEvcmVzb3VyY2VfbG9jay5wcm90bxIYaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxIuMFCgpMb2NrU3RhdHVzEg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEhAKCHBvc2l0aW9uGAQgASgFEg0KBWVwb2NoGAUgASgDEjQKEGxlYXNlX2V4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKE21heF9ob2xkX2V4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2hvbGRlcl9vd25lcl9pZBgIIAEoCRIUCgxob2xkZXJfbGFiZWwYCSABKAkSFAoMcXVldWVfbGVuZ3RoGAogASgFEiIKGnN1Z2dlc3RlZF9wb2xsX2ludGVydmFsX21zGAsgASgFEicKH3N1Z2dlc3RlZF9oZWFydGJlYXRfaW50ZXJ2YWxfbXMYDCABKAUSLwoLc2VydmVyX3RpbWUYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiEKGXJlcXVpc2l0aW9uZWRfYnlfb3duZXJfaWQYDiABKAkSGgoScmVxdWlzaXRpb25fcmVhc29uGA8gASgJEjQKEHJlcXVpc2l0aW9uZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKFGNoZWNrX2luX2VhcmxpZXN0X2F0GBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChJjaGVja19pbl9sYXRlc3RfYXQYEiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKEHR1cm5fZWFybGllc3RfYXQYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDnR1cm5fbGF0ZXN0X2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKrAQoSQWNxdWlyZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGgoNbGVhc2Vfc2Vjb25kcxgDIAEoBUgAiAEBEhIKBWxhYmVsGAQgASgJSAGIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgCiAEBQhAKDl9sZWFzZV9zZWNvbmRzQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJLChNBY3F1aXJlTG9ja1Jlc3BvbnNlEjQKBnJlc3VsdBgBIAEoCzIkLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5Mb2NrU3RhdHVzImUKFEdldExvY2tTdGF0dXNSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGQoMd2FpdF9zZWNvbmRzGAMgASgFSACIAQFCDwoNX3dhaXRfc2Vjb25kcyJNChVHZXRMb2NrU3RhdHVzUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMigQEKEFJlbmV3TG9ja1JlcXVlc3QSDwoHbG9ja19pZBgBIAEoCRIQCghvd25lcl9pZBgCIAEoCRIaCg1sZWFzZV9zZWNvbmRzGAMgASgFSACIAQESEgoFZXBvY2gYBCABKANIAYgBAUIQCg5fbGVhc2Vfc2Vjb25kc0IICgZfZXBvY2giSQoRUmVuZXdMb2NrUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMiVQoSUmVsZWFzZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSEgoFZXBvY2gYAyABKANIAIgBAUIICgZfZXBvY2giWQoTUmVsZWFzZUxvY2tSZXNwb25zZRIQCghyZWxlYXNlZBgBIAEoCBIXCg9wcmV2aW91c19zdGF0dXMYAiABKAkSFwoPaG9sZGVyX293bmVyX2lkGAMgASgJIpEBChZSZXF1aXNpdGlvbkxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGcmVhc29uGAMgASgJEhIKBWxhYmVsGAQgASgJSACIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgBiAEBQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJPChdSZXF1aXNpdGlvbkxvY2tSZXNwb25zZRI0CgZyZXN1bHQYASABKAsyJC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N0YXR1cyIyChBMaXN0TG9ja3NSZXF1ZXN0EhMKBnByZWZpeBgBIAEoCUgAiAEBQgkKB19wcmVmaXgiSQoRTGlzdExvY2tzUmVzcG9uc2USNAoFbG9ja3MYASADKAsyJS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N1bW1hcnki3QEKC0xvY2tTdW1tYXJ5Eg8KB2xvY2tfaWQYASABKAkSFwoPaG9sZGVyX293bmVyX2lkGAIgASgJEhQKDGhvbGRlcl9sYWJlbBgDIAEoCRINCgVlcG9jaBgEIAEoAxI0ChBsZWFzZV9leHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9ob2xkX3N0YXJ0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHF1ZXVlX2xlbmd0aBgHIAEoBTKjBQoTUmVzb3VyY2VMb2NrU2VydmljZRJqCgtBY3F1aXJlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5BY3F1aXJlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuQWNxdWlyZUxvY2tSZXNwb25zZRJwCg1HZXRMb2NrU3RhdHVzEi4uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXF1ZXN0Gi8uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXNwb25zZRJkCglSZW5ld0xvY2sSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVuZXdMb2NrUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZW5ld0xvY2tSZXNwb25zZRJqCgtSZWxlYXNlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZWxlYXNlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVsZWFzZUxvY2tSZXNwb25zZRJ2Cg9SZXF1aXNpdGlvbkxvY2sSMC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVxdWlzaXRpb25Mb2NrUmVxdWVzdBoxLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZXF1aXNpdGlvbkxvY2tSZXNwb25zZRJkCglMaXN0TG9ja3MSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTGlzdExvY2tzUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5MaXN0TG9ja3NSZXNwb25zZUIuqgIrUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvb3JkaW5hdGlvbi5WMWIGcHJvdG8z",[Ne]),Bb=We(Cb,0),Hn=new Set([b.INT64,b.UINT64,b.SINT64,b.FIXED64,b.SFIXED64]),Us=e=>e.typeName.startsWith("google.protobuf.");function Qn(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)||Us(e))return t;const n=t;for(const o of e.fields){const r=n[o.jsonName];r!==void 0&&(n[o.jsonName]=wb(o,r))}return n}function wb(e,t){switch(e.fieldKind){case"scalar":return Hn.has(e.scalar)?Qn(t):t;case"message":return un(e.message,t);case"list":return Array.isArray(t)?e.listKind==="scalar"?Hn.has(e.scalar)?t.map(Qn):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]=Qn(n[o]):e.mapKind==="message"&&(n[o]=un(e.message,n[o]));return n}default:return t}}function Fb(e,t){return un(e,ls(e,t,{alwaysEmitImplicit:!0}))}function kb(e,t){return Fb(e,t).result}function mn(e,t,n=0){if(t===null||typeof t!="object"||Array.isArray(t)||Us(e)||n>8)return t;const o=t;for(const r of e.fields){const a=o[r.jsonName];if(!(a===null||typeof a!="object")){if(r.fieldKind==="message")mn(r.message,a,n+1);else if(r.fieldKind==="list"&&r.listKind==="message"&&Array.isArray(a))a.forEach(i=>mn(r.message,i,n+1));else if(r.fieldKind==="map"&&!Array.isArray(a)){const i=a;for(const s of Object.keys(i)){const l=i[s];r.mapKind==="scalar"&&r.scalar===b.STRING?l===null?delete i[s]:(typeof l=="number"||typeof l=="boolean")&&(i[s]=String(l)):r.mapKind==="message"&&mn(r.message,l,n+1)}}}}return t}function D(e,t){return bs(e,t===void 0?t:mn(e,JSON.parse(JSON.stringify(t))),{ignoreUnknownFields:!0})}function Fa(e,t){const n=Ws(e);if(n)throw t.forEach((o,r)=>{n.metadata.append(r,o)}),n;if(!t.has("Grpc-Status")&&!e.has("Grpc-Status"))throw new B("protocol error: missing status",S.Internal)}function Ub(e,t,n,o){var r,a;const i=new Headers(n??{});i.set(Vm,e?Xm:Ym),i.set(Im,"1");const s=(a=(r=i.get("User-Agent"))!==null&&r!==void 0?r:i.get("X-User-Agent"))!==null&&a!==void 0?a:"connect-es/2.2.0";return i.set(ym,s),o&&i.set(Wm,s),t!==void 0&&i.set(Nm,`${t}m`),i}function ka(e,t,n,o,r,a){const i=Ub(e,t,n,a);return r!=null&&i.set(Ns,r.name),o.length>0&&i.set(Gm,o.map(s=>s.name).join(",")),i}function Jb(e){switch(e){case 400:return S.Internal;case 401:return S.Unauthenticated;case 403:return S.PermissionDenied;case 404:return S.Unimplemented;case 429:return S.Unavailable;case 502:return S.Unavailable;case 503:return S.Unavailable;case 504:return S.Unavailable;default:return S.Unknown}}function xb(e,t){var n;if(e>=200&&e<300)return{foundStatus:t.has(vs),headerError:Ws(t)};throw new B(decodeURIComponent((n=t.get("Grpc-Message"))!==null&&n!==void 0?n:`HTTP ${e}`),Jb(e),t)}function Ua(e,t,n){const{foundStatus:o,headerError:r}=xb(t,n);let a;const i=n.get(Ns);if(i!==null&&i.toLowerCase()!=="identity"&&(a=e.find(s=>s.name===i),!a))throw new B(`unsupported response encoding "${i}"`,S.Internal,n);return{foundStatus:o,compression:a,headerError:r}}var Ja=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(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},ze=function(e){return this instanceof ze?(this.v=e,this):new ze(e)},Kb=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(f){return function(E){return Promise.resolve(E).then(f,h)}}function s(f,E){o[f]&&(r[f]=function(V){return new Promise(function(X,J){a.push([f,V,X,J])>1||l(f,V)})},E&&(r[f]=E(r[f])))}function l(f,E){try{c(o[f](E))}catch(V){A(a[0][3],V)}}function c(f){f.value instanceof ze?Promise.resolve(f.value.v).then(u,h):A(a[0][2],f)}function u(f){l("next",f)}function h(f){l("throw",f)}function A(f,E){f(E),a.shift(),a.length&&l(a[0][0],a[0][1])}};function zb(e){return{async unary(t,n,o,r,a,i){const s=Ia(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,await km({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!1,service:t.parent,method:t,requestMethod:"POST",url:ya(e.baseUrl,t),header:ka(e.useBinaryFormat,o,r,e.acceptCompression,e.sendCompression,!0),contextValues:i??va(),message:a},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:dn(Ss([l.message]),Ra(s.getI(e.useBinaryFormat)),Sa(e.sendCompression,e.compressMinBytes),Ga(),{propagateDownStreamError:!0})}),{compression:u,headerError:h}=Ua(e.acceptCompression,c.status,c.header),{trailer:A,message:f}=await dm(c.body,Na(e.readMaxBytes),Va(u??null,e.readMaxBytes),Ea(s.getO(e.useBinaryFormat),128,Wa()),async E=>{var V,X,J,d;let m,p;try{for(var g=!0,Z=Ja(E),G;G=await Z.next(),V=G.done,!V;g=!0){d=G.value,g=!1;const C=d;if(C.end){if(p!==void 0)throw new B("protocol error: received extra trailer",S.Unimplemented);p=C.value}else{if(m!==void 0)throw new B("protocol error: received extra output message for unary method",S.Unimplemented);m=C.value}}}catch(C){X={error:C}}finally{try{!g&&!V&&(J=Z.return)&&await J.call(Z)}finally{if(X)throw X.error}}return{trailer:p,message:m}},{propagateDownStreamError:!1});if(A===void 0)throw h??new B("protocol error: missing trailer",c.header.has("Grpc-Status")?S.Unimplemented:S.Unknown);if(Fa(A,c.header),f===void 0)throw new B("protocol error: missing output message for unary method",A.has("Grpc-Status")?S.Unimplemented:S.Unknown);return{stream:!1,service:t.parent,method:t,header:c.header,message:f,trailer:A}}})},async stream(t,n,o,r,a,i){const s=Ia(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,Um({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!0,service:t.parent,method:t,requestMethod:"POST",url:ya(e.baseUrl,t),header:ka(e.useBinaryFormat,o,r,e.acceptCompression,e.sendCompression,!0),contextValues:i??va(),message:a},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:dn(l.message,Ra(s.getI(e.useBinaryFormat)),Sa(e.sendCompression,e.compressMinBytes),Ga(),{propagateDownStreamError:!0})}),{compression:u,foundStatus:h,headerError:A}=Ua(e.acceptCompression,c.status,c.header);if(A)throw A;const f=Object.assign(Object.assign({},l),{header:c.header,trailer:new Headers,message:dn(c.body,Na(e.readMaxBytes),Va(u??null,e.readMaxBytes),Ea(s.getO(e.useBinaryFormat),128,Wa()),function(E){return Kb(this,arguments,function*(){var V,X,J,d;if(h){if((yield ze(E[Symbol.asyncIterator]().next())).done!==!0)throw new B("protocol error: extra data for trailers-only",S.InvalidArgument);return yield ze(void 0)}let m=!1;try{for(var p=!0,g=Ja(E),Z;Z=yield ze(g.next()),V=Z.done,!V;p=!0){d=Z.value,p=!1;const G=d;if(G.end){if(m)throw new B("protocol error: received extra trailer",S.InvalidArgument);m=!0,Fa(G.value,c.header),G.value.forEach((C,K)=>f.trailer.set(K,C));continue}if(m)throw new B("protocol error: received extra message after trailer",S.InvalidArgument);yield yield ze(G.value)}}catch(G){X={error:G}}finally{try{!p&&!V&&(J=g.return)&&(yield ze(J.call(g)))}finally{if(X)throw X.error}}if(!m)throw new B("protocol error: missing trailer",S.Internal)})},{propagateDownStreamError:!0})});return f}})}}}function Wn(e){let t=S.Internal;const n=tr(e).map(yn);n.some(r=>r.code=="ERR_STREAM_WRITE_AFTER_END")||n.some(r=>r.code=="ERR_STREAM_DESTROYED"||r.code=="ERR_HTTP2_INVALID_STREAM"||r.code=="ECONNRESET")?t=S.Aborted:n.some(r=>r.code=="ETIMEDOUT"||r.code=="ENOTFOUND"||r.code=="EAI_AGAIN"||r.code=="ECONNREFUSED")&&(t=S.Unavailable);const o=B.from(e,t);return o!==e&&(o.cause=e),o}function tr(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 Lb(e){switch(e){case P.PROTOCOL_ERROR:case P.INTERNAL_ERROR:case P.FLOW_CONTROL_ERROR:case P.SETTINGS_TIMEOUT:case P.FRAME_SIZE_ERROR:case P.COMPRESSION_ERROR:case P.CONNECT_ERROR:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Internal);case P.REFUSED_STREAM:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Unavailable);case P.CANCEL:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Canceled);case P.ENHANCE_YOUR_CALM:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.ResourceExhausted);case P.INADEQUATE_SECURITY:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.PermissionDenied);case P.HTTP_1_1_REQUIRED:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.PermissionDenied);default:break}}var P;(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"})(P||(P={}));var jb=(0,Zn.promisify)(gt.gzip),Tb=(0,Zn.promisify)(gt.gunzip),Hb=(0,Zn.promisify)(gt.brotliCompress),Qb=(0,Zn.promisify)(gt.brotliDecompress),Mb={name:"gzip",compress(e){return gn(jb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):gn(Js(Tb(e,{maxOutputLength:t}),t))}},Ob={name:"br",compress(e){return gn(Hb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):gn(Js(Qb(e,{maxOutputLength:t}),t))}};function gn(e){return e.then(t=>t.buffer instanceof ArrayBuffer?t:new Uint8Array(t))}function Js(e,t){return e.catch(n=>{var o;const r=yn(n);let a=S.Internal,i="decompression failed";switch(r.code){case"ERR_BUFFER_TOO_LARGE":a=S.ResourceExhausted,i=`message is larger than configured readMaxBytes ${t} after decompression`;break;case"Z_DATA_ERROR":case"ERR_PADDING_2":a=S.InvalidArgument;break;default:!((o=r.code)===null||o===void 0)&&o.startsWith("ERR__ERROR_FORMAT_")&&(a=S.InvalidArgument);break}return Promise.reject(new B(i,a,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 r of o)t.append(n,r);return t}function xs(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 r=t[o],a=t[o+1];Array.isArray(n[r])?n[r].push(a):typeof n[r]=="string"?n[r]=[n[r],a]:n[r]=a}else for(const[o,r]of Object.entries(t))Array.isArray(r)?n[o]=r.concat():r!==void 0&&(n[o]=r);if(e!==void 0)if(Array.isArray(e))for(const[o,r]of e)Mn(n,o,r);else if("forEach"in e)typeof e.forEach=="function"&&e.forEach((o,r)=>{Mn(n,r,o)});else for(const[o,r]of Object.entries(e))Mn(n,o,r);return n}function Mn(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 Ks=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,r,a,i;this.s=ho(),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:(r=t?.pingTimeoutMs)!==null&&r!==void 0?r:1e3*15,pingIdleConnection:(a=t?.pingIdleConnection)!==null&&a!==void 0?a:!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 r=await this.gotoReady();try{const a=r.conn.request(Object.assign(Object.assign({},n),{":method":e,":path":t}),o);return r.registerRequest(a),a}catch(a){if(r.conn.closed||r.conn.destroyed)continue;throw a}}}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 r=e??new B("connection aborted",S.Canceled);(n=(t=this.s).abort)===null||n===void 0||n.call(t,r);for(const a of this.shuttingDown)(o=a.abort)===null||o===void 0||o.call(a,r);this.setState(qt(r))}async gotoReady(){for(this.s.t=="ready"?this.s.isShuttingDown()||this.s.conn.closed||this.s.conn.destroyed?this.setState(On(this.authority,this.http2SessionOptions)):this.s.requiresVerify()&&await this.verify(this.s):(this.s.t=="closed"||this.s.t=="error")&&this.setState(On(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 r=this.shuttingDown.indexOf(o);r!==-1&&this.shuttingDown.splice(r,1)}}switch(e.t){case"connecting":e.conn.then(o=>{this.setState(_b(o,this.options))},o=>{this.setState(qt(o))});break;case"ready":e.onClose=()=>this.setState(ho()),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(On(this.authority,this.http2SessionOptions))},t=>{this.setState(qt(t))}).finally(()=>{this.verifying=void 0}),this.verifying)}};function ho(){return{t:"closed"}}function Db(e){return{t:"error",reason:e}}function qt(e){return e instanceof B&&B.from(e).code==S.Canceled?ho():Db(e)}function On(e,t){let n,o;const r=new Promise((c,u)=>{n=c,o=u}),a=Re.connect(e,t);a.on("connect",i),a.on("error",s);function i(){n?.(a),l()}function s(c){o?.(Wn(c)),l()}function l(){a.off("connect",i),a.off("error",s)}return{t:"connecting",conn:r,abort(c){a.destroyed||a.destroy(void 0,Re.constants.NGHTTP2_CANCEL),o?.(c)},onExitState(){l()}}}function _b(e,t){$b(e),e.unref();let n=Date.now(),o=0,r,a,i=!1,s=!1,l;V();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(),E()),g.once("response",()=>{n=Date.now(),u()}),g.once("close",()=>{o--,o==0&&(e.unref(),u(),V())})},responseByteRead(g){g.session===e&&(e.closed||e.destroyed||o<=0||(n=Date.now(),u()))},verify(){return e.ref(),new Promise(g=>{const Z=()=>{g(!1)};f(()=>{o==0&&e.unref(),e.off("error",Z),e.off("close",Z),g(!0)}),e.once("error",Z),e.once("close",Z)})},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)&&(r=Dn(A,t.pingIntervalMs))}function h(){clearTimeout(r),clearTimeout(a)}function A(){f(u)}function f(g){clearTimeout(a),a=Dn(()=>{e.destroy(new B("PING timed out",S.Unavailable),Re.constants.NGHTTP2_CANCEL)},t.pingTimeoutMs),e.ping((Z,G)=>{if(clearTimeout(a),Z===null){if(G>t.pingTimeoutMs){e.destroy(new B("PING timed out",S.Unavailable),Re.constants.NGHTTP2_CANCEL);return}n=Date.now(),g()}})}function E(){clearTimeout(l)}function V(){l=Dn(X,t.idleConnectionTimeoutMs)}function X(){e.close(),d()}function J(g,Z,G){if(g===Re.constants.NGHTTP2_NO_ERROR&&o===0){e.destroy(new B("received GOAWAY without any open streams",S.Canceled),Re.constants.NGHTTP2_NO_ERROR);return}i=!0;const C=Buffer.from("too_many_pings","ascii");G?.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 Z,G;if(p(),s){const C=new B(`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`,S.ResourceExhausted);(Z=c.onError)===null||Z===void 0||Z.call(c,C)}else(G=c.onError)===null||G===void 0||G.call(c,Wn(g))}function p(){h(),E(),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 Dn(e,t){if(!(t>2147483647))return setTimeout(e,t).unref()}function $b(e){if(e.connecting)throw new B("expected open session, but it is connecting",S.Internal);if(e.destroyed)throw new B("expected open session, but it is destroyed",S.Internal);if(e.closed)throw new B("expected open session, but it is closed",S.Internal)}function xa(e){var t;return e.httpVersion=="1.1"?Pb(e.nodeOptions):qb((t=e.sessionProvider)!==null&&t!==void 0?t:(n=>new Ks(n)))}function Pb(e){return async function(n){const o=Ls(n.signal);return new Promise((r,a)=>{o.onError(i=>{a(i)}),eg(o,n.url,Object.assign(Object.assign({},e),{headers:xs(n.header,e?.headers),method:n.method}),i=>{zs(n,i,o),i.on("response",s=>{var l;s.on("error",o.error),o.onError(u=>s.destroy(u));const c=new Headers;r({status:(l=s.statusCode)!==null&&l!==void 0?l:0,header:In(s.headers),body:tg(o,s,c),trailer:c})})})})}}function qb(e){return function(n){const o=Ls(n.signal),r=e(n.url);return new Promise((a,i)=>{o.onError(s=>{i(s)}),ng(o,r,n.url,n.method,xs(n.header),{},s=>{zs(n,s,o),s.on("response",l=>{var c;a({status:(c=l[":status"])!==null&&c!==void 0?c:0,header:In(l),body:rg(o,s,r),trailer:og(s)})})})})}}function eg(e,t,n,o){let r;new URL(t).protocol.startsWith("https")?r=to.request(t,n):r=eo.request(t,n),e.onError(a=>r.destroy(a)),r.flushHeaders(),r.on("error",e.error),r.on("socket",function(i){function s(){i.off("connect",s),o(r)}i.readyState==="open"?o(r):i.on("connect",s)})}function tg(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const r=await e.race(o.next());return r.done===!0&&(In(t.trailers).forEach((a,i)=>{n.set(i,a)}),e.close()),r},throw(r){throw e.error(r),r}}}}}function ng(e,t,n,o,r,a,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 B(l,S.Internal));return}t.request(o,s.pathname+s.search,r,{}).then(l=>{e.onError(c=>{if(l.closed)return;const u=c.code==S.Canceled?P.CANCEL:P.INTERNAL_ERROR;return new Promise(h=>l.close(u,h))}),l.on("error",function(u){l.writableEnded&&tr(u).map(yn).some(h=>h.code=="ERR_STREAM_WRITE_AFTER_END")||e.error(u)}),l.on("close",function(){const u=Lb(l.rstCode);u&&e.error(u)}),i(l)},l=>{e.error(l)})}function og(e){const t=new Headers;return e.on("trailers",n=>{In(n).forEach((o,r)=>{t.set(r,o)})}),t}function rg(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const r=await e.race(o.next());return r.done===!0&&e.close(),n?.notifyResponseByteRead(t),r},throw(r){throw e.error(r),r}}}}}async function zs(e,t,n){if(e.body===void 0){await new Promise(r=>t.end(r));return}const o=e.body[Symbol.asyncIterator]();return new Promise(r=>{a();function a(){n.isClosed()||o.next().then(i=>{if(i.done===!0){t.end(r);return}t.write(i.value,"binary",s=>{if(s==null){a();return}o.throw!==void 0&&o.throw(Wn(s)).catch(()=>{}),!(t.writableEnded&&tr(s).map(yn).some(l=>l.code=="ERR_STREAM_WRITE_AFTER_END"))&&n.error(s)})},i=>{n.error(i)})}})}function Ls(e){let t,n=!1,o,r=[];const a={error(l){if(!n){n=!0,o=l instanceof B?l:Wn(l),t?.(o);for(const c of r)c(o);i()}},close(){n||(n=!0,t&&t(new B("sentinel completed early",S.Internal)),i())},isClosed(){return n},onError(l){n?o!==void 0&&l(o):r.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 B("sentinel completed early",S.Internal)),u}};function i(){e&&e.removeEventListener("abort",s),r=[],t=void 0}function s(){a.error(Lt(this))}return e&&(e.addEventListener("abort",s),e.aborted&&a.error(Lt(e))),a}function ag(e){var t,n,o,r;let a;if(e.httpVersion=="2"){let i;e.sessionManager?i=e.sessionManager:i=new Ks(e.baseUrl,{pingIntervalMs:e.pingIntervalMs,pingIdleConnection:e.pingIdleConnection,pingTimeoutMs:e.pingTimeoutMs,idleConnectionTimeoutMs:e.idleConnectionTimeoutMs},e.nodeOptions),a=xa({httpVersion:"2",sessionProvider:()=>i})}else a=xa({httpVersion:"1.1",nodeOptions:e.nodeOptions});return Object.assign(Object.assign(Object.assign({},e),{httpClient:a,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:(r=e.acceptCompression)!==null&&r!==void 0?r:[Mb,Ob]}),nm(e.readMaxBytes,e.writeMaxBytes,e.compressMinBytes))}function ig(e){return zb(ag(e))}function sg(e){return`cli/${e??"unknown"}`}var lg=sg("0.1.0-dev.54.1.372ef38"),cg="/grpc";function dg(e){return`${e.replace(/\/+$/,"")}${cg}`}var ug=e=>async t=>{const{token:n,lang:o}=ks();return t.header.set("X-Hagi-Client",lg),n&&t.header.set("Authorization",`Bearer ${n}`),o&&t.header.set("Accept-Language",o),e(t)},en;function Xe(){const e=dg(ks().baseUrl);return(!en||en.baseUrl!==e)&&(en={baseUrl:e,transport:ig({baseUrl:e,httpVersion:"1.1",useBinaryFormat:!0,interceptors:[ug]})}),en.transport}function Le(e){return e?Qd(e).toISOString():null}function pn(e){return e.length>0?e:null}function Ka(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:Ka(e.checkInEarliestAt,e.checkInLatestAt),turnWindow:Ka(e.turnEarliestAt,e.turnLatestAt)}}function mg(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 hg(e){return e.locks.map(mg)}var Ze=()=>ve(bh,Xe()),lt=()=>ve(Vh,Xe()),De=()=>ve(Xh,Xe()),za=()=>ve(wh,Xe()),he=()=>ve($h,Xe()),La=()=>ve(eb,Xe()),xe=()=>ve(hb,Xe()),nn=()=>ve(Eb,Xe()),Bt=()=>ve(Yb,Xe()),ct=()=>ve(Bb,Xe());async function F(e,t){return kb(e,await t)}function bg(){return{listSessions:async e=>F(ab,xe().listSessions({type:e.type,activeOnly:e.activeOnly,includeArchived:e.includeArchived,projectId:e.projectId,projectIds:e.projectIds??[]})),getSession:async e=>F(ob,xe().getSession({sessionId:e})),getSessionMessages:async(e,t={})=>F(bb,nn().getSessionMessages({sessionId:e,page:t.page,pageSize:t.pageSize,historyScope:t.historyScope,order:t.order})),createProposalSession:async e=>F(nb,xe().openSession({body:D(db,e)})),createChatSession:async e=>F(tb,xe().openChatSession({body:D(cb,e)})),createHagiTaskSession:async e=>F(lb,xe().startHagiTaskSession({body:D(mb,e)})),listHagiTaskSchemas:async()=>F(Ch,za().listPresetTaskSchemas({})),getHagiTaskSchema:async e=>F(Bh,za().getPresetTaskSchema({presetTaskId:e})),updateSession:async(e,t)=>F(rb,xe().saveSession({sessionId:e,body:D(ub,t)})),deleteSession:async(e,t)=>F(ib,xe().deleteSession({sessionId:e,deleteFiles:t??!1})),sendMessage:async(e,t)=>F(pb,nn().postSessionMessage({sessionId:e,body:D(Zb,t)})),steerSession:async(e,t)=>F(gb,nn().steerSession({sessionId:e,body:D(fb,t)})),optimizeProposal:async(e,t)=>F(Sb,Bt().optimizeSessionProposal({sessionId:e,body:D(Wb,t)})),generateProposal:async(e,t)=>F(Vb,Bt().generateProposal({sessionId:e,body:D(yb,t)})),executeProposal:async(e,t)=>F(Nb,Bt().executeProposal({sessionId:e,body:D(Xb,t??{})})),archiveProposal:async(e,t)=>F(Gb,Bt().archiveSession({sessionId:e,body:D(Ib,t??{})})),completeProposal:async e=>F(vb,Bt().completeSession({sessionId:e})),submitAnnotations:async(e,t)=>F(Ab,nn().submitSessionAnnotations({sessionId:e,body:D(Rb,t)})),listProjects:async()=>F(Ph,La().getAggregatedData({forceRefresh:!1})),getTokenMonitorUsage:async()=>F(qh,La().getTokenMonitorUsage({})),createProject:async e=>F(eh,Ze().createProject({body:D(ch,e)})),updateProject:async(e,t)=>F(th,Ze().updateProject({id:e,body:D(dh,t)})),deleteProject:async e=>{await Ze().deleteProject({id:e})},getMonoSpecsManagement:async e=>F(nh,Ze().getMonoSpecsManagement({projectId:e})),saveMonoSpecsManagement:async(e,t)=>F(sh,Ze().updateMonoSpecsManagement({projectId:e,body:D(mh,t)})),initializeMonoSpecsManagement:async e=>F(ih,Ze().initializeMonoSpecs({projectId:e})),reloadMonoSpecsManagement:async e=>F(oh,Ze().reloadMonoSpecs({projectId:e})),validateMonoSpecs:async e=>F(lh,Ze().validateMonoSpecsConfig({body:D(hh,e)})),cloneMonoSpecsRepositories:async(e,t)=>F(rh,Ze().cloneMonoSpecsRepositories({projectId:e,body:D(uh,t)})),removeMonoSpecsRepositoryCheckout:async(e,t,n)=>F(ah,Ze().removeMonoSpecsRepositoryCheckout({projectId:e,path:t,force:n})),listPlans:async()=>F(Gh,De().listScheduledPlans({})),getPlan:async e=>F(Nh,De().getScheduledPlan({id:e})),createPlan:async e=>F(vh,De().createScheduledPlan({body:D(wa,e)})),updatePlan:async(e,t)=>F(Wh,De().updateScheduledPlan({id:e,body:D(wa,t)})),deletePlan:async e=>{await De().deleteScheduledPlan({id:e})},runPlan:async e=>F(yh,De().runScheduledPlan({id:e})),startPlan:async e=>F(Ih,De().startScheduledPlan({id:e})),listVaults:async()=>F(gh,lt().listVaults({})),createVault:async e=>F(ph,lt().createVault({body:D(Eh,e)})),updateVault:async(e,t)=>F(Ah,lt().updateVault({id:e,body:D(Sh,t)})),deleteVault:async(e,t)=>F(fh,lt().deleteVault({id:e,deleteLocalFiles:t??!1})),listVaultFiles:async(e,t)=>F(Zh,lt().getVaultFiles({id:e,path:t})),previewVaultFile:async(e,t)=>F(Rh,lt().getVaultFilePreview({id:e,path:t})),archiveChat:async e=>F(sb,xe().archiveChatSession({sessionId:e})),listLocalSkills:async()=>F(Fh,he().getLocalSkills({})),uninstallLocalSkill:async e=>F(kh,he().uninstallLocalSkill({body:D(Qh,e)})),setBuiltInSkillAvailability:async e=>F(Uh,he().setBuiltInSkillAvailability({body:D(Mh,e)})),searchSkillGallery:async e=>F(Jh,he().getSkillGallery({query:e})),getSkillGalleryDetail:async(e,t)=>F(xh,he().getSkillGalleryDetail({id:e,source:t})),getSkillGalleryAudit:async(e,t)=>F(Kh,he().getSkillGalleryAudit({id:e,source:t})),installGallerySkill:async e=>F(Hh,he().installSkill({body:D(_h,e)})),listTrustedSkillProviders:async()=>F(zh,he().getTrustedSkillProviders({})),upsertTrustedSkillProvider:async e=>F(Lh,he().upsertTrustedSkillProvider({body:D(Oh,e)})),deleteTrustedSkillProvider:async e=>F(jh,he().deleteTrustedSkillProvider({body:D(Dh,e)})),resetTrustedSkillProviders:async()=>F(Th,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=>hg(await ct().listLocks({prefix:e}))}}function js(e){return process.on("SIGINT",e),process.on("SIGTERM",e),()=>{process.off("SIGINT",e),process.off("SIGTERM",e)}}function Xn(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 bo(e){const t=e?.map(n=>k(n)).filter(Boolean);return t&&t.length>0?t:void 0}function Ts(e=process.env,t={stdout:n=>{process.stdout.write(n)},stderr:n=>{process.stderr.write(n)}}){return{api:bg(),env:e,io:t,sleep:Xn}}function gg(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:Pm({baseUrl:n.baseUrl,token:n.token,lang:n.lang},t.env)}}var pg=5e3,Ag=1e3,fg=1e4;function Hs(e){return Math.min(Ag*2**Math.max(0,e-1),fg)}async function go(e,t,n){if(!n){await e.sleep(t);return}if(n.aborted)return;let o=()=>{};const r=new Promise(a=>{o=a,n.addEventListener("abort",o,{once:!0})});try{await Promise.race([e.sleep(t),r])}finally{n.removeEventListener("abort",o)}}function Zg(e,t){return e.position!==t.position||e.holder?.ownerId!==t.holder?.ownerId}async function Rg(e){const{read:t,clock:n,signal:o}=e,r=n.now(),a=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()-r)/100)/10});for(;;){if(o?.aborted)return c("cancelled");const u=a-(n.now()-r);if(u<=0)return c("timeout");const h=Math.min(20,Math.max(1,Math.ceil(u/1e3))),A=n.now();let f;try{f=await t(h,o)}catch(X){if(o?.aborted)return c("cancelled");if(!Cs(X))throw X;l+=1,await go(n,Math.min(Hs(l),u),o);continue}l=0,s+=1;const E=i;if(i=f,f.status==="Holding")return c("holding");if(f.status!=="Queued")return c("lost");const V=Zg(E,f);if(V&&e.onChange?.(f),!V&&n.now()-A<1e3){const X=f.suggestedPollIntervalMs>0?f.suggestedPollIntervalMs:pg;await go(n,Math.min(X,Math.max(0,a-(n.now()-r))),o)}}}var Eg="HAGI_LOCK_OWNER",Sg="HAGI_SESSION_ID";function bt(e){const t=e?.trim();return t||void 0}function Vg(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 ${Eg} (or ${Sg}). 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 Gt(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:Vg(e.owner,t)}}function St(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 r=Number(o);if(r<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return r}function nr(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 Ys(t)??t}}function Qs(e){return{now:e.now??Date.now,sleep:e.sleep??Xn}}function Ng(e,t){Gt(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 r=o.wait?St(o.timeout,"--timeout",1)??900:void 0,a=St(o.leaseSeconds,"--lease-seconds",1),i=I(this,t),s=Nt(o,i.env),l=await vt(()=>i.api.acquireLock({...s,leaseSeconds:a,label:k(o.label)})),c=V=>i.io.stdout(i.outputJson?W(V):pt(V,"acquire"));if(r===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??js)(()=>u.abort());let A;try{A=await Rg({initial:l,read:(V,X)=>i.api.getLockStatus({...s,waitSeconds:V},X),timeoutSeconds:r,clock:Qs(t),signal:u.signal,onChange:V=>{i.outputJson||i.io.stdout(cc(V))}})}finally{h()}let f;(A.outcome==="timeout"||A.outcome==="cancelled")&&(f=await i.api.releaseLock(s).then(()=>!0,()=>!1));const E={outcome:A.outcome,polls:A.polls,elapsedSeconds:A.elapsedSeconds,released:f};switch(i.outputJson?i.io.stdout(W({...A.status,wait:E})):i.io.stdout(A.outcome==="holding"?pt(A.status,"status"):dc(A,f)),A.outcome){case"timeout":throw new Do(`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 vg=6e4,ja=[30*6e4,5*6e4],Ft="Stop using the resource now.";function Ta(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"}. ${Ft}`}case"Expired":return`Lock ${e} LOST: the lease expired or the hard cap passed. ${Ft}`;case"Queued":return`Lock ${e} LOST: this owner is queued at position ${t.position}, not holding. ${Ft}`;default:return`Lock ${e} LOST: the backend has no hold for this owner (${t.status}). ${Ft}`}}function Ha(e,t,n){if(!t)return null;const o=Date.parse(t),r=n?Date.parse(n):NaN;return Number.isNaN(r)?o:e.now()+(o-r)}async function Wg(e){const{lockId:t,ownerId:n,api:o,clock:r,signal:a}=e;let i=e.epoch,s=e.intervalSeconds===void 0?void 0:e.intervalSeconds*1e3,l=!1,c=0,u=r.now(),h=null,A=null;const f=new Set;let E=0,V=null,X=!1,J=!1;const d=(p,g,Z)=>e.emit({kind:p,message:g,errorCode:Z}),m=()=>{if(A===null)return;const p=ja.filter(Z=>!f.has(Z)&&r.now()>=A-Z);if(p.length===0)return;p.forEach(Z=>f.add(Z));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(a.aborted)return{outcome:"stopped",beats:c};let p=u;if(A!==null)for(const Z of ja)f.has(Z)||(p=Math.min(p,A-Z));if(p>r.now()&&(await go(r,p-r.now(),a),a.aborted))return{outcome:"stopped",beats:c};if(m(),r.now()<u)continue;let g;try{if(i===void 0){const Z=await o.getLockStatus({lockId:t,ownerId:n},a);if(Z.status!=="Holding"){const G=`Refusing to start: owner ${n} does not hold lock ${t}. ${Ta(t,Z)}`;return d("refused",G),{outcome:"refused",message:G,beats:c}}i=Z.epoch}g=await o.renewLock({lockId:t,ownerId:n,epoch:i,leaseSeconds:e.leaseSeconds},a)}catch(Z){if(a.aborted)return{outcome:"stopped",beats:c};const G=Ys(Z);if(G){const K=`Lock ${t} LOST: ${G.message}${/stop using/i.test(G.message)?"":` ${Ft}`}`;return d("lost",K,G.errorCode),{outcome:"lost",message:K,beats:c}}if(!Cs(Z))throw Z;E+=1;const C=r.now();V??=C,!X&&C-V>=vg&&(X=!0,d("outage",`Backend unreachable for ${Math.round((C-V)/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&&C>=h&&(J=!0,d("maybe-lost",`Lock ${t} may already be lost: the last known lease deadline passed during the outage.`)),u=r.now()+Hs(E);continue}if(g.status!=="Holding"){const Z=Ta(t,g);return d("lost",Z),{outcome:"lost",message:Z,beats:c}}c+=1,V!==null&&(X&&d("recovered",`Backend reachable again after ${Math.round((r.now()-V)/1e3)}s; heartbeat resumed.`),V=null,X=!1,J=!1),E=0,h=Ha(r,g.leaseExpiresAt,g.serverTime),A=Ha(r,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=r.now()+s}}function yg(e,t){Gt(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 r=nr(o.epoch),a=St(o.interval,"--interval",1),i=St(o.leaseSeconds,"--lease-seconds",1),s=I(this,t),l=Nt(o,s.env),c=new AbortController,u=(t.onInterrupt??js)(()=>c.abort());try{const h=await Wg({...l,epoch:r,intervalSeconds:a,leaseSeconds:i,verbose:o.verbose===!0,api:s.api,clock:Qs(t),signal:c.signal,emit:A=>{s.io.stdout(s.outputJson?`${JSON.stringify({event:A.kind,...l,message:A.message,errorCode:A.errorCode})}
|
|
59
|
-
`:`${
|
|
60
|
-
`)}});if(h.outcome!=="stopped")throw new et(h.message??`Lock ${l.lockId} is lost.`,{reported:!0})}finally{u()}})}function Ig(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 r=I(this,t),a=await
|
|
58
|
+
`}var Mm="--base-url",Om="HAGI_API_BASE_URL";function Ee(e){const t=e?.trim();return t||void 0}function Po(e=process.env){return(0,E.join)(Ee(e.XDG_CONFIG_HOME)??(0,E.join)((0,ec.homedir)(),".config"),"hagi","config.json")}function Fs(e){const t=Po(e);let n;try{n=(0,Y.readFileSync)(t,"utf8")}catch(r){if(r.code==="ENOENT")return;throw new N(`Cannot read CLI config file ${t}: ${r instanceof Error?r.message:String(r)}`)}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 Dm(e=process.env){const t=Fs(e)?.baseUrl;return typeof t=="string"?Ee(t):void 0}function _m(e=process.env){const t=Fs(e)?.steer;if(t===void 0||typeof t=="boolean")return t;throw new N(`CLI config file ${Po(e)} has a "steer" value that is not true or false.`)}function $m(e={},t=process.env){const n=Ee(e.baseUrl)??Ee(t.HAGI_API_BASE_URL)??Dm(t);if(!n)throw new N(`No backend base URL is configured. Set ${Mm} <url>, the ${Om} environment variable, or "baseUrl" in ${Po(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 Pm(e={},t=process.env){return jt=$m(e,t),jt}function ks(){if(!jt)throw new N("The backend connection is not configured. Resolve the API runtime before calling the backend.");return jt}function qm(){return Ee(jt?.baseUrl)}var se=oe("CiFoYWdpY29kZS9wcm9qZWN0L3YxL3Byb2plY3QucHJvdG8SE2hhZ2ljb2RlLnByb2plY3QudjEiSwoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSMwoEYm9keRgBIAEoCzIlLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdER0byJIChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USLwoGcmVzdWx0GAEgASgLMh8uaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0RHRvIhoKGENyZWF0ZURlbW9Qcm9qZWN0UmVxdWVzdCJMChlDcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEi8KBnJlc3VsdBgBIAEoCzIfLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdER0byJXChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIzCgRib2R5GAIgASgLMiUuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0RHRvIkgKFVVwZGF0ZVByb2plY3RSZXNwb25zZRIvCgZyZXN1bHQYASABKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REdG8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlIkUKHkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg8KB3JlZnJlc2gYAiABKAgiZwofR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzUmVzcG9uc2VEdG8iPgooR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInsKKUdldFByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8ikAEKKVNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSTwoEYm9keRgCIAEoCzJBLmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3REdG8ifAoqU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8iMwodR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJdCh5HZXRNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvIiwKFlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJWChdSZWxvYWRNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8igAEKIUNsb25lTW9ub1NwZWNzUmVwb3NpdG9yaWVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkcKBGJvZHkYAiABKAsyOS5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yaWVzUmVxdWVzdER0byJwCiJDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0byJpCihSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoEcGF0aBgCIAEoCUgAiAEBEg0KBWZvcmNlGAMgASgIQgcKBV9wYXRoInQKKVJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0byIwChpJbml0aWFsaXplTW9ub1NwZWNzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIloKG0luaXRpYWxpemVNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8ifgogVXBkYXRlTW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRJGCgRib2R5GAIgASgLMjguaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0byJgCiFVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvImcKH0dldFByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIcCg9yZXBvc2l0b3J5X3BhdGgYAiABKAlIAIgBAUISChBfcmVwb3NpdG9yeV9wYXRoImEKIEdldFByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdERlc2lnbkRvY3VtZW50RHRvIoABCiBTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkgKBGJvZHkYAiABKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8ibAohU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3VsdER0byI2CiBHZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJImMKIUdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXNwb25zZRI+CgZyZXN1bHQYASABKAsyLi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhEdG8iRwojR2V0UHJvamVjdERlc2lnblNpdGVEb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRzbHVnGAIgASgJImkKJEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlRG9jdW1lbnREdG8ieQocVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKC2JyYW5jaF9uYW1lGAIgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgDIAEoCUgAiAEBQhIKEF9yZXBvc2l0b3J5X3BhdGgiYQodVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucHJvamVjdC52MS5CcmFuY2hWYWxpZGF0aW9uUmVzcG9uc2VEdG8iKgoaVmFsaWRhdGVQcm9qZWN0UGF0aFJlcXVlc3QSDAoEcGF0aBgBIAEoCSJdChtWYWxpZGF0ZVByb2plY3RQYXRoUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5QYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvIlcKGlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0EjkKBGJvZHkYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc1JlcXVlc3REdG8iWwobU2NhbkdpdFJlcG9zaXRvcmllc1Jlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnByb2plY3QudjEuU2NhbkdpdFJlcG9zUmVzcG9uc2VEdG8iYAoeVmFsaWRhdGVNb25vU3BlY3NDb25maWdSZXF1ZXN0Ej4KBGJvZHkYASABKAsyMC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzUmVxdWVzdER0byJkCh9WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAEoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVNb25vU3BlY3NSZXNwb25zZUR0byItChdHZXRQcm9qZWN0VmF1bHRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIlUKGEdldFByb2plY3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIqABCh5PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgCIAEoCUgAiAEBEhUKCHN1Yl9wYXRoGAMgASgJSAGIAQFCHQobX2N1cnJlbnRfaW50ZXJmYWNlX2xhbmd1YWdlQgsKCV9zdWJfcGF0aCJlCh9PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnByb2plY3QudjEuVnNDb2RlU2VydmVyTGF1bmNoUmVzcG9uc2VEdG8iNQofR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIl4KIEdldFByb2plY3RHaXRXYXRjaFN0YXR1c1Jlc3BvbnNlEjoKBnJlc3VsdBgBIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdEdpdFdhdGNoU3RhdHVzIkAKDlN1YlJlcG9JbmZvRHRvEgwKBG5hbWUYASABKAkSDAoEcGF0aBgCIAEoCRISCgpoYXNfYWdlbnRzGAMgASgIIvEDCgpQcm9qZWN0RHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjEKDWNyZWF0aW9uX3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKFmxhc3RfbW9kaWZpY2F0aW9uX3RpbWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWlzX21vbm9fc3BlY3MYByABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAggASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgJIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgKIAEoCEgDiAEBEj0KEHN1Yl9yZXBvc2l0b3JpZXMYCyADKAsyIy5oYWdpY29kZS5wcm9qZWN0LnYxLlN1YlJlcG9JbmZvRHRvQg4KDF9kZXNjcmlwdGlvbkIVChNfbW9ub19zcGVjc192ZXJzaW9uQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiWAoQQ3JlYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iWAoQVXBkYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24i5gIKG1Byb2plY3RTdGFuZGFyZFdvcmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIWCglwYXJlbnRfaWQYAyABKAlIAIgBARIPCgdlbmFibGVkGAQgASgIEg0KBW9yZGVyGAUgASgFEhMKC3NvdXJjZV90eXBlGAYgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAcgASgJEgwKBHRhZ3MYCCADKAkSFQoIbGFuZ3VhZ2UYCSABKAlIAYgBARJQCghtZXRhZGF0YRgKIAMoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIu0CChxQcm9qZWN0U3RhbmRhcmRXb3JkUGhyYXNlRHRvEhAKCGdyb3VwX2lkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIWCg5zdWJtaXR0ZWRfdGV4dBgEIAEoCRIPCgdlbmFibGVkGAUgASgIEg0KBW9yZGVyGAYgASgFEhMKC3NvdXJjZV90eXBlGAcgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAggASgJEgwKBHRhZ3MYCSADKAkSFQoIbGFuZ3VhZ2UYCiABKAlIAIgBARJRCghtZXRhZGF0YRgLIAMoCzI/LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFBocmFzZUR0by5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUILCglfbGFuZ3VhZ2UinAEKHFByb2plY3RTdGFuZGFyZFdvcmRTb3VyY2VEdG8SDAoEdHlwZRgBIAEoCRIVCg1yZWxhdGl2ZV9wYXRoGAIgASgJEhEKCWZ1bGxfcGF0aBgDIAEoCRIOCgZleGlzdHMYBCABKAgSNAoQbGFzdF9tb2RpZmllZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiygEKIVByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGAoLc291cmNlX3R5cGUYBCABKAlIAIgBARIaCg1yZWxhdGl2ZV9wYXRoGAUgASgJSAGIAQESEgoFZmllbGQYBiABKAlIAogBAUIOCgxfc291cmNlX3R5cGVCEAoOX3JlbGF0aXZlX3BhdGhCCAoGX2ZpZWxkIr0DCh9Qcm9qZWN0U3RhbmRhcmRXb3Jkc1Jlc3BvbnNlRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKZnJvbV9jYWNoZRgFIAEoCBJCCgdzb3VyY2VzGAYgAygLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3JkU291cmNlRHRvEkAKBmdyb3VwcxgHIAMoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvEkIKB3BocmFzZXMYCCADKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRQaHJhc2VEdG8SSwoLZGlhZ25vc3RpY3MYCSADKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0byK6AgolUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZVBocmFzZUR0bxILCgNrZXkYASABKAkSDQoFbGFiZWwYAiABKAkSFgoOc3VibWl0dGVkX3RleHQYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSACIAQESWgoIbWV0YWRhdGEYCCADKAsySC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCwoJX2xhbmd1YWdlIpIDCiRQcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSFgoJcGFyZW50X2lkGAMgASgJSACIAQESDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSAGIAQESWQoIbWV0YWRhdGEYCCADKAsyRy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVHcm91cER0by5NZXRhZGF0YUVudHJ5EksKB3BocmFzZXMYCSADKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8aLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIsQBCiVQcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEhMKC3NvdXJjZV90eXBlGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhMKC2dyb3VwX2NvdW50GAQgASgFEhQKDHBocmFzZV9jb3VudBgFIAEoBRI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLWAQokUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhMKC3NvdXJjZV90eXBlGAIgASgJEhUKDXJlbGF0aXZlX3BhdGgYAyABKAkSEQoJZnVsbF9wYXRoGAQgASgJEg4KBmV4aXN0cxgFIAEoCBI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglzaWduYXR1cmUYByABKAkilgEKIVByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxITCgtncm91cF9jb3VudBgBIAEoBRIUCgxwaHJhc2VfY291bnQYAiABKAUSHAoUZGlzYWJsZWRfZW50cnlfY291bnQYAyABKAUSEQoJdGFnX2NvdW50GAQgASgFEhUKDXNvdXJjZV9zdGF0dXMYBSABKAki8wQKKVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudERvY3VtZW50RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASSQoGZ3JvdXBzGAUgAygLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SQgoHc291cmNlcxgGIAMoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFNvdXJjZUR0bxJaChZ1c2VyX292ZXJsYXlfc3VtbWFyaWVzGAcgAygLMjouaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEkoKCnN0YXRpc3RpY3MYCCABKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxJRCg5zb3VyY2VfdmVyc2lvbhgJIAEoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEksKC2RpYWdub3N0aWNzGAogAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0RpYWdub3N0aWNEdG8i5AEKLFNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEkkKBmdyb3VwcxgCIAMoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZUdyb3VwRHRvElEKDnNvdXJjZV92ZXJzaW9uGAMgASgLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc1NvdXJjZVZlcnNpb25EdG8iVQojTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJEhIKCnZhbHVlX2tpbmQYAyABKAki5gQKIE1vbm9TcGVjc01hbmFnZW1lbnRSZXBvc2l0b3J5RHRvEgwKBG5hbWUYASABKAkSEQoEY29kZRgCIAEoCUgAiAEBEgwKBHBhdGgYAyABKAkSEAoDdXJsGAQgASgJSAGIAQESGQoMZGlzcGxheV9uYW1lGAUgASgJSAKIAQESEQoEdHlwZRgGIAEoCUgDiAEBEhEKBGljb24YByABKAlIBIgBARIQCghvcHRpb25hbBgIIAEoCBIMCgR0YWdzGAkgAygJEkoKCG1ldGFkYXRhGAogAygLMjguaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50TWV0YWRhdGFFbnRyeUR0bxIZChFpc192YWxpZF9naXRfcmVwbxgLIAEoCBITCgZicmFuY2gYDCABKAlIBYgBARIfChdoYXNfdW5jb21taXR0ZWRfY2hhbmdlcxgNIAEoCBIdChV1bnB1c2hlZF9jb21taXRfY291bnQYDiABKAUSGwoTaGFzX3RyYWNraW5nX2JyYW5jaBgPIAEoCBI1Cg90cmFja2luZ19icmFuY2gYECABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSEwoLYWhlYWRfY291bnQYESABKAUSFAoMYmVoaW5kX2NvdW50GBIgASgFEhcKCnN5bmNfc3RhdGUYEyABKAlIBogBAUIHCgVfY29kZUIGCgRfdXJsQg8KDV9kaXNwbGF5X25hbWVCBwoFX3R5cGVCBwoFX2ljb25CCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSKiAgoWTW9ub1NwZWNzTWFuYWdlbWVudER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhMKC2NvbmZpZ19wYXRoGAMgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYBCABKAgSFAoMeWFtbF9wcmV2aWV3GAUgASgJEksKDHJlcG9zaXRvcmllcxgGIAMoCzI1LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudFJlcG9zaXRvcnlEdG8SSgoIbWV0YWRhdGEYByADKAsyOC5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnRNZXRhZGF0YUVudHJ5RHRvImMKIU1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yeVJlc3VsdER0bxIMCgRwYXRoGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQFCCgoIX21lc3NhZ2UicAolTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0bxJHCgdyZXN1bHRzGAEgAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDbG9uZVJlcG9zaXRvcnlSZXN1bHREdG8iTwokTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXF1ZXN0RHRvEg0KBXBhdGhzGAEgAygJEhgKEGluY2x1ZGVfb3B0aW9uYWwYAiABKAgiZQoiTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0bxIMCgRwYXRoGAEgASgJEg8KB3JlbW92ZWQYAiABKAgSFAoHbWVzc2FnZRgDIAEoCUgAiAEBQgoKCF9tZXNzYWdlIoQCCiNVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYAyABKAgSSwoMcmVwb3NpdG9yaWVzGAQgAygLMjUuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50UmVwb3NpdG9yeUR0bxJKCghtZXRhZGF0YRgFIAMoCzI4LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8inQEKGFByb2plY3REZXNpZ25Eb2N1bWVudER0bxIMCgRwYXRoGAEgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgCIAEoCUgAiAEBEg8KB2NvbnRlbnQYAyABKAkSDgoGZXhpc3RzGAQgASgIEhQKB3ZlcnNpb24YBSABKAlIAYgBAUISChBfcmVwb3NpdG9yeV9wYXRoQgoKCF92ZXJzaW9uIoYBCiJTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzdWx0RHRvEgwKBHBhdGgYASABKAkSHAoPcmVwb3NpdG9yeV9wYXRoGAIgASgJSACIAQESDwoHY3JlYXRlZBgDIAEoCBIPCgd2ZXJzaW9uGAQgASgJQhIKEF9yZXBvc2l0b3J5X3BhdGgingEKJVVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8SHAoPcmVwb3NpdG9yeV9wYXRoGAEgASgJSACIAQESDwoHY29udGVudBgCIAEoCRIdChBleHBlY3RlZF92ZXJzaW9uGAMgASgJSAGIAQFCEgoQX3JlcG9zaXRvcnlfcGF0aEITChFfZXhwZWN0ZWRfdmVyc2lvbiLAAQoeUHJvamVjdERlc2lnblNpdGVJbmRleEVudHJ5RHRvEgwKBHNsdWcYASABKAkSDQoFdGl0bGUYAiABKAkSDwoHc3VtbWFyeRgDIAEoCRISCgpkZXRhaWxfdXJsGAQgASgJEhsKE2Rlc2lnbl9kb3dubG9hZF91cmwYBSABKAkSHwoXcHJldmlld19saWdodF9pbWFnZV91cmwYBiABKAkSHgoWcHJldmlld19kYXJrX2ltYWdlX3VybBgHIAEoCSK+AgoZUHJvamVjdERlc2lnblNpdGVJbmRleER0bxITCgtjYXRhbG9nX3VybBgBIAEoCRIVCg1zb3VyY2Vfc3RhdHVzGAIgASgJEhMKC2VudHJ5X2NvdW50GAMgASgFEkQKB2VudHJpZXMYBCADKAsyMy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhFbnRyeUR0bxIaCg1jYWNoZV9jb250cm9sGAUgASgJSACIAQESEgoFZV90YWcYBiABKAlIAYgBARIaCg1sYXN0X21vZGlmaWVkGAcgASgJSAKIAQESFAoHZXhwaXJlcxgIIAEoCUgDiAEBQhAKDl9jYWNoZV9jb250cm9sQggKBl9lX3RhZ0IQCg5fbGFzdF9tb2RpZmllZEIKCghfZXhwaXJlcyKZAgocUHJvamVjdERlc2lnblNpdGVEb2N1bWVudER0bxIMCgRzbHVnGAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB2NvbnRlbnQYAyABKAkSEgoKZGV0YWlsX3VybBgEIAEoCRIbChNkZXNpZ25fZG93bmxvYWRfdXJsGAUgASgJEhoKDWNhY2hlX2NvbnRyb2wYBiABKAlIAIgBARISCgVlX3RhZxgHIAEoCUgBiAEBEhoKDWxhc3RfbW9kaWZpZWQYCCABKAlIAogBARIUCgdleHBpcmVzGAkgASgJSAOIAQFCEAoOX2NhY2hlX2NvbnRyb2xCCAoGX2VfdGFnQhAKDl9sYXN0X21vZGlmaWVkQgoKCF9leHBpcmVzImoKG0JyYW5jaFZhbGlkYXRpb25SZXNwb25zZUR0bxIOCgZleGlzdHMYASABKAgSEAoIaXNfdmFsaWQYAiABKAgSFAoMaXNfYXZhaWxhYmxlGAMgASgIEhMKC2JyYW5jaF9uYW1lGAQgASgJIogDChlQYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvEhAKCGlzX3ZhbGlkGAEgASgIEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhYKCXBhdGhfdHlwZRgEIAEoCUgAiAEBEiIKFWhhc19tb25vX3NwZWNzX2NvbmZpZxgFIAEoCEgBiAEBEiMKFm1vbm9fc3BlY3NfY29uZmlnX3BhdGgYBiABKAlIAogBARImChltb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5GAcgASgJSAOIAQESKwoebW9ub19zcGVjc19jb21taXRfd2hlbl9hcmNoaXZlGAggASgISASIAQFCDAoKX3BhdGhfdHlwZUIYChZfaGFzX21vbm9fc3BlY3NfY29uZmlnQhkKF19tb25vX3NwZWNzX2NvbmZpZ19wYXRoQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiVgoKR2l0UmVwb0R0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSFQoNcmVsYXRpdmVfcGF0aBgDIAEoCRIVCg1pc19tb25vX3NwZWNzGAQgASgIIqQBChdTY2FuR2l0UmVwb3NSZXNwb25zZUR0bxI1CgxyZXBvc2l0b3JpZXMYASADKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLkdpdFJlcG9EdG8SEwoLdG90YWxfY291bnQYAiABKAUSDwoHc3VjY2VzcxgDIAEoCBIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UijwEKFlNjYW5HaXRSZXBvc1JlcXVlc3REdG8SEQoJcm9vdF9wYXRoGAEgASgJEhEKCW1heF9kZXB0aBgCIAEoBRIWCg5leGNsdWRlX2hpZGRlbhgDIAEoCBIdChVtYXhfZm9sZGVyc19wZXJfbGV2ZWwYBCABKAUSGAoQZXhjbHVkZV9wYXR0ZXJucxgFIAMoCSJEChlNb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEg8KB3ZlcnNpb24YASABKAkSFgoOcmVwb19kaXJlY3RvcnkYAiABKAkikgEKHFZhbGlkYXRlTW9ub1NwZWNzUmVzcG9uc2VEdG8SEAoIaXNfdmFsaWQYASABKAgSPgoGY29uZmlnGAIgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEhAKCHdhcm5pbmdzGAMgAygJEg4KBmVycm9ycxgEIAMoCSIzChtWYWxpZGF0ZU1vbm9TcGVjc1JlcXVlc3REdG8SFAoMcHJvamVjdF9wYXRoGAEgASgJInwKG1ZhdWx0Qm9vdHN0cmFwRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGgoNcmVsYXRpdmVfcGF0aBgEIAEoCUgAiAEBQhAKDl9yZWxhdGl2ZV9wYXRoIt8CCgxWYXVsdEl0ZW1EdG8SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEhUKDXBoeXNpY2FsX3BhdGgYBCABKAkSFAoHZ2l0X3VybBgFIAEoCUgAiAEBEjIKDmNyZWF0ZWRfYXRfdXRjGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCg51cGRhdGVkX2F0X3V0YxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASTwoVYm9vdHN0cmFwX2RpYWdub3N0aWNzGAggAygLMjAuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEJvb3RzdHJhcERpYWdub3N0aWNEdG8SDQoFc2NvcGUYCSABKAkSFwoKcHJvamVjdF9pZBgKIAEoCUgBiAEBQgoKCF9naXRfdXJsQg0KC19wcm9qZWN0X2lkIn4KFFZhdWx0TGlzdFJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKBWl0ZW1zGAIgAygLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8inwQKHFZzQ29kZVNlcnZlclJ1bnRpbWVTdGF0dXNEdG8SDgoGc3RhdHVzGAEgASgJEhsKE2FjdGl2ZV9jYXBhYmlsaXRpZXMYAiADKAkSEQoEaG9zdBgDIAEoCUgAiAEBEhwKD2NvbmZpZ3VyZWRfcG9ydBgEIAEoBUgBiAEBEhsKDmVmZmVjdGl2ZV9wb3J0GAUgASgFSAKIAQESFQoIYmFzZV91cmwYBiABKAlIA4gBARIWCglhdXRoX21vZGUYByABKAlIBIgBARITCgZzb3VyY2UYCCABKAlIBYgBARIVCg1zb3VyY2VfbG9ja2VkGAkgASgIEhIKCmhhc19zZWNyZXQYCiABKAgSGgoNc2VjcmV0X3NvdXJjZRgLIAEoCUgGiAEBEjkKFWxhc3RfYXR0ZW1wdGVkX2F0X3V0YxgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKbGFzdF9lcnJvchgNIAEoCUgHiAEBEhsKDnN0YXR1c19tZXNzYWdlGA4gASgJSAiIAQFCBwoFX2hvc3RCEgoQX2NvbmZpZ3VyZWRfcG9ydEIRCg9fZWZmZWN0aXZlX3BvcnRCCwoJX2Jhc2VfdXJsQgwKCl9hdXRoX21vZGVCCQoHX3NvdXJjZUIQCg5fc2VjcmV0X3NvdXJjZUINCgtfbGFzdF9lcnJvckIRCg9fc3RhdHVzX21lc3NhZ2UinAIKHVZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvEhIKCmxhdW5jaF91cmwYASABKAkSHQoQY29ubmVjdGlvbl90b2tlbhgCIAEoCUgAiAEBEhEKCW9wZW5fbW9kZRgDIAEoCRJCCgdydW50aW1lGAQgASgLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Wc0NvZGVTZXJ2ZXJSdW50aW1lU3RhdHVzRHRvEhgKC2luc3RhbmNlX2lkGAUgASgJSAGIAQESMgoOZXhwaXJlc19hdF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhMKEV9jb25uZWN0aW9uX3Rva2VuQg4KDF9pbnN0YW5jZV9pZCKXAgoVUHJvamVjdEdpdFdhdGNoU3RhdHVzEh4KFm1vbml0b3JlZF9yZXBvc2l0b3JpZXMYASADKAkSNAoQbGFzdF9zY2FuX2F0X3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoQbmV4dF9zY2FuX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQcmVwb3NpdG9yeV9jb3VudBgEIAEoBRISCgppc19ydW5uaW5nGAUgASgIEiIKGm1heF9tb25pdG9yZWRfcmVwb3NpdG9yaWVzGAYgASgFEiAKGGdpdF9hdXRvX3JlZnJlc2hfZW5hYmxlZBgHIAEoCDL1GAoOUHJvamVjdFNlcnZpY2USZgoNQ3JlYXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJyChFDcmVhdGVEZW1vUHJvamVjdBItLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlRGVtb1Byb2plY3RSZXF1ZXN0Gi4uaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEmYKDVVwZGF0ZVByb2plY3QSKS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USZgoNRGVsZXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRKEAQoXR2V0UHJvamVjdFN0YW5kYXJkV29yZHMSMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRKiAQohR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50Ej0uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0Gj4uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKlAQoiU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudBI+LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3QaPy5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKBAQoWR2V0TW9ub1NwZWNzTWFuYWdlbWVudBIyLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QaMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldE1vbm9TcGVjc01hbmFnZW1lbnRSZXNwb25zZRJsCg9SZWxvYWRNb25vU3BlY3MSKy5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QaLC5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1Jlc3BvbnNlEo0BChpDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllcxI2LmhhZ2ljb2RlLnByb2plY3QudjEuQ2xvbmVNb25vU3BlY3NSZXBvc2l0b3JpZXNSZXF1ZXN0GjcuaGFnaWNvZGUucHJvamVjdC52MS5DbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEqIBCiFSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXQSPS5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlcXVlc3QaPi5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEngKE0luaXRpYWxpemVNb25vU3BlY3MSLy5oYWdpY29kZS5wcm9qZWN0LnYxLkluaXRpYWxpemVNb25vU3BlY3NSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5Jbml0aWFsaXplTW9ub1NwZWNzUmVzcG9uc2USigEKGVVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2UShwEKGEdldFByb2plY3REZXNpZ25Eb2N1bWVudBI0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBo1LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGVNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5TYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGUdldFByb2plY3REZXNpZ25TaXRlSW5kZXgSNS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVzcG9uc2USkwEKHEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnQSOC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXF1ZXN0GjkuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZURvY3VtZW50UmVzcG9uc2USfgoVVmFsaWRhdGVQcm9qZWN0QnJhbmNoEjEuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXF1ZXN0GjIuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXNwb25zZRJ4ChNWYWxpZGF0ZVByb2plY3RQYXRoEi8uaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RQYXRoUmVxdWVzdBowLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVQcm9qZWN0UGF0aFJlc3BvbnNlEngKE1NjYW5HaXRSZXBvc2l0b3JpZXMSLy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5TY2FuR2l0UmVwb3NpdG9yaWVzUmVzcG9uc2UShAEKF1ZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnEjMuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1JlcXVlc3QaNC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnUmVzcG9uc2USbwoQR2V0UHJvamVjdFZhdWx0cxIsLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFZhdWx0c1JlcXVlc3QaLS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RWYXVsdHNSZXNwb25zZRKEAQoXT3BlblByb2plY3RJbkNvZGVTZXJ2ZXISMy5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5Qcm9qZWN0SW5Db2RlU2VydmVyUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuT3BlblByb2plY3RJbkNvZGVTZXJ2ZXJSZXNwb25zZRKHAQoYR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzEjQuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXF1ZXN0GjUuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlByb2plY3QuVjFiBnByb3RvMw",[Ne,rs]),eh=v(se,1),th=v(se,5),nh=v(se,15),oh=v(se,17),rh=v(se,19),ah=v(se,21),ih=v(se,23),sh=v(se,25),lh=v(se,41),ch=v(se,50),dh=v(se,51),uh=v(se,69),mh=v(se,71),hh=v(se,85),bh=We(se,0),Je=oe("Ch9oYWdpY29kZS9wcm9qZWN0L3YxL3ZhdWx0LnByb3RvEhNoYWdpY29kZS5wcm9qZWN0LnYxIhMKEUxpc3RWYXVsdHNSZXF1ZXN0Ik8KEkxpc3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIk4KEkNyZWF0ZVZhdWx0UmVxdWVzdBI4CgRib2R5GAEgASgLMiouaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3REdG8iSAoTQ3JlYXRlVmF1bHRSZXNwb25zZRIxCgZyZXN1bHQYASABKAsyIS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0SXRlbUR0byJaChJVcGRhdGVWYXVsdFJlcXVlc3QSCgoCaWQYASABKAkSOAoEYm9keRgCIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXF1ZXN0RHRvIkgKE1VwZGF0ZVZhdWx0UmVzcG9uc2USMQoGcmVzdWx0GAEgASgLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8iPAoSRGVsZXRlVmF1bHRSZXF1ZXN0EgoKAmlkGAEgASgJEhoKEmRlbGV0ZV9sb2NhbF9maWxlcxgCIAEoCCJSChNEZWxldGVWYXVsdFJlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXNwb25zZUR0byI+ChRHZXRWYXVsdEZpbGVzUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRwYXRoGAIgASgJSACIAQFCBwoFX3BhdGgiVgoVR2V0VmF1bHRGaWxlc1Jlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlTGlzdFJlc3BvbnNlRHRvIjYKGkdldFZhdWx0RmlsZVByZXZpZXdSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBHBhdGgYAiABKAkiXwobR2V0VmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlEkAKBnJlc3VsdBgBIAEoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlRHRvIo4BChxPcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBHBhdGgYAiABKAlIAIgBARInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgDIAEoCUgBiAEBQgcKBV9wYXRoQh0KG19jdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZSJjCh1PcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wcm9qZWN0LnYxLlZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvImwKFUNyZWF0ZVZhdWx0UmVxdWVzdER0bxIMCgRuYW1lGAEgASgJEgwKBHR5cGUYAiABKAkSFQoNcGh5c2ljYWxfcGF0aBgDIAEoCRIUCgdnaXRfdXJsGAQgASgJSACIAQFCCgoIX2dpdF91cmwibAoVVXBkYXRlVmF1bHRSZXF1ZXN0RHRvEgwKBG5hbWUYASABKAkSDAoEdHlwZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhQKB2dpdF91cmwYBCABKAlIAIgBAUIKCghfZ2l0X3VybCKdAQoWRGVsZXRlVmF1bHRSZXNwb25zZUR0bxIKCgJpZBgBIAEoCRIPCgdkZWxldGVkGAIgASgIEiQKHGRlbGV0ZV9sb2NhbF9maWxlc19yZXF1ZXN0ZWQYAyABKAgSIwobbG9jYWxfZmlsZXNfZGVsZXRpb25fc3RhdHVzGAQgASgJEhsKE2xvY2FsX2ZpbGVzX2RlbGV0ZWQYBSABKAgizAEKEVZhdWx0RmlsZUVudHJ5RHRvEhUKDXJlbGF0aXZlX3BhdGgYASABKAkSEQoJZmlsZV9uYW1lGAIgASgJEhQKDGlzX2RpcmVjdG9yeRgDIAEoCBIRCglleHRlbnNpb24YBCABKAkSEgoKc2l6ZV9ieXRlcxgFIAEoAxI1ChFsYXN0X21vZGlmaWVkX3V0YxgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRcHJldmlld19zdXBwb3J0ZWQYByABKAgimAIKGFZhdWx0RmlsZUxpc3RSZXNwb25zZUR0bxIQCgh2YXVsdF9pZBgBIAEoCRISCgp2YXVsdF9uYW1lGAIgASgJEhUKDXBoeXNpY2FsX3BhdGgYAyABKAkSDgoGc3RhdHVzGAQgASgJEhcKCmVycm9yX2NvZGUYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESFAoMaXNfdHJ1bmNhdGVkGAcgASgIEhgKEHRvdGFsX2ZpbGVfY291bnQYCCABKAUSNQoFaXRlbXMYCSADKAsyJi5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0RmlsZUVudHJ5RHRvQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIpQDChtWYXVsdEZpbGVQcmV2aWV3UmVzcG9uc2VEdG8SEAoIdmF1bHRfaWQYASABKAkSEgoKdmF1bHRfbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhUKDXJlbGF0aXZlX3BhdGgYBCABKAkSEQoJZmlsZV9uYW1lGAUgASgJEhEKCWV4dGVuc2lvbhgGIAEoCRISCgpzaXplX2J5dGVzGAcgASgDEjUKEWxhc3RfbW9kaWZpZWRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZzdGF0dXMYCSABKAkSFwoKZXJyb3JfY29kZRgKIAEoCUgAiAEBEhQKB21lc3NhZ2UYCyABKAlIAYgBARIZChFwcmV2aWV3X3N1cHBvcnRlZBgMIAEoCBIZChFjb250ZW50X3RydW5jYXRlZBgNIAEoCBIUCgdjb250ZW50GA4gASgJSAKIAQFCDQoLX2Vycm9yX2NvZGVCCgoIX21lc3NhZ2VCCgoIX2NvbnRlbnQy9QUKDFZhdWx0U2VydmljZRJdCgpMaXN0VmF1bHRzEiYuaGFnaWNvZGUucHJvamVjdC52MS5MaXN0VmF1bHRzUmVxdWVzdBonLmhhZ2ljb2RlLnByb2plY3QudjEuTGlzdFZhdWx0c1Jlc3BvbnNlEmAKC0NyZWF0ZVZhdWx0EicuaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3QaKC5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVZhdWx0UmVzcG9uc2USYAoLVXBkYXRlVmF1bHQSJy5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVZhdWx0UmVxdWVzdBooLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXNwb25zZRJgCgtEZWxldGVWYXVsdBInLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXF1ZXN0GiguaGFnaWNvZGUucHJvamVjdC52MS5EZWxldGVWYXVsdFJlc3BvbnNlEmYKDUdldFZhdWx0RmlsZXMSKS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZXNSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5HZXRWYXVsdEZpbGVzUmVzcG9uc2USeAoTR2V0VmF1bHRGaWxlUHJldmlldxIvLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0VmF1bHRGaWxlUHJldmlld1JlcXVlc3QaMC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZVByZXZpZXdSZXNwb25zZRJ+ChVPcGVuVmF1bHRJbkNvZGVTZXJ2ZXISMS5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlcXVlc3QaMi5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuUHJvamVjdC5WMWIGcHJvdG8z",[Ne,se]),gh=v(Je,1),ph=v(Je,3),Ah=v(Je,5),fh=v(Je,7),Zh=v(Je,9),Rh=v(Je,11),Eh=v(Je,14),Sh=v(Je,15),Vh=We(Je,0),Qe=oe("CitoYWdpY29kZS9jb21tdW5pdHkvdjEvc2NoZWR1bGVkX3BsYW5zLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiQwoZTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiWgoaTGlzdFNjaGVkdWxlZFBsYW5zUmVzcG9uc2USPAoGcmVzdWx0GAEgAygLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSIlChdHZXRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJYChhHZXRTY2hlZHVsZWRQbGFuUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSI2CiBMaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIm0KIUxpc3RTY2hlZHVsZWRQbGFuUHJvYmxlbXNSZXNwb25zZRJICgZyZXN1bHQYASADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkRlZmluaXRpb25Qcm9ibGVtRHRvIvMBCiNMaXN0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VzUmVxdWVzdBIYCgtyYW5nZV9zdGFydBgBIAEoCUgAiAEBEhYKCXJhbmdlX2VuZBgCIAEoCUgBiAEBEh4KEWRpc3BsYXlfdGltZV96b25lGAMgASgJSAKIAQESEwoGY3Vyc29yGAQgASgJSAOIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgEiAEBQg4KDF9yYW5nZV9zdGFydEIMCgpfcmFuZ2VfZW5kQhQKEl9kaXNwbGF5X3RpbWVfem9uZUIJCgdfY3Vyc29yQg0KC19wcm9qZWN0X2lkInIKJExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VQYWdlUmVzcG9uc2UiWwoaQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSPQoEYm9keRgBIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiZwoaVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkSPQoEYm9keRgCIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoaRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiHQobRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlInkKIkVkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlcXVlc3QSCgoCaWQYASABKAkSRwoEYm9keRgCIAEoCzI5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0ImMKI0VkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiYAokRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0EgoKAmlkGAEgASgJEhoKDW9jY3VycmVuY2VfYXQYAiABKAlIAIgBAUIQCg5fb2NjdXJyZW5jZV9hdCJlCiVEZWxldGVTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiJQoXUnVuU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiVQoYUnVuU2NoZWR1bGVkUGxhblJlc3BvbnNlEjkKBnJlc3VsdBgBIAEoCzIpLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXNzaW9uUmVzcG9uc2VEdG8iJwoZU3RhcnRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpTdGFydFNjaGVkdWxlZFBsYW5SZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvIjUKJ0NvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBIKCgJpZBgBIAEoCSJuCihDb25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUnVuQWNjZXB0ZWREdG8iNAomQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlcXVlc3QSCgoCaWQYASABKAkiZwonQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoVU2NoZWR1bGVkUGxhbkFnZW50RHRvEg8KB2hlcm9faWQYASABKAkiawoZU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxIQCghzdHJhdGVneRgBIAEoCRI8CgZhZ2VudHMYAiADKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50RHRvIuABCidTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USKgoGcnVuX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgRuYW1lGAIgASgJSACIAQESRAoKYWdlbnRfcG9vbBgDIAEoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuQWdlbnRQb29sRHRvEicKB3BheWxvYWQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCBwoFX25hbWUi4wEKHlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIvCgtvcmlnaW5hbF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEa2luZBgCIAEoCRJQCghvdmVycmlkZRgDIAEoCzI+LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USHAoPaW5wdXRfZmlsZV9wYXRoGAQgASgJSACIAQFCEgoQX2lucHV0X2ZpbGVfcGF0aCI4ChZTY2hlZHVsZWRQbGFuUmVwZWF0RHRvEgwKBHJ1bGUYASABKAkSEAoId2Vla2RheXMYAiADKAkiiAIKGlNjaGVkdWxlZFBsYW5RdW90YVJlc2V0RHRvEhMKBndpbmRvdxgBIAEoCUgAiAEBEiIKFW1pbl9yZW1haW5pbmdfcGVyY2VudBgCIAEoBUgBiAEBEiUKGG1heF9taW51dGVzX2JlZm9yZV9yZXNldBgDIAEoBUgCiAEBEigKG3JlcXVpcmVfbWFudWFsX2NvbmZpcm1hdGlvbhgEIAEoCEgDiAEBQgkKB193aW5kb3dCGAoWX21pbl9yZW1haW5pbmdfcGVyY2VudEIbChlfbWF4X21pbnV0ZXNfYmVmb3JlX3Jlc2V0Qh4KHF9yZXF1aXJlX21hbnVhbF9jb25maXJtYXRpb24i9wIKGFNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxIMCgRtb2RlGAEgASgJEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoJdGltZV96b25lGAMgASgJSACIAQESFwoKc3RhcnRfZGF0ZRgEIAEoCUgBiAEBEhUKCGVuZF9kYXRlGAUgASgJSAKIAQESGAoLdGltZV9vZl9kYXkYBiABKAlIA4gBARI9CgZyZXBlYXQYByABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlcGVhdER0bxJGCgtxdW90YV9yZXNldBgIIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUXVvdGFSZXNldER0b0IMCgpfdGltZV96b25lQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki0AYKFVNjaGVkdWxlZFBsYW5SZXNwb25zZRIKCgJpZBgBIAEoCRIMCgR0eXBlGAIgASgJEg0KBXNjb3BlGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSIQoUZGVmaW5pdGlvbl9maWxlX3BhdGgYBSABKAlIAIgBARIMCgRuYW1lGAYgASgJEg8KB2VuYWJsZWQYByABKAgSEQoEaWNvbhgIIAEoCUgBiAEBEhIKBWNvbG9yGAkgASgJSAKIAQESLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoIc2NoZWR1bGUYDCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblNjaGVkdWxlRHRvEkQKCmFnZW50X3Bvb2wYDSABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGA4gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg0KBXN0YXRlGA8gASgJEi8KC25leHRfcnVuX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJJCgpleGNlcHRpb25zGBEgAygLMjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIcCg9pbnB1dF9maWxlX3BhdGgYEiABKAlIA4gBARI7ChdsYXN0X3RyaWdnZXJlZF9yZXNldF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASWQoVcGVuZGluZ19xdW90YV90cmlnZ2VyGBQgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5QZW5kaW5nUXVvdGFUcmlnZ2VyRHRvQhcKFV9kZWZpbml0aW9uX2ZpbGVfcGF0aEIHCgVfaWNvbkIICgZfY29sb3JCEgoQX2lucHV0X2ZpbGVfcGF0aCKJAQojU2NoZWR1bGVkUGxhblBlbmRpbmdRdW90YVRyaWdnZXJEdG8SLQoJcmFpc2VkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg93aW5kb3dfcmVzZXRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkcKIVNjaGVkdWxlZFBsYW5EZWZpbml0aW9uUHJvYmxlbUR0bxIRCglmaWxlX3BhdGgYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLTAQofU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIMCgRtb2RlGAEgASgJEhEKBHJ1bGUYAiABKAlIAIgBARIQCgh3ZWVrZGF5cxgDIAMoCRIXCgpzdGFydF9kYXRlGAQgASgJSAGIAQESFQoIZW5kX2RhdGUYBSABKAlIAogBARIYCgt0aW1lX29mX2RheRgGIAEoCUgDiAEBQgcKBV9ydWxlQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki6gMKH1NjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USDwoHcGxhbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEjEKDW9jY3VycmVuY2VfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBG5hbWUYBCABKAkSDAoEdHlwZRgFIAEoCRIPCgdlbmFibGVkGAYgASgIEhEKBGljb24YByABKAlIAIgBARISCgVjb2xvchgIIAEoCUgBiAEBEg0KBXN0YXRlGAkgASgJEh8KEnNjaGVkdWxlX3RpbWVfem9uZRgKIAEoCUgCiAEBEkoKCnJlY3VycmVuY2UYCyABKAsyNi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIvCgtuZXh0X3J1bl9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLb3JpZ2luYWxfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2lzX21vZGlmaWVkGA4gASgIQgcKBV9pY29uQggKBl9jb2xvckIVChNfc2NoZWR1bGVfdGltZV96b25lIpMCCiNTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVBhZ2VSZXNwb25zZRIvCgtyYW5nZV9zdGFydBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJcmFuZ2VfZW5kGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZChFkaXNwbGF5X3RpbWVfem9uZRgDIAEoCRJHCgdlbnRyaWVzGAQgAygLMjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USGAoLbmV4dF9jdXJzb3IYBSABKAlIAIgBAUIOCgxfbmV4dF9jdXJzb3Ii0QIKGFNjaGVkdWxlZFBsYW5TYXZlUmVxdWVzdBIMCgR0eXBlGAEgASgJEhIKBXNjb3BlGAIgASgJSACIAQESDAoEbmFtZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIEhEKBGljb24YBSABKAlIAYgBARISCgVjb2xvchgGIAEoCUgCiAEBEkEKCHNjaGVkdWxlGAcgASgLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxJECgphZ2VudF9wb29sGAggASgLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5BZ2VudFBvb2xEdG8SJwoHcGF5bG9hZBgJIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUIICgZfc2NvcGVCBwoFX2ljb25CCAoGX2NvbG9yIo4CCiJTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0EjEKDW9jY3VycmVuY2VfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoEbmFtZRgDIAEoCUgAiAEBEkQKCmFnZW50X3Bvb2wYBCABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGAUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlQgcKBV9uYW1lIs4DChJDaGF0SGVyb1N1bW1hcnlEdG8SDwoHaGVyb19pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoEaWNvbhgEIAEoCUgBiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBSABKAkSGQoMYWdlbnRfY2xpX2lkGAYgASgJSAKIAQESGwoOYWdlbnRfY2xpX25hbWUYByABKAlIA4gBARIbCg5hZ2VudF9jbGlfaWNvbhgIIAEoCUgEiAEBEhUKCG1vZGVsX2lkGAkgASgJSAWIAQESFwoKbW9kZWxfbmFtZRgKIAEoCUgGiAEBEhcKCm1vZGVsX2ljb24YCyABKAlIB4gBARIiChVzZWNvbmRhcnlfbW9kZWxfbGFiZWwYDCABKAlICIgBAUIOCgxfZGVzY3JpcHRpb25CBwoFX2ljb25CDwoNX2FnZW50X2NsaV9pZEIRCg9fYWdlbnRfY2xpX25hbWVCEQoPX2FnZW50X2NsaV9pY29uQgsKCV9tb2RlbF9pZEINCgtfbW9kZWxfbmFtZUINCgtfbW9kZWxfaWNvbkIYChZfc2Vjb25kYXJ5X21vZGVsX2xhYmVsIjgKFE9wZW5TcGVjVGFza1Byb2dyZXNzEhEKCWNvbXBsZXRlZBgBIAEoBRINCgV0b3RhbBgCIAEoBSKAAgoQT3BlblNwZWNGaWxlSW5mbxIRCglmaWxlX25hbWUYASABKAkSFQoNcmVsYXRpdmVfcGF0aBgCIAEoCRIOCgZleGlzdHMYAyABKAgSEQoJZmlsZV90eXBlGAQgASgJEhMKC2lzX3JlcXVpcmVkGAUgASgIEhMKC2lzX2FyY2hpdmVkGAYgASgIEjEKDWFyY2hpdmVkX2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkIKDXRhc2tfcHJvZ3Jlc3MYCCABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuT3BlblNwZWNUYXNrUHJvZ3Jlc3MiXgoRT3BlblNwZWNGaWxlc0luZm8SEQoJYmFzZV9wYXRoGAEgASgJEjYKBWZpbGVzGAIgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLk9wZW5TcGVjRmlsZUluZm8izAEKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCEIXChVfZXhlY3V0aW9uX21lc3NhZ2VfaWQigAEKFlNlc3Npb25Ob3RpZmljYXRpb25EdG8SDAoEa2luZBgBIAEoCRIvCgtvYnNlcnZlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJwoHcGF5bG9hZBgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSLtAQoWU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIaCg1wcm9tcHRfdG9rZW5zGAEgASgFSACIAQESIQoUY2FjaGVkX3Byb21wdF90b2tlbnMYAiABKAVIAYgBARIeChFjb21wbGV0aW9uX3Rva2VucxgDIAEoBUgCiAEBEjMKD2xhc3RfdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCEAoOX3Byb21wdF90b2tlbnNCFwoVX2NhY2hlZF9wcm9tcHRfdG9rZW5zQhQKEl9jb21wbGV0aW9uX3Rva2VucyJfChRTdGFnZUV4ZWN1dG9ySW5mb0R0bxIVCg1wcm92aWRlcl90eXBlGAEgASgJEjAKDGxhc3RfdXBkYXRlZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAivAIKFVN0YWdlSGVyb1NlbGVjdGlvbkR0bxIRCglzdGFnZV9rZXkYASABKAkSEgoKc2NyaXB0X2tleRgCIAEoCRIVCg1zY2VuYXJpb19uYW1lGAMgASgJEhQKB2hlcm9faWQYBCABKAlIAIgBARIWCgloZXJvX25hbWUYBSABKAlIAYgBARIWCgloZXJvX2ljb24YBiABKAlIAogBARIVCg1leGVjdXRvcl90eXBlGAcgASgJEhUKDXVzZWRfZmFsbGJhY2sYCCABKAgSGAoQc2VsZWN0aW9uX3NvdXJjZRgJIAEoCRIvCgtzZWxlY3RlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uIrcLChJTZXNzaW9uUmVzcG9uc2VEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRINCgV0aXRsZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhwKD2NoaWVmX2NvbXBsYWludBgEIAEoCUgBiAEBEgwKBGNvZGUYBSABKAUSDAoEdHlwZRgGIAEoCRIOCgZzdGF0dXMYByABKAkSEQoJaXNfYWN0aXZlGAggASgIEjIKDmxhc3RfYWN0aXZlX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpwcm9qZWN0X2lkGAogASgJEhQKDHByb2plY3RfbmFtZRgLIAEoCRIUCgxwcm9qZWN0X3BhdGgYDCABKAkSGgoNcHJvcG9zYWxfbmFtZRgNIAEoCUgCiAEBEkEKD29wZW5fc3BlY19maWxlcxgOIAEoCzIoLmhhZ2ljb2RlLmNvbW11bml0eS52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSRQoOcXVldWVfbWVzc2FnZXMYECADKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuUXVldWVNZXNzYWdlU3VtbWFyeUR0bxIeChF3b3JraW5nX2RpcmVjdG9yeRgRIAEoCUgDiAEBEhUKCG1ldGFkYXRhGBIgASgJSASIAQESHwoSY2hhdF9leGVjdXRvcl90eXBlGBMgASgJSAWIAQESPAoJY2hhdF9oZXJvGBQgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoYXRIZXJvU3VtbWFyeUR0bxJbChJzdGFnZV9leGVjdXRvcl9tYXAYFSADKAsyPy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJmChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyRC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlSGVyb1NlbGVjdGlvbk1hcEVudHJ5EiAKE3J1bnRpbWVfbW9kZWxfbGFiZWwYFyABKAlIBogBARI5ChVwcm9jZXNzaW5nX3N0YXJ0ZWRfYXQYGCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkQKDXNlc3Npb25fdXNhZ2UYGSABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIcCg9wcmV2aW91c19zdGF0dXMYGiABKAlIB4gBARJECg1ub3RpZmljYXRpb25zGBsgAygLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8aZAoVU3RhZ2VFeGVjdXRvck1hcEVudHJ5EgsKA2tleRgBIAEoCRI6CgV2YWx1ZRgCIAEoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaagoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjsKBXZhbHVlGAIgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YWdlSGVyb1NlbGVjdGlvbkR0bzoCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMiLgobU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvEg8KB3BsYW5faWQYASABKAkymQ4KFVNjaGVkdWxlZFBsYW5zU2VydmljZRJ5ChJMaXN0U2NoZWR1bGVkUGxhbnMSMC5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBoxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhbnNSZXNwb25zZRJzChBHZXRTY2hlZHVsZWRQbGFuEi4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXF1ZXN0Gi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXNwb25zZRKOAQoZTGlzdFNjaGVkdWxlZFBsYW5Qcm9ibGVtcxI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBo4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVzcG9uc2USlwEKHExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXMSOi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1JlcXVlc3QaOy5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1Jlc3BvbnNlEnwKE0NyZWF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE1VwZGF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE0RlbGV0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEpQBChtFZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRWRpdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVxdWVzdBo6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5FZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXNwb25zZRKaAQodRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOy5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0GjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2UScwoQUnVuU2NoZWR1bGVkUGxhbhIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVzcG9uc2USeQoSU3RhcnRTY2hlZHVsZWRQbGFuEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YXJ0U2NoZWR1bGVkUGxhblJlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuU3RhcnRTY2hlZHVsZWRQbGFuUmVzcG9uc2USowEKIENvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBo/LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEqABCh9DYW5jZWxTY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXF1ZXN0Gj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXNwb25zZUIrqgIoUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW11bml0eS5WMWIGcHJvdG8z",[Ue,Ne]),Gh=v(Qe,1),Nh=v(Qe,3),vh=v(Qe,9),Wh=v(Qe,11),yh=v(Qe,19),Ih=v(Qe,21),wa=v(Qe,39),Xh=We(Qe,0),Yh=oe("Ci1oYWdpY29kZS9jb21tdW5pdHkvdjEvY29tbXVuaXR5X3ByZXNldHMucHJvdG8SFWhhZ2ljb2RlLmNvbW11bml0eS52MSIdChtMaXN0Q29tbXVuaXR5UHJlc2V0c1JlcXVlc3QiYwocTGlzdENvbW11bml0eVByZXNldHNSZXNwb25zZRJDCgZyZXN1bHQYASABKAsyMy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RSZXNwb25zZUR0byJmCh1JbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVxdWVzdBJFCgRib2R5GAEgASgLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvImwKHkluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8ifAogU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3QSEQoJcHJlc2V0X2lkGAEgASgJEkUKBGJvZHkYAiABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8ibwohU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRPcGVyYXRpb25SZXNwb25zZUR0byI0Ch9Vbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXF1ZXN0EhEKCXByZXNldF9pZBgBIAEoCSJuCiBVbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8iIAoeUmVmcmVzaENvbW11bml0eVByZXNldHNSZXF1ZXN0IiEKH1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UihwEKFkNvbW11bml0eVByZXNldFJpc2tEdG8SGQoRZGVjbGFyZXNfY29tbWFuZHMYASABKAgSFwoPZGVjbGFyZXNfc2tpbGxzGAIgASgIEhYKDmRlY2xhcmVzX2hvb2tzGAMgASgIEiEKGWRlY2xhcmVzX2NsaV9yZXF1aXJlbWVudHMYBCABKAgi2QQKGExvY2FsSGFnaVRhc2tMaXN0SXRlbUR0bxIRCglwcmVzZXRfaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSEwoLc291cmNlX2tpbmQYBCABKAkSGQoRaW5zdGFsbGF0aW9uX2tpbmQYBSABKAkSFwoPbWFuYWdlbWVudF9raW5kGAYgASgJEiAKGGlzX3Nlc3Npb25fY3JlYXRpb25fb25seRgHIAEoCBIPCgdlbmFibGVkGAggASgIEhQKDGlzX3JlbW92YWJsZRgJIAEoCBIRCglwdWJsaXNoZXIYCiABKAkSHQoQc291cmNlX3JlZmVyZW5jZRgLIAEoCUgAiAEBEhsKDmFyY2hpdmVfc2hhMjU2GAwgASgJSAGIAQESNAoQaW5zdGFsbGVkX2F0X3V0YxgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoScmVsYXRpdmVfZGlyZWN0b3J5GA4gASgJEhgKC2Rlc2NyaXB0aW9uGA8gASgJSAKIAQESPAoFcmlza3MYECABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0Umlza0R0bxIWCglzb3VyY2VfaWQYESABKAlIA4gBARIRCgRpY29uGBIgASgJSASIAQFCEwoRX3NvdXJjZV9yZWZlcmVuY2VCEQoPX2FyY2hpdmVfc2hhMjU2Qg4KDF9kZXNjcmlwdGlvbkIMCgpfc291cmNlX2lkQgcKBV9pY29uIloKHVByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIRCgRwYXRoGAMgASgJSACIAQFCBwoFX3BhdGgiqQEKHExvY2FsSGFnaVRhc2tMaXN0UmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RJdGVtRHRvEkkKC2RpYWdub3N0aWNzGAIgAygLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvIqwDCh5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SEQoJcHJlc2V0X2lkGAEgASgJEhYKCW5hbWVzcGFjZRgCIAEoCUgAiAEBEg8KB3ZlcnNpb24YAyABKAkSEQoJcHVibGlzaGVyGAQgASgJEh0KEHNvdXJjZV9yZWZlcmVuY2UYBSABKAlIAYgBARIWCg5hcmNoaXZlX3NoYTI1NhgGIAEoCRI0ChBpbnN0YWxsZWRfYXRfdXRjGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJyZWxhdGl2ZV9kaXJlY3RvcnkYCCABKAkSDwoHZW5hYmxlZBgJIAEoCBI8CgVyaXNrcxgKIAEoCzItLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRSaXNrRHRvEhYKCXNvdXJjZV9pZBgLIAEoCUgCiAEBEhEKBGljb24YDCABKAlIA4gBAUIMCgpfbmFtZXNwYWNlQhMKEV9zb3VyY2VfcmVmZXJlbmNlQgwKCl9zb3VyY2VfaWRCBwoFX2ljb24ilAIKI0NvbW11bml0eVByZXNldE9wZXJhdGlvblJlc3BvbnNlRHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIWCglwcmVzZXRfaWQYAiABKAlIAIgBARISCgVlcnJvchgDIAEoCUgBiAEBEksKDGluc3RhbGxhdGlvbhgEIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SSQoLZGlhZ25vc3RpY3MYBSADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG9CDAoKX3ByZXNldF9pZEIICgZfZXJyb3IisgIKIENvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvEhYKDmFyY2hpdmVfYmFzZTY0GAEgASgJEh8KEmV4cGVjdGVkX3ByZXNldF9pZBgCIAEoCUgAiAEBEh0KEGV4cGVjdGVkX3ZlcnNpb24YAyABKAlIAYgBARIcCg9leHBlY3RlZF9zaGEyNTYYBCABKAlIAogBARIWCglwdWJsaXNoZXIYBSABKAlIA4gBARIdChBzb3VyY2VfcmVmZXJlbmNlGAYgASgJSASIAQFCFQoTX2V4cGVjdGVkX3ByZXNldF9pZEITChFfZXhwZWN0ZWRfdmVyc2lvbkISChBfZXhwZWN0ZWRfc2hhMjU2QgwKCl9wdWJsaXNoZXJCEwoRX3NvdXJjZV9yZWZlcmVuY2UiMwogQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8SDwoHZW5hYmxlZBgBIAEoCDLMBQoXQ29tbXVuaXR5UHJlc2V0c1NlcnZpY2USfwoUTGlzdENvbW11bml0eVByZXNldHMSMi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdENvbW11bml0eVByZXNldHNSZXF1ZXN0GjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UShQEKFkluc3RhbGxDb21tdW5pdHlQcmVzZXQSNC5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNS5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlc3BvbnNlEo4BChlTZXRDb21tdW5pdHlQcmVzZXRFbmFibGVkEjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXF1ZXN0GjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXNwb25zZRKLAQoYVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0EjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVzcG9uc2USiAEKF1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzEjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVxdWVzdBo2LmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZWZyZXNoQ29tbXVuaXR5UHJlc2V0c1Jlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ne]),qo=oe("CihoYWdpY29kZS9jb21tdW5pdHkvdjEvcHJlc2V0X3Rhc2tzLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiHQobR2V0UHJlc2V0VGFza0NhdGFsb2dSZXF1ZXN0ImMKHEdldFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8ibwoiQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrUmVxdWVzdER0byJzCiNDaGVja1ByZXNldFRhc2tSZXF1aXJlbWVudHNSZXNwb25zZRJMCgZyZXN1bHQYASABKAsyPC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tSZXNwb25zZUR0byIeChxMaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0ImIKHUxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hU3VtbWFyeUR0byI0ChpHZXRQcmVzZXRUYXNrU2NoZW1hUmVxdWVzdBIWCg5wcmVzZXRfdGFza19pZBgBIAEoCSJhChtHZXRQcmVzZXRUYXNrU2NoZW1hUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDcmVhdGlvblNjaGVtYUR0byLKAQogUHJlc2V0VGFza0NhdGFsb2dEaXNhYmxlZEl0ZW1EdG8SCgoCaWQYASABKAkSEAoIZ3JvdXBfaWQYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSDgoGc3RhdHVzGAQgASgJEhgKEHBsdWdpbl9yb290X3BhdGgYBSABKAkSSQoLZGlhZ25vc3RpY3MYBiADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG8iPQodUHJlc2V0VGFza0FnZW50UmVxdWlyZW1lbnREdG8SDAoEbW9kZRgBIAEoCRIOCgZhZ2VudHMYAiADKAki6gEKFFByZXNldFRhc2tDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhIKBXNraWxsGAUgASgJSACIAQESEAoDdXJsGAYgASgJSAGIAQESFgoJZG9jc19zbHVnGAcgASgJSAKIAQESHQoQcHJlbHVkZV90ZW1wbGF0ZRgIIAEoCUgDiAEBQggKBl9za2lsbEIGCgRfdXJsQgwKCl9kb2NzX3NsdWdCEwoRX3ByZWx1ZGVfdGVtcGxhdGUiNgoZUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgV0aXRsZRgCIAEoCSLMAQobUHJlc2V0VGFza0NvbW1hbmRDYXRhbG9nRHRvEhQKDHBhcmFtZXRlcl9pZBgBIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgCIAEoCRJACgZncm91cHMYAyADKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxI9Cghjb21tYW5kcxgEIAMoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tbWFuZER0byJWChpQcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxIOCgZsZWdhY3kYASABKAkSDwoHYmluZGluZxgCIAEoCRIXCg9kaWFnbm9zdGljX2NvZGUYAyABKAkidAoWUHJlc2V0VGFza0V4ZWN1dGlvbkR0bxIWCg5zY2hlbWFfdmVyc2lvbhgBIAEoCRIQCghzdHJhdGVneRgCIAEoCRIcCg9leHRlbnNpb25fcG9pbnQYAyABKAlIAIgBAUISChBfZXh0ZW5zaW9uX3BvaW50Ip8CChlQcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEg0KBWlucHV0GAEgASgJEh0KEHByb21wdF9wYXJhbWV0ZXIYAiABKAlIAIgBARIZCgxtZXRhZGF0YV9rZXkYAyABKAlIAYgBARIQCghyZXF1aXJlZBgEIAEoCBIVCghwcm9kdWNlchgFIAEoCUgCiAEBEhcKCnZhbHVlX3R5cGUYBiABKAlIA4gBARIWCgl0cmFuc2Zvcm0YByABKAlIBIgBARIPCgdhbGlhc2VzGAggAygJQhMKEV9wcm9tcHRfcGFyYW1ldGVyQg8KDV9tZXRhZGF0YV9rZXlCCwoJX3Byb2R1Y2VyQg0KC192YWx1ZV90eXBlQgwKCl90cmFuc2Zvcm0iOAoYUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvEg0KBXZhbHVlGAEgASgJEg0KBWxhYmVsGAIgASgJIt4DCiBQcmVzZXRUYXNrRmllbGRDb21wb25lbnRQcm9wc0R0bxIgChN0YXJnZXRfc2VsZWN0aW9uX2lkGAEgASgJSACIAQESFwoKZW1wdHlfdGV4dBgCIAEoCUgBiAEBEiMKFmFsbG93X291dHB1dF9zZWxlY3Rpb24YAyABKAhIAogBARIlChhyZXF1aXJlX291dHB1dF9zZWxlY3Rpb24YBCABKAhIA4gBARIYCgtlbXB0eV90aXRsZRgFIAEoCUgEiAEBEh4KEWVtcHR5X2Rlc2NyaXB0aW9uGAYgASgJSAWIAQESHQoQcmVxdWlyZWRfbWVzc2FnZRgHIAEoCUgGiAEBEkAKB29wdGlvbnMYCCADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvQhYKFF90YXJnZXRfc2VsZWN0aW9uX2lkQg0KC19lbXB0eV90ZXh0QhkKF19hbGxvd19vdXRwdXRfc2VsZWN0aW9uQhsKGV9yZXF1aXJlX291dHB1dF9zZWxlY3Rpb25CDgoMX2VtcHR5X3RpdGxlQhQKEl9lbXB0eV9kZXNjcmlwdGlvbkITChFfcmVxdWlyZWRfbWVzc2FnZSL3AgoXUHJlc2V0VGFza1BhbmVsRmllbGREdG8SCgoCaWQYASABKAkSEAoIcmVuZGVyZXIYAiABKAkSEgoKaW5wdXRfdHlwZRgDIAEoCRISCgp2YWx1ZV90eXBlGAQgASgJEhIKBWxhYmVsGAUgASgJSACIAQESEQoEaGludBgGIAEoCUgBiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAKIAQESEAoIcmVxdWlyZWQYCCABKAgSEwoGb3V0cHV0GAkgASgJSAOIAQESGwoOc2VsZWN0aW9uX21vZGUYCiABKAlIBIgBARJQCg9jb21wb25lbnRfcHJvcHMYCyABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkQ29tcG9uZW50UHJvcHNEdG9CCAoGX2xhYmVsQgcKBV9oaW50Qg4KDF9wbGFjZWhvbGRlckIJCgdfb3V0cHV0QhEKD19zZWxlY3Rpb25fbW9kZSJ3ChlQcmVzZXRUYXNrUGFuZWxTZWN0aW9uRHRvEgoKAmlkGAEgASgJEg4KBmxheW91dBgCIAEoCRI+CgZmaWVsZHMYAyADKAsyLi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BhbmVsRmllbGREdG8iyQEKIVByZXNldFRhc2tQcm9tcHRWYXJpYW50U3VtbWFyeUR0bxIKCgJpZBgBIAEoCRJSCgVtYXRjaBgCIAMoCzJDLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUHJvbXB0VmFyaWFudFN1bW1hcnlEdG8uTWF0Y2hFbnRyeRpECgpNYXRjaEVudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi/gEKIlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SDAoEdHlwZRgBIAEoCRIWCg5kZWZhdWx0X2xvY2FsZRgCIAEoCRIZChFzdXBwb3J0ZWRfbG9jYWxlcxgDIAMoCRIRCglzZWxlY3RvcnMYBCADKAkSSgoIdmFyaWFudHMYBSADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1Byb21wdFZhcmlhbnRTdW1tYXJ5RHRvEiAKE2ZhbGxiYWNrX3ZhcmlhbnRfaWQYBiABKAlIAIgBAUIWChRfZmFsbGJhY2tfdmFyaWFudF9pZCJFChhQcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SDAoEdHlwZRgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBW5hbWVzGAMgAygJIqoDCh5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8SEQoJc2NlbmVfa2V5GAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB3N1bW1hcnkYAyABKAkSYQoPdGl0bGVfYnlfbG9jYWxlGAQgAygLMkguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZVJlZ2lzdHJhdGlvbkR0by5UaXRsZUJ5TG9jYWxlRW50cnkSZQoRc3VtbWFyeV9ieV9sb2NhbGUYBSADKAsySi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjZW5lUmVnaXN0cmF0aW9uRHRvLlN1bW1hcnlCeUxvY2FsZUVudHJ5Eh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgGIAEoBRo0ChJUaXRsZUJ5TG9jYWxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo2ChRTdW1tYXJ5QnlMb2NhbGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIo8BChJQcmVzZXRUYXNrU2NlbmVEdG8SEAoIcHJvdmlkZXIYASABKAkSGQoRZGVmYXVsdF9zY2VuZV9rZXkYAiABKAkSTAoNcmVnaXN0cmF0aW9ucxgDIAMoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8ivAEKHFByZXNldFRhc2tUYXJnZXRTZWxlY3Rpb25EdG8SCgoCaWQYASABKAkSDAoEa2luZBgCIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgDIAEoCRIcChRhbGxvd2VkX2FjY2Vzc190eXBlcxgEIAMoCRIOCgZvdXRwdXQYBSABKAkSGQoMc2NvcGVfc291cmNlGAYgASgJSACIAQESEAoIcmVxdWlyZWQYByABKAhCDwoNX3Njb3BlX3NvdXJjZSKBCQoYUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSEQoEaWNvbhgFIAEoCUgAiAEBEhQKDGRpc3BsYXlfbmFtZRgGIAEoCRINCgV0aXRsZRgHIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIVCg1kZWZhdWx0X3RpdGxlGAkgASgJEhQKDHN1Ym1pdF9sYWJlbBgKIAEoCRIYChBzdWJtaXR0aW5nX2xhYmVsGAsgASgJEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYDCABKAkSGwoTYWxsb3dfaGVyb19vdmVycmlkZRgNIAEoCBISCgpzb3J0X29yZGVyGA4gASgFEhkKEXN1cHBvcnRlZF9sb2NhbGVzGA8gAygJEkIKCHNlY3Rpb25zGBAgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQYW5lbFNlY3Rpb25EdG8SSwoPY29tbWFuZF9jYXRhbG9nGBEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kQ2F0YWxvZ0R0bxJOChF0YXJnZXRfc2VsZWN0aW9ucxgSIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrVGFyZ2V0U2VsZWN0aW9uRHRvEk8KEWFnZW50X3JlcXVpcmVtZW50GBMgASgLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tBZ2VudFJlcXVpcmVtZW50RHRvEkUKDHJlcXVpcmVtZW50cxgUIAMoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SUgoPcHJvbXB0X3N0cmF0ZWd5GBUgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SQAoJZXhlY3V0aW9uGBYgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tFeGVjdXRpb25EdG8SSAoNY29tcGF0aWJpbGl0eRgXIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxJICg5pbnB1dF9iaW5kaW5ncxgYIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEjgKBXNjZW5lGBkgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZUR0bxIjChZzZXJ2ZXJfZGVjaWRlZF9oZXJvX2lkGBogASgJSAGIAQFCBwoFX2ljb25CGQoXX3NlcnZlcl9kZWNpZGVkX2hlcm9faWQirwEKHFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEk8KDmRpc2FibGVkX2l0ZW1zGAIgAygLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nRGlzYWJsZWRJdGVtRHRvIkgKJ1ByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrRGlhZ25vc3RpY0R0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkitQEKIVByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0bxIMCgR0eXBlGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGcGFzc2VkGAMgASgIEg8KB21lc3NhZ2UYBCABKAkSUwoLZGlhZ25vc3RpY3MYBSADKAsyPi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tEaWFnbm9zdGljRHRvIqMBCiVQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1Jlc3BvbnNlRHRvEhYKDnByZXNldF90YXNrX2lkGAEgASgJEhIKCmFsbF9wYXNzZWQYAiABKAgSTgoMcmVxdWlyZW1lbnRzGAMgAygLMjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0byI+CiRQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1JlcXVlc3REdG8SFgoOcHJlc2V0X3Rhc2tfaWQYASABKAkiygEKGlByZXNldFRhc2tTY2hlbWFTdW1tYXJ5RHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSDQoFdGl0bGUYBSABKAkSEwoLZGVzY3JpcHRpb24YBiABKAkSFAoMdGFyZ2V0X2NvdW50GAcgASgFEhUKDWNvbW1hbmRfY291bnQYCCABKAUSFwoPcGFyYW1ldGVyX2NvdW50GAkgASgFIngKGlByZXNldFRhc2tTY2hlbWFDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhAKA3VybBgFIAEoCUgAiAEBQgYKBF91cmwi0gEKG1ByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxIUCgxwYXJhbWV0ZXJfaWQYASABKAkSFgoOc2VsZWN0aW9uX21vZGUYAiABKAkSQAoGZ3JvdXBzGAMgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kR3JvdXBEdG8SQwoIY29tbWFuZHMYBCADKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYUNvbW1hbmREdG8iOwoYUHJlc2V0VGFza1NjaGVtYUFsaWFzRHRvEgsKA2tleRgBIAEoCRISCgpkZXByZWNhdGVkGAIgASgIIrQCChxQcmVzZXRUYXNrU2NoZW1hUGFyYW1ldGVyRHRvEgsKA2tleRgBIAEoCRIOCgZvcmlnaW4YAiABKAkSFQoIcHJvZHVjZXIYAyABKAlIAIgBARISCgp2YWx1ZV90eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEg0KBWxhYmVsGAYgASgJEhEKBGhpbnQYByABKAlIAYgBARJACgdvcHRpb25zGAggAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tGaWVsZE9wdGlvbkR0bxJACgdhbGlhc2VzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFBbGlhc0R0b0ILCglfcHJvZHVjZXJCBwoFX2hpbnQihwEKGlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEg4KBm1ldGhvZBgBIAEoCRIMCgRwYXRoGAIgASgJEhwKFHByZXNldF90YXNrX2lkX2ZpZWxkGAMgASgJEhQKDGxvY2FsZV9maWVsZBgEIAEoCRIXCg9yZXF1aXJlZF9maWVsZHMYBSADKAkieAokUHJlc2V0VGFza1NjaGVtYVNjZW5lUmVnaXN0cmF0aW9uRHRvEhEKCXNjZW5lX2tleRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgEIAEoBSKcAQoZUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxIQCghwcm92aWRlchgBIAEoCRIZChFkZWZhdWx0X3NjZW5lX2tleRgCIAEoCRJSCg1yZWdpc3RyYXRpb25zGAMgAygLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFTY2VuZVJlZ2lzdHJhdGlvbkR0byL0AQoZUHJlc2V0VGFza1NjaGVtYVRhcmdldER0bxIKCgJpZBgBIAEoCRIMCgRraW5kGAIgASgJEhYKDnNlbGVjdGlvbl9tb2RlGAMgASgJEhAKCHJlcXVpcmVkGAQgASgIEhwKFGFsbG93ZWRfYWNjZXNzX3R5cGVzGAUgAygJEhkKDHNjb3BlX3NvdXJjZRgGIAEoCUgAiAEBEhMKC3JlcXVlc3Rfa2V5GAcgASgJEh4KEXNjb3BlX3JlcXVlc3Rfa2V5GAggASgJSAGIAQFCDwoNX3Njb3BlX3NvdXJjZUIUChJfc2NvcGVfcmVxdWVzdF9rZXkiegoYUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYASABKAkSQQoHdGFyZ2V0cxgCIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hVGFyZ2V0RHRvIuMEChtQcmVzZXRUYXNrQ3JlYXRpb25TY2hlbWFEdG8SCgoCaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIOCgZsb2NhbGUYAyABKAkSDQoFdGl0bGUYBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSPgoFc2NvcGUYBiABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEkQKCGNvbW1hbmRzGAcgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxJHCgpwYXJhbWV0ZXJzGAggAygLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFQYXJhbWV0ZXJEdG8SRQoMcmVxdWlyZW1lbnRzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudER0bxJACgZzY2VuZXMYCiABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxJCCgdyZXF1ZXN0GAsgASgLMjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEi0KDGlucHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKAoHZXhhbXBsZRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QyrwQKElByZXNldFRhc2tzU2VydmljZRJ/ChRHZXRQcmVzZXRUYXNrQ2F0YWxvZxIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRQcmVzZXRUYXNrQ2F0YWxvZ1JlcXVlc3QaMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza0NhdGFsb2dSZXNwb25zZRKUAQobQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzEjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoZWNrUHJlc2V0VGFza1JlcXVpcmVtZW50c1JlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVzcG9uc2USggEKFUxpc3RQcmVzZXRUYXNrU2NoZW1hcxIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEnwKE0dldFByZXNldFRhc2tTY2hlbWESMS5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ue,Yh]),Ch=v(qo,5),Bh=v(qo,7),wh=We(qo,0),re=oe("CiloYWdpY29kZS9jb21tdW5pdHkvdjEvc2tpbGxfZ2FsbGVyeS5wcm90bxIVaGFnaWNvZGUuY29tbXVuaXR5LnYxIhcKFUdldExvY2FsU2tpbGxzUmVxdWVzdCJfChZHZXRMb2NhbFNraWxsc1Jlc3BvbnNlEkUKBnJlc3VsdBgBIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8iLAocR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBIMCgRzbHVnGAEgASgJIl0KHUdldEJ1aWx0SW5Ta2lsbERldGFpbFJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5CdWlsdEluU2tpbGxEZXRhaWxEdG8iYAoaVW5pbnN0YWxsTG9jYWxTa2lsbFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vbmluc3RhbGxMb2NhbFNraWxsUmVxdWVzdER0byJiChtVbmluc3RhbGxMb2NhbFNraWxsUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXN1bHREdG8icAoiU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVxdWVzdBJKCgRib2R5GAEgASgLMjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3REdG8icgojU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2USSwoGcmVzdWx0GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0byI2ChZHZXRTa2lsbEdhbGxlcnlSZXF1ZXN0EhIKBXF1ZXJ5GAEgASgJSACIAQFCCAoGX3F1ZXJ5IlkKF0dldFNraWxsR2FsbGVyeVJlc3BvbnNlEj4KBnJlc3VsdBgBIAEoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlSZXNwb25zZUR0byI6ChxHZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCSJdCh1HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXNwb25zZRI8CgZyZXN1bHQYASABKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5RGV0YWlsRHRvIjkKG0dldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkiWwocR2V0U2tpbGxHYWxsZXJ5QXVkaXRSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5QXVkaXREdG8itAEKHFNraWxsR2FsbGVyeUF1ZGl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSEQoEcmlzaxgCIAEoCUgAiAEBEhMKBmFsZXJ0cxgDIAEoBUgBiAEBEhIKBXNjb3JlGAQgASgFSAKIAQESGAoLYW5hbHl6ZWRfYXQYBSABKAlIA4gBAUIHCgVfcmlza0IJCgdfYWxlcnRzQggKBl9zY29yZUIOCgxfYW5hbHl6ZWRfYXQijgEKFFNraWxsR2FsbGVyeUF1ZGl0RHRvEgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCRISCgpza2lsbF9zbHVnGAMgASgJEkYKCXByb3ZpZGVycxgEIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlBdWRpdFByb3ZpZGVyRHRvIkIKJEdldFNraWxsR2FsbGVyeUluc3RhbGxDb250ZXh0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkibQolR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHREdG8iIQofR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVxdWVzdCJuCiBHZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8ibgohVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0EkkKBGJvZHkYASABKAsyOy5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvInAKIlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVzcG9uc2USSgoGcmVzdWx0GAEgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyTGlzdFJlc3BvbnNlRHRvIm4KIURlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdER0byJwCiJEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckxpc3RSZXNwb25zZUR0byIjCiFSZXNldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QicAoiUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8iUgoTSW5zdGFsbFNraWxsUmVxdWVzdBI7CgRib2R5GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3REdG8iVAoUSW5zdGFsbFNraWxsUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlc3VsdER0byL3AQoYTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvEg8KB2VuYWJsZWQYASABKAgSFAoHdmVyc2lvbhgCIAEoCUgAiAEBEhMKBnNvdXJjZRgDIAEoCUgBiAEBEhcKCnJlcG9zaXRvcnkYBCABKAlIAogBARIQCgNyZWYYBSABKAlIA4gBARIRCgRwYXRoGAYgASgJSASIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAWIAQFCCgoIX3ZlcnNpb25CCQoHX3NvdXJjZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQg8KDV9jb250ZW50X2hhc2givAIKI0xvY2FsU2tpbGxNYW5hZ2VkSW5zdGFsbE1ldGFkYXRhRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgFEhAKCHNraWxsX2lkGAIgASgJEg4KBnNvdXJjZRgDIAEoCRISCgpza2lsbF9zbHVnGAQgASgJEhQKB3ZlcnNpb24YBSABKAlIAIgBARIhChRub3JtYWxpemVkX3NraWxsX2tleRgGIAEoCUgBiAEBEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSAKIAQESMwoPcmVjb3JkZWRfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfdmVyc2lvbkIXChVfbm9ybWFsaXplZF9za2lsbF9rZXlCFAoSX2luc3RhbGxfcmVmZXJlbmNlIosCChFMb2NhbFNraWxsSXRlbUR0bxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBXNjb3BlGAMgASgJEgwKBHBhdGgYBCABKAkSDgoGYWdlbnRzGAUgAygJElwKGG1hbmFnZWRfaW5zdGFsbF9tZXRhZGF0YRgGIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsTWFuYWdlZEluc3RhbGxNZXRhZGF0YUR0bxIOCgZvcmlnaW4YByABKAkSQQoIYnVpbHRfaW4YCCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvIo8BCh5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNwoFaXRlbXMYAiADKAsyKC5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEl0ZW1EdG8isQEKG0J1aWx0SW5Ta2lsbERldGFpbFNvdXJjZUR0bxIRCgR0eXBlGAEgASgJSACIAQESFwoKcmVwb3NpdG9yeRgCIAEoCUgBiAEBEhAKA3JlZhgDIAEoCUgCiAEBEhEKBHBhdGgYBCABKAlIA4gBARIQCgN1cmwYBSABKAlIBIgBAUIHCgVfdHlwZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQgYKBF91cmwiPAoYQnVpbHRJblNraWxsRmlsZUVudHJ5RHRvEgwKBHBhdGgYASABKAkSEgoKc2l6ZV9ieXRlcxgCIAEoAyI5ChtCdWlsdEluU2tpbGxNZXRhZGF0YVBhaXJEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJIo4EChVCdWlsdEluU2tpbGxEZXRhaWxEdG8SDAoEc2x1ZxgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhQKB3ZlcnNpb24YBCABKAlIAIgBARIPCgdlbmFibGVkGAUgASgIEkQKCG1ldGFkYXRhGAYgAygLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbE1ldGFkYXRhUGFpckR0bxJCCgZzb3VyY2UYByABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQnVpbHRJblNraWxsRGV0YWlsU291cmNlRHRvEhkKDGNvbnRlbnRfaGFzaBgIIAEoCUgBiAEBEj4KBWZpbGVzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbEZpbGVFbnRyeUR0bxISCgpmaWxlX2NvdW50GAogASgFEhgKEHRvdGFsX3NpemVfYnl0ZXMYCyABKAMSFwoPZmlsZXNfdHJ1bmNhdGVkGAwgASgIEhUKDWxpY2Vuc2VfZmlsZXMYDSADKAkSDAoEYm9keRgOIAEoCRIWCg5ib2R5X3RydW5jYXRlZBgPIAEoCBIXCg9ib2R5X3NpemVfYnl0ZXMYECABKANCCgoIX3ZlcnNpb25CDwoNX2NvbnRlbnRfaGFzaCLXAQocVW5pbnN0YWxsTG9jYWxTa2lsbFJlc3VsdER0bxISCgpza2lsbF9uYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIZCgx1c2VyX21lc3NhZ2UYAyABKAlIAIgBARIfChJkaWFnbm9zdGljX21lc3NhZ2UYBCABKAlIAYgBARIvCgtvY2N1cnJlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX3VzZXJfbWVzc2FnZUIVChNfZGlhZ25vc3RpY19tZXNzYWdlIjMKHVVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0RHRvEhIKCnNraWxsX25hbWUYASABKAkivAEKJFNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0bxIMCgRzbHVnGAEgASgJEg8KB2VuYWJsZWQYAiABKAgSEQoJc3VjY2VlZGVkGAMgASgIEhkKDHVzZXJfbWVzc2FnZRgEIAEoCUgAiAEBEh8KEmRpYWdub3N0aWNfbWVzc2FnZRgFIAEoCUgBiAEBQg8KDV91c2VyX21lc3NhZ2VCFQoTX2RpYWdub3N0aWNfbWVzc2FnZSJGCiVTZXRCdWlsdEluU2tpbGxBdmFpbGFiaWxpdHlSZXF1ZXN0RHRvEgwKBHNsdWcYASABKAkSDwoHZW5hYmxlZBgCIAEoCCKlAgoiU2tpbGxHYWxsZXJ5UmVwb3NpdG9yeURpc2NvdmVyeUR0bxIMCgRtb2RlGAEgASgJEhwKD3JlcXVlc3RlZF9xdWVyeRgCIAEoCUgAiAEBEh4KEW5vcm1hbGl6ZWRfc291cmNlGAMgASgJSAGIAQESGwoOcmVwb3NpdG9yeV91cmwYBCABKAlIAogBARIPCgdvdXRjb21lGAUgASgJEhcKCmVycm9yX2NvZGUYBiABKAlIA4gBARIUCgdtZXNzYWdlGAcgASgJSASIAQFCEgoQX3JlcXVlc3RlZF9xdWVyeUIUChJfbm9ybWFsaXplZF9zb3VyY2VCEQoPX3JlcG9zaXRvcnlfdXJsQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIuYBCiNUcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSHgoRbWF0Y2hlZF9ydWxlX3R5cGUYBCABKAlIAIgBARIfChJtYXRjaGVkX3J1bGVfdmFsdWUYBSABKAlIAYgBARIRCglpc19wcmVzZXQYBiABKAhCFAoSX21hdGNoZWRfcnVsZV90eXBlQhUKE19tYXRjaGVkX3J1bGVfdmFsdWUiwwEKFFNraWxsR2FsbGVyeVNraWxsRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc291cmNlGAMgASgJEhAKCGluc3RhbGxzGAQgASgFEhkKEWlzX3RydXN0ZWRfc291cmNlGAUgASgIElQKEHRydXN0ZWRfcHJvdmlkZXIYBiABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJUcnVzdFN1bW1hcnlEdG8i5AEKF1NraWxsR2FsbGVyeVJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKBWl0ZW1zGAIgAygLMisuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVNraWxsRHRvElcKFHJlcG9zaXRvcnlfZGlzY292ZXJ5GAMgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVJlcG9zaXRvcnlEaXNjb3ZlcnlEdG8i7AUKFVNraWxsR2FsbGVyeURldGFpbER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhwKD3JlcG9zaXRvcnlfbmFtZRgFIAEoCUgBiAEBEiEKFHJlcG9zaXRvcnlfZnVsbF9uYW1lGAYgASgJSAKIAQESGwoOcmVwb3NpdG9yeV91cmwYByABKAlIA4gBARImChlyZXBvc2l0b3J5X2RlZmF1bHRfYnJhbmNoGAggASgJSASIAQESHwoScmVwb3NpdG9yeV9wcml2YXRlGAkgASgISAWIAQESFgoOaXNfaW5zdGFsbGFibGUYCiABKAgSGQoRaXNfdHJ1c3RlZF9zb3VyY2UYCyABKAgSVAoQdHJ1c3RlZF9wcm92aWRlchgMIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxIeChFpbnN0YWxsX3JlZmVyZW5jZRgNIAEoCUgGiAEBEiQKF2luc3RhbGxfY29tbWFuZF9wcmV2aWV3GA4gASgJSAeIAQESHAoPaW5zdGFsbF92ZXJzaW9uGA8gASgJSAiIAQESGQoMaW5zdGFsbF9oaW50GBAgASgJSAmIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9yZXBvc2l0b3J5X25hbWVCFwoVX3JlcG9zaXRvcnlfZnVsbF9uYW1lQhEKD19yZXBvc2l0b3J5X3VybEIcChpfcmVwb3NpdG9yeV9kZWZhdWx0X2JyYW5jaEIVChNfcmVwb3NpdG9yeV9wcml2YXRlQhQKEl9pbnN0YWxsX3JlZmVyZW5jZUIaChhfaW5zdGFsbF9jb21tYW5kX3ByZXZpZXdCEgoQX2luc3RhbGxfdmVyc2lvbkIPCg1faW5zdGFsbF9oaW50Iq4DCh1Ta2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIWCg5pc19pbnN0YWxsYWJsZRgEIAEoCBIZChFpc190cnVzdGVkX3NvdXJjZRgFIAEoCBJUChB0cnVzdGVkX3Byb3ZpZGVyGAYgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyVHJ1c3RTdW1tYXJ5RHRvEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSACIAQESJAoXaW5zdGFsbF9jb21tYW5kX3ByZXZpZXcYCCABKAlIAYgBARIcCg9pbnN0YWxsX3ZlcnNpb24YCSABKAlIAogBARIZCgxpbnN0YWxsX2hpbnQYCiABKAlIA4gBAUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCGgoYX2luc3RhbGxfY29tbWFuZF9wcmV2aWV3QhIKEF9pbnN0YWxsX3ZlcnNpb25CDwoNX2luc3RhbGxfaGludCJFCiBUcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0bxISCgptYXRjaF90eXBlGAEgASgJEg0KBXZhbHVlGAIgASgJIo8CChdUcnVzdGVkU2tpbGxQcm92aWRlckR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSEQoJaXNfcHJlc2V0GAQgASgIEhIKCmlzX2VuYWJsZWQYBSABKAgSEgoKc29ydF9vcmRlchgGIAEoBRISCgpydWxlX2NvdW50GAcgASgFEhcKD3NvdXJjZV9leGFtcGxlcxgIIAMoCRJMCgttYXRjaF9ydWxlcxgJIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0byKrAQojVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmVyc2lvbhgCIAEoBRI9CgVpdGVtcxgDIAMoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckR0byLxAQokVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtiYWRnZV9sYWJlbBgDIAEoCUgAiAEBEhIKCmlzX2VuYWJsZWQYBCABKAgSEgoKc29ydF9vcmRlchgFIAEoBRJMCgttYXRjaF9ydWxlcxgGIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0b0IOCgxfYmFkZ2VfbGFiZWwiOwokRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJIrgDChVJbnN0YWxsU2tpbGxSZXN1bHREdG8SEAoIc2tpbGxfaWQYASABKAkSDgoGc291cmNlGAIgASgJEhIKCnNraWxsX3NsdWcYAyABKAkSIQoUbm9ybWFsaXplZF9za2lsbF9rZXkYBCABKAlIAIgBARIeChFpbnN0YWxsX3JlZmVyZW5jZRgFIAEoCUgBiAEBEhwKD2NvbW1hbmRfcHJldmlldxgGIAEoCUgCiAEBEhQKB3ZlcnNpb24YByABKAlIA4gBARIOCgZzdGF0dXMYCCABKAkSGQoMdXNlcl9tZXNzYWdlGAkgASgJSASIAQESHwoSZGlhZ25vc3RpY19tZXNzYWdlGAogASgJSAWIAQESLwoLb2NjdXJyZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9ub3JtYWxpemVkX3NraWxsX2tleUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCEgoQX2NvbW1hbmRfcHJldmlld0IKCghfdmVyc2lvbkIPCg1fdXNlcl9tZXNzYWdlQhUKE19kaWFnbm9zdGljX21lc3NhZ2UiagoWSW5zdGFsbFNraWxsUmVxdWVzdER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIUCgd2ZXJzaW9uGAQgASgJSACIAQFCCgoIX3ZlcnNpb24iGwoZTGlzdFVzZXJTa2lsbEJhc2VzUmVxdWVzdCJfChpMaXN0VXNlclNraWxsQmFzZXNSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8iWgoXQWRkVXNlclNraWxsQmFzZVJlcXVlc3QSPwoEYm9keRgBIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdER0byJZChhBZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVtb3ZlVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJiChtSZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlbW92ZVVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVzY2FuVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJcChtSZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iYAoaU2V0VXNlclNraWxsRW5hYmxlZFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdER0byJiChtTZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldFVzZXJTa2lsbEVuYWJsZWRSZXN1bHREdG8i+AEKEFVzZXJTa2lsbEJhc2VEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSDAoEcGF0aBgDIAEoCRIOCgZzdGF0dXMYBCABKAkSGgoNc3RhdHVzX3JlYXNvbhgFIAEoCUgAiAEBEhsKDnN0YXR1c19tZXNzYWdlGAYgASgJSAGIAQESMwoGc2tpbGxzGAcgAygLMiMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbER0bxIYChBza2lsbHNfdHJ1bmNhdGVkGAggASgIQhAKDl9zdGF0dXNfcmVhc29uQhEKD19zdGF0dXNfbWVzc2FnZSL9AQoMVXNlclNraWxsRHRvEgwKBHNsdWcYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg8KB2VuYWJsZWQYBCABKAgSDgoGc3RhdHVzGAUgASgJEhsKDmNvbmZsaWN0c193aXRoGAYgASgJSAGIAQESPAoIcHJvYmxlbXMYByADKAsyKi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsUHJvYmxlbUR0bxIKCgJpZBgIIAEoCRIMCgRwYXRoGAkgASgJQg4KDF9kZXNjcmlwdGlvbkIRCg9fY29uZmxpY3RzX3dpdGgiNAoTVXNlclNraWxsUHJvYmxlbUR0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkiSAoaQWRkVXNlclNraWxsQmFzZVJlcXVlc3REdG8SDAoEcGF0aBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBQggKBl9sYWJlbCKTAQoaVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8SEQoJc3VjY2VlZGVkGAEgASgIEhkKDHVzZXJfbWVzc2FnZRgCIAEoCUgAiAEBEjYKBWJhc2VzGAMgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VEdG9CDwoNX3VzZXJfbWVzc2FnZSKOAQoWVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESNQoEYmFzZRgDIAEoCzInLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vc2VyU2tpbGxCYXNlRHRvQg8KDV91c2VyX21lc3NhZ2UibgocUmVtb3ZlVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESDwoHYmFzZV9pZBgDIAEoCUIPCg1fdXNlcl9tZXNzYWdlIlUKHVNldFVzZXJTa2lsbEVuYWJsZWRSZXF1ZXN0RHRvEg8KB2Jhc2VfaWQYASABKAkSEgoKc2tpbGxfc2x1ZxgCIAEoCRIPCgdlbmFibGVkGAMgASgIIpMBChxTZXRVc2VyU2tpbGxFbmFibGVkUmVzdWx0RHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIZCgx1c2VyX21lc3NhZ2UYAiABKAlIAIgBARIPCgdiYXNlX2lkGAMgASgJEhIKCnNraWxsX3NsdWcYBCABKAkSDwoHZW5hYmxlZBgFIAEoCEIPCg1fdXNlcl9tZXNzYWdlMtASChNTa2lsbEdhbGxlcnlTZXJ2aWNlEm0KDkdldExvY2FsU2tpbGxzEiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldExvY2FsU2tpbGxzUmVxdWVzdBotLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRMb2NhbFNraWxsc1Jlc3BvbnNlEoIBChVHZXRCdWlsdEluU2tpbGxEZXRhaWwSMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBo0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRCdWlsdEluU2tpbGxEZXRhaWxSZXNwb25zZRJ8ChNVbmluc3RhbGxMb2NhbFNraWxsEjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0GjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXNwb25zZRKUAQobU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5EjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2UScAoPR2V0U2tpbGxHYWxsZXJ5Ei0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeVJlcXVlc3QaLi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5UmVzcG9uc2USggEKFUdldFNraWxsR2FsbGVyeURldGFpbBIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeURldGFpbFJlc3BvbnNlEn8KFEdldFNraWxsR2FsbGVyeUF1ZGl0EjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBozLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlBdWRpdFJlc3BvbnNlEpoBCh1HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dBI7LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dFJlcXVlc3QaPC5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRKLAQoYR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzEjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USkQEKGlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyEjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBo5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5VcHNlcnRUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEpEBChpEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlchI4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5EZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlcXVlc3QaOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXNwb25zZRKRAQoaUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnMSOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXF1ZXN0GjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlc2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USZwoMSW5zdGFsbFNraWxsEiouaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3QaKy5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbFNraWxsUmVzcG9uc2USeQoSTGlzdFVzZXJTa2lsbEJhc2VzEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RVc2VyU2tpbGxCYXNlc1JlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFVzZXJTa2lsbEJhc2VzUmVzcG9uc2UScwoQQWRkVXNlclNraWxsQmFzZRIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVtb3ZlVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVzY2FuVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTU2V0VXNlclNraWxsRW5hYmxlZBIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2VCK6oCKFBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5Db21tdW5pdHkuVjFiBnByb3RvMw",[Ne]),Fh=v(re,1),kh=v(re,5),Uh=v(re,7),Jh=v(re,9),xh=v(re,11),Kh=v(re,13),zh=v(re,19),Lh=v(re,21),jh=v(re,23),Th=v(re,25),Hh=v(re,27),Qh=v(re,37),Mh=v(re,39),Oh=v(re,49),Dh=v(re,50),_h=v(re,52),$h=We(re,0),er=oe("CiVoYWdpY29kZS9wbGF0Zm9ybS92MS9zdGF0aXN0aWNzLnByb3RvEhRoYWdpY29kZS5wbGF0Zm9ybS52MSJ1ChhHZXRBZ2dyZWdhdGVkRGF0YVJlcXVlc3QSFQoNZm9yY2VfcmVmcmVzaBgBIAEoCBIlChhnaXRfYXV0b19yZWZyZXNoX2VuYWJsZWQYAiABKAhIAIgBAUIbChlfZ2l0X2F1dG9fcmVmcmVzaF9lbmFibGVkIl0KGUdldEFnZ3JlZ2F0ZWREYXRhUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8iHQobR2V0VG9rZW5Nb25pdG9yVXNhZ2VSZXF1ZXN0ImIKHEdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yVXNhZ2VTbmFwc2hvdER0byK/AQodR2V0VG9rZW5Nb25pdG9ySGlzdG9yeVJlcXVlc3QSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgAiAEBEhcKCnBhZ2VfdG9rZW4YBCABKAlIAYgBAUIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuImIKHkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRJACgZyZXN1bHQYASABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JIaXN0b3J5UGFnZUR0byKTAQoaVG9rZW5Nb25pdG9ySGlzdG9yeVBhZ2VEdG8SQwoHc2FtcGxlcxgBIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlTYW1wbGVEdG8SHAoPbmV4dF9wYWdlX3Rva2VuGAIgASgJSACIAQFCEgoQX25leHRfcGFnZV90b2tlbiKhAwocVG9rZW5Nb25pdG9ySGlzdG9yeVNhbXBsZUR0bxIzCg9vYnNlcnZlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGwoOZmFpbHVyZV9yZWFzb24YBCABKAlIAIgBARIVCghkYXRlX2tleRgFIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgGIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAcgASgBSAOIAQESQwoHcGVyaW9kcxgIIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlQZXJpb2REdG8SQwoHd2luZG93cxgJIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlXaW5kb3dEdG9CEQoPX2ZhaWx1cmVfcmVhc29uQgsKCV9kYXRlX2tleUIPCg1fdG90YWxfdG9rZW5zQgsKCV9jb3N0X3VzZCKOAwocVG9rZW5Nb25pdG9ySGlzdG9yeVBlcmlvZER0bxIOCgZwZXJpb2QYASABKAkSFAoMdG90YWxfdG9rZW5zGAIgASgDEhAKCGNvc3RfdXNkGAMgASgBEh4KEWNhY2hlX3JlYWRfdG9rZW5zGAQgASgDSACIAQESHwoSY2FjaGVfd3JpdGVfdG9rZW5zGAUgASgDSAGIAQESGgoNb3V0cHV0X3Rva2VucxgGIAEoA0gCiAEBEhkKDHRpbWVkX3Rva2VucxgHIAEoA0gDiAEBEiAKE3RpbWVkX291dHB1dF90b2tlbnMYCCABKANIBIgBARIeChF0aW1lZF9kdXJhdGlvbl9tcxgJIAEoA0gFiAEBQhQKEl9jYWNoZV9yZWFkX3Rva2Vuc0IVChNfY2FjaGVfd3JpdGVfdG9rZW5zQhAKDl9vdXRwdXRfdG9rZW5zQg8KDV90aW1lZF90b2tlbnNCFgoUX3RpbWVkX291dHB1dF90b2tlbnNCFAoSX3RpbWVkX2R1cmF0aW9uX21zIp0DChxUb2tlbk1vbml0b3JIaXN0b3J5V2luZG93RHRvEhAKCHByb3ZpZGVyGAEgASgJEhcKCnBsYW5fbGFiZWwYAiABKAlIAIgBARIXCg9wcm92aWRlcl9zdGF0dXMYAyABKAkSDAoEa2luZBgEIAEoCRISCgVsYWJlbBgFIAEoCUgBiAEBEhsKDndpbmRvd19taW51dGVzGAYgASgFSAKIAQESGQoMdXNlZF9wZXJjZW50GAcgASgBSAOIAQESHgoRcmVtYWluaW5nX3BlcmNlbnQYCCABKAFIBIgBARIxCg1yZXNldHNfYXRfdXRjGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVzb3VyY2VfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19wbGFuX2xhYmVsQggKBl9sYWJlbEIRCg9fd2luZG93X21pbnV0ZXNCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnQidQohR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2VSZXF1ZXN0EigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJmCiJHZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEkAKBnJlc3VsdBgBIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhvdXJseVVzYWdlRHRvItcCChpUb2tlbk1vbml0b3JIb3VybHlVc2FnZUR0bxIyCg5ob3VyX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXRjX29mZnNldF9taW51dGVzGAIgASgFEg4KBnRva2VucxgDIAEoAxIQCghjb3N0X3VzZBgEIAEoARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSACIAQESHgoRY2FjaGVfcmVhZF90b2tlbnMYBiABKANIAYgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYByABKANIAogBARIYChBvYnNlcnZlZF9zZWNvbmRzGAggASgFEhEKCWVzdGltYXRlZBgJIAEoCEIQCg5fb3V0cHV0X3Rva2Vuc0IUChJfY2FjaGVfcmVhZF90b2tlbnNCFQoTX2NhY2hlX3dyaXRlX3Rva2VucyIlCiNHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVxdWVzdCJgCiRHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0RHRvIkQKIEdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXF1ZXN0EhQKB21pbnV0ZXMYASABKAVIAIgBAUIKCghfbWludXRlcyJiCiFHZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVzcG9uc2USPQoGcmVzdWx0GAEgAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0U25hcHNob3QiOAoaR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QSEQoEZGF0ZRgBIAEoCUgAiAEBQgcKBV9kYXRlIlgKG0dldEhlcm9CYXR0bGVSZXBvcnRSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RHRvIkAKIEdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXF1ZXN0EhIKBXJhbmdlGAEgASgJSACIAQFCCAoGX3JhbmdlImcKIUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvIuwCChxHZXRIaXN0b3JpY2FsVGltZWxpbmVSZXF1ZXN0EhgKC2VudGl0eV90eXBlGAEgASgJSACIAQESFgoJZW50aXR5X2lkGAIgASgJSAGIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgCiAEBEhcKCnNlc3Npb25faWQYBCABKAlIA4gBARIzCg9yYW5nZV9zdGFydF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjEKDXJhbmdlX2VuZF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBmN1cnNvchgHIAEoCUgEiAEBEhYKCXBhZ2Vfc2l6ZRgIIAEoBUgFiAEBQg4KDF9lbnRpdHlfdHlwZUIMCgpfZW50aXR5X2lkQg0KC19wcm9qZWN0X2lkQg0KC19zZXNzaW9uX2lkQgkKB19jdXJzb3JCDAoKX3BhZ2Vfc2l6ZSJpCh1HZXRIaXN0b3JpY2FsVGltZWxpbmVSZXNwb25zZRJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvIiUKI0dldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXF1ZXN0InIKJEdldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VEdG8iqgEKFkFnZ3JlZ2F0aW9uTWV0YWRhdGFEdG8SLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg50b3RhbF9wcm9qZWN0cxgCIAEoBRIaChJ0b3RhbF9yZXBvc2l0b3JpZXMYAyABKAUSFwoPZmFpbGVkX3Byb2plY3RzGAQgASgFEhQKDGhhc19mYWlsdXJlcxgFIAEoCCKyBQoYUmVwb3NpdG9yeUFnZ3JlZ2F0aW9uRHRvEhEKBGNvZGUYASABKAlIAIgBARIMCgRuYW1lGAIgASgJEgwKBHBhdGgYAyABKAkSFQoNcmVsYXRpdmVfcGF0aBgEIAEoCRIUCgxkaXNwbGF5X25hbWUYBSABKAkSEQoEdHlwZRgGIAEoCUgBiAEBEgwKBHRhZ3MYByADKAkSEQoEaWNvbhgIIAEoCUgCiAEBEhAKA3VybBgJIAEoCUgDiAEBEhgKEGNvbGxhcHNlX3RvX21vcmUYCiABKAgSGQoRaXNfdmFsaWRfZ2l0X3JlcG8YCyABKAgSHAoUZ2l0X3N0YXR1c19hdmFpbGFibGUYDCABKAgSEwoGYnJhbmNoGA0gASgJSASIAQESHwoXaGFzX3VuY29tbWl0dGVkX2NoYW5nZXMYDiABKAgSHQoVdW5wdXNoZWRfY29tbWl0X2NvdW50GA8gASgFEhsKE2hhc190cmFja2luZ19icmFuY2gYECABKAgSNQoPdHJhY2tpbmdfYnJhbmNoGBEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEhMKC2FoZWFkX2NvdW50GBIgASgFEhQKDGJlaGluZF9jb3VudBgTIAEoBRIXCgpzeW5jX3N0YXRlGBQgASgJSAWIAQESEwoLaXNfb3B0aW9uYWwYFSABKAgSFAoMaXNfc2FuaXRpemVkGBYgASgIEhsKE3Nhbml0aXphdGlvbl9yZWFzb24YFyABKAkSGAoQaGFzX25hbWVfd2FybmluZxgYIAEoCBIVCg1uYW1lX3dhcm5pbmdzGBkgAygJQgcKBV9jb2RlQgcKBV90eXBlQgcKBV9pY29uQgYKBF91cmxCCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSK6BAoVUHJvamVjdEFnZ3JlZ2F0aW9uRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhUKDWlzX21vbm9fc3BlY3MYBSABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAYgASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgHIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgIIAEoCEgDiAEBEkQKDHJlcG9zaXRvcmllcxgJIAMoCzIuLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlJlcG9zaXRvcnlBZ2dyZWdhdGlvbkR0bxJBCh1naXRfc25hcHNob3RfcmVmcmVzaGVkX2F0X3V0YxgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIQoZZ2l0X3NuYXBzaG90X3NlcnZlZF9zdGFsZRgLIAEoCBIrCgVlcnJvchgMIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIRCgloYXNfZXJyb3IYDSABKAhCDgoMX2Rlc2NyaXB0aW9uQhUKE19tb25vX3NwZWNzX3ZlcnNpb25CHAoaX21vbm9fc3BlY3NfcmVwb19kaXJlY3RvcnlCIQofX21vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZSKbAQoaRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8SPQoIcHJvamVjdHMYASADKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Qcm9qZWN0QWdncmVnYXRpb25EdG8SPgoIbWV0YWRhdGEYAiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5BZ2dyZWdhdGlvbk1ldGFkYXRhRHRvIqkDChxUb2tlbk1vbml0b3JVc2FnZVNuYXBzaG90RHRvEg4KBnN0YXR1cxgBIAEoCRIOCgZzb3VyY2UYAiABKAkSGwoOZmFpbHVyZV9yZWFzb24YAyABKAlIAIgBARIVCghkYXRlX2tleRgEIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgFIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAYgASgBSAOIAQESLwoLcmVhZF9hdF91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhgKEHNuYXBzaG90X3ZlcnNpb24YCCABKAMSOwoGbGltaXRzGAkgASgLMisuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yTGltaXRzRHRvEj0KB3BlcmlvZHMYCiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RzRHRvQhEKD19mYWlsdXJlX3JlYXNvbkILCglfZGF0ZV9rZXlCDwoNX3RvdGFsX3Rva2Vuc0ILCglfY29zdF91c2QiugEKFVRva2VuTW9uaXRvckxpbWl0c0R0bxIyCg51cGRhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKcmVmcmVzaF9tcxgCIAEoBUgAiAEBEkUKCXByb3ZpZGVycxgDIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG9CDQoLX3JlZnJlc2hfbXMi0wIKHFRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSDgoGc3RhdHVzGAIgASgJEhcKCnBsYW5fbGFiZWwYAyABKAlIAIgBARIyCg51cGRhdGVkX2F0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoHd2luZG93cxgFIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEhgKC2JhbGFuY2VfdXNkGAYgASgBSAGIAQESSAoNcmVzZXRfY3JlZGl0cxgHIAEoCzIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0b0INCgtfcGxhbl9sYWJlbEIOCgxfYmFsYW5jZV91c2Qi9QMKGlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEgwKBGtpbmQYASABKAkSEgoFbGFiZWwYAiABKAlIAIgBARIZCgx1c2VkX3BlcmNlbnQYAyABKAFIAYgBARIeChFyZW1haW5pbmdfcGVyY2VudBgEIAEoAUgCiAEBEhEKBHVzZWQYBSABKAFIA4gBARISCgVsaW1pdBgGIAEoAUgEiAEBEhYKCXJlbWFpbmluZxgHIAEoAUgFiAEBEhUKCGN1cnJlbmN5GAggASgJSAaIAQESMQoNcmVzZXRzX2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOd2luZG93X21pbnV0ZXMYCiABKAVIB4gBARIeChFyZXNldF9kZXNjcmlwdGlvbhgLIAEoCUgIiAEBEhoKDW1ldGVyX3Zpc2libGUYDCABKAhICYgBAUIICgZfbGFiZWxCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnRCBwoFX3VzZWRCCAoGX2xpbWl0QgwKCl9yZW1haW5pbmdCCwoJX2N1cnJlbmN5QhEKD193aW5kb3dfbWludXRlc0IUChJfcmVzZXRfZGVzY3JpcHRpb25CEAoOX21ldGVyX3Zpc2libGUivQEKG1Rva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0bxIcCg9hdmFpbGFibGVfY291bnQYASABKAVIAIgBARI3ChNuZXh0X2V4cGlyZXNfYXRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9leHBpcmF0aW9uc191dGMYAyADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhIKEF9hdmFpbGFibGVfY291bnQizwEKFlRva2VuTW9uaXRvclBlcmlvZHNEdG8SOgoFdG9kYXkYASABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SOgoFbW9udGgYAiABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SPQoIYWxsX3RpbWUYAyABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8iigQKFVRva2VuTW9uaXRvclBlcmlvZER0bxIUCgx0b3RhbF90b2tlbnMYASABKAMSEAoIY29zdF91c2QYAiABKAESHgoRY2FjaGVfcmVhZF90b2tlbnMYAyABKANIAIgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYBCABKANIAYgBARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSAKIAQESGQoMdGltZWRfdG9rZW5zGAYgASgDSAOIAQESIAoTdGltZWRfb3V0cHV0X3Rva2VucxgHIAEoA0gEiAEBEh4KEXRpbWVkX2R1cmF0aW9uX21zGAggASgDSAWIAQESTQoMY2FwYWJpbGl0aWVzGAkgASgLMjcuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEkIKB2NsaWVudHMYCiADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RDbGllbnREdG9CFAoSX2NhY2hlX3JlYWRfdG9rZW5zQhUKE19jYWNoZV93cml0ZV90b2tlbnNCEAoOX291dHB1dF90b2tlbnNCDwoNX3RpbWVkX3Rva2Vuc0IWChRfdGltZWRfb3V0cHV0X3Rva2Vuc0IUChJfdGltZWRfZHVyYXRpb25fbXMifwohVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEh0KEHRva2VuX2NvbXBvbmVudHMYASABKAhIAIgBARIXCgp0aHJvdWdocHV0GAIgASgISAGIAQFCEwoRX3Rva2VuX2NvbXBvbmVudHNCDQoLX3Rocm91Z2hwdXQiTwobVG9rZW5Nb25pdG9yUGVyaW9kQ2xpZW50RHRvEg4KBmNsaWVudBgBIAEoCRIOCgZ0b2tlbnMYAiABKAMSEAoIY29zdF91c2QYAyABKAEi2AIKElRva2VuVGhyb3VnaHB1dER0bxIfChdpbnB1dF90b2tlbnNfcGVyX21pbnV0ZRgBIAEoBRIgChhvdXRwdXRfdG9rZW5zX3Blcl9taW51dGUYAiABKAUSGgoSdG90YWxfaW5wdXRfdG9rZW5zGAMgASgDEhsKE3RvdGFsX291dHB1dF90b2tlbnMYBCABKAMSMAoMbGFzdF91cGRhdGVkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCh9yZWd1bGFyX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAYgASgFEiUKHWNhY2hlX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAcgASgFEiIKGnRvdGFsX3JlZ3VsYXJfaW5wdXRfdG9rZW5zGAggASgDEiAKGHRvdGFsX2NhY2hlX2lucHV0X3Rva2VucxgJIAEoAyKvAQoXVG9rZW5UaHJvdWdocHV0U25hcHNob3QSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxpbnB1dF90b2tlbnMYAiABKAUSFQoNb3V0cHV0X3Rva2VucxgDIAEoBRIcChRyZWd1bGFyX2lucHV0X3Rva2VucxgEIAEoBRIaChJjYWNoZV9pbnB1dF90b2tlbnMYBSABKAUi4AEKLEhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvEhUKDWNhbm9uaWNhbF9rZXkYASABKAkSEAoIbmFtZV9rZXkYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSMwoPdW5sb2NrZWRfYXRfdXRjGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5wcm9ncmVzc19hZnRlchgFIAEoBRIOCgZ0YXJnZXQYBiABKAUSFQoNcmV3YXJkX2Ftb3VudBgHIAEoAyK7AQopSGVyb0JhdHRsZVJlcG9ydFBlbmRpbmdBY2hpZXZlbWVudEhpbnREdG8SFQoNY2Fub25pY2FsX2tleRgBIAEoCRIQCghuYW1lX2tleRgCIAEoCRIRCglnb2FsX3R5cGUYAyABKAkSEAoIcHJvZ3Jlc3MYBCABKAUSDgoGdGFyZ2V0GAUgASgFEhcKD3JlbWFpbmluZ19jb3VudBgGIAEoBRIXCg9jb21wbGV0aW9uX3JhdGUYByABKAEivQIKJUhlcm9CYXR0bGVSZXBvcnRBY2hpZXZlbWVudFN1bW1hcnlEdG8SGAoQaGFzX2FyY2hpdmVfZGF0YRgBIAEoCBIXCg9jb21wbGV0ZWRfY291bnQYAiABKAUSEwoLdG90YWxfY291bnQYAyABKAUSFwoPY29tcGxldGlvbl9yYXRlGAQgASgBElsKD2xhdGVzdF91bmxvY2tlZBgFIAEoCzJCLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvElYKDXBlbmRpbmdfaGludHMYBiADKAsyPy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UGVuZGluZ0FjaGlldmVtZW50SGludER0byL0AgojSGVyb0JhdHRsZVJlcG9ydEhpZ2hsaWdodFNlc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRISCgV0aXRsZRgCIAEoCUgAiAEBEhkKDHNlc3Npb25fY29kZRgDIAEoCUgBiAEBEhkKDHNlc3Npb25fdHlwZRgEIAEoCUgCiAEBEhoKDXByb3Bvc2FsX25hbWUYBSABKAlIA4gBARIWCg5hY3Rpdml0eV9jb3VudBgGIAEoBRIiChpjb21wbGV0ZWRfYXNzaXN0YW5jZV9jb3VudBgHIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgIIAEoBRI4ChRsYXN0X2FjdGl2aXR5X2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX3RpdGxlQg8KDV9zZXNzaW9uX2NvZGVCDwoNX3Nlc3Npb25fdHlwZUIQCg5fcHJvcG9zYWxfbmFtZSKnAwoiSGVyb0JhdHRsZVJlcG9ydEFjdGl2aXR5U3VtbWFyeUR0bxIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYASABKAUSIgoaY2hhdF9zZXNzaW9uX2NyZWF0ZWRfY291bnQYAiABKAUSJgoecHJvcG9zYWxfc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgFEhYKDnByb3Bvc2FsX2NvdW50GAQgASgFEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgFIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgGIAEoBRIfChdwcm9wb3NhbF9hcmNoaXZlZF9jb3VudBgHIAEoBRIiChphc3Npc3RhbmNlX2NvbXBsZXRlZF9jb3VudBgIIAEoBRIfChdhc3Npc3RhbmNlX2ZhaWxlZF9jb3VudBgJIAEoBRJVChJoaWdobGlnaHRfc2Vzc2lvbnMYCiADKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGlnaGxpZ2h0U2Vzc2lvbkR0byJGCiNIZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxIQCghwcmV2aW91cxgBIAEoAxINCgVkZWx0YRgCIAEoAyK8BQodSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25EdG8SGAoQaGFzX3ByZXZpb3VzX2RheRgBIAEoCBIaCg1wcmV2aW91c19kYXRlGAIgASgJSACIAQESVAoRYWN0aXZlX2hlcm9fY291bnQYAyABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg9leGVjdXRpb25fY291bnQYBCABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg90b29sX2NhbGxfY291bnQYBSABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJPCgx0b3RhbF90b2tlbnMYBiABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJYChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYByABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJRCg5wcm9wb3NhbF9jb3VudBgIIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvElcKFGhhZ2lwb3dlcl9uZXRfY2hhbmdlGAkgASgLMjkuaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25NZXRyaWNEdG9CEAoOX3ByZXZpb3VzX2RhdGUixgEKG0hlcm9CYXR0bGVSZXBvcnRFeGVjdXRvckR0bxIVCg1leGVjdXRvcl90eXBlGAEgASgJEhIKCmhlcm9fY291bnQYAiABKAUSGQoRYWN0aXZlX2hlcm9fY291bnQYAyABKAUSFwoPZXhlY3V0aW9uX2NvdW50GAQgASgFEhcKD3Rvb2xfY2FsbF9jb3VudBgFIAEoBRIUCgx0b3RhbF90b2tlbnMYBiABKAMSGQoRdG90YWxfZHVyYXRpb25fbXMYByABKAMiuAEKIUhlcm9CYXR0bGVSZXBvcnRIYWdpcG93ZXJQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItwDChxIZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEjMKD3JhbmdlX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoNcmFuZ2VfZW5kX3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoOYnVja2V0X21pbnV0ZXMYAyABKAUSFwoPaGFzX2ZpbGxlZF9nYXBzGAQgASgIEhwKFGhhc19yZWNvcmRlZF9oaXN0b3J5GAUgASgIEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYBiABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAcgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgIIAEoAxISCgpuZXRfY2hhbmdlGAkgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEk4KDXB1YmxpY19zZXJpZXMYCyADKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyUG9pbnREdG8iiQQKF0hlcm9CYXR0bGVSZXBvcnRIZXJvRHRvEg8KB2hlcm9faWQYASABKAkSEQoJaGVyb19uYW1lGAIgASgJEhYKCWhlcm9faWNvbhgDIAEoCUgAiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBCABKAkSEgoFbW9kZWwYBSABKAlIAYgBARIYCgtkZXNjcmlwdGlvbhgGIAEoCUgCiAEBEgwKBHJhbmsYByABKAUSDgoGc3RhdHVzGAggASgJEg0KBWdyYWRlGAkgASgJEhQKDGJhdHRsZV9zY29yZRgKIAEoBRIXCg9leGVjdXRpb25fY291bnQYCyABKAUSFwoPdG9vbF9jYWxsX2NvdW50GAwgASgFEhQKDGlucHV0X3Rva2VucxgNIAEoAxIaChJjYWNoZV9pbnB1dF90b2tlbnMYDiABKAMSFQoNb3V0cHV0X3Rva2VucxgPIAEoAxIbChNjYWNoZV9vdXRwdXRfdG9rZW5zGBAgASgDEhQKDHRvdGFsX3Rva2VucxgRIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgSIAEoAxI5ChVsYXN0X2NvbXBsZXRlZF9hdF91dGMYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsQg4KDF9kZXNjcmlwdGlvbiKAAgoiSGVyb0JhdHRsZVJlcG9ydFByb2plY3RBY3Rpdml0eUR0bxISCgpwcm9qZWN0X2lkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIWCg5hY3Rpdml0eV9jb3VudBgDIAEoBRIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYBCABKAUSFgoOcHJvcG9zYWxfY291bnQYBSABKAUSIgoaYXNzaXN0YW5jZV9jb21wbGV0ZWRfY291bnQYBiABKAUSHwoXYXNzaXN0YW5jZV9mYWlsZWRfY291bnQYByABKAUSFgoOYWN0aXZpdHlfc2hhcmUYCCABKAFCBwoFX25hbWUi+gEKIUhlcm9CYXR0bGVSZXBvcnRQcm9qZWN0UHJvZmlsZUR0bxIQCghoYXNfZGF0YRgBIAEoCBIdChVwcm9qZWN0X2NyZWF0ZWRfY291bnQYAiABKAMSHQoVc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgDEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgEIAEoAxIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgFIAEoAxITCgt0b2tlbl90b3RhbBgGIAEoAxItCglhc19vZl91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIo0CChtIZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SGwoTdG90YWxfcHJvamVjdF9jb3VudBgBIAEoBRIcChRhY3RpdmVfcHJvamVjdF9jb3VudBgCIAEoBRIZChFuZXdfcHJvamVjdF9jb3VudBgDIAEoBRJOCgx0b3BfcHJvamVjdHMYBCADKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdEFjdGl2aXR5RHRvEkgKB3Byb2ZpbGUYBSABKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdFByb2ZpbGVEdG8irQIKFkhlcm9CYXR0bGVSZXBvcnRNdnBEdG8SDwoHaGVyb19pZBgBIAEoCRIRCgloZXJvX25hbWUYAiABKAkSFgoJaGVyb19pY29uGAMgASgJSACIAQESFQoNZXhlY3V0b3JfdHlwZRgEIAEoCRISCgVtb2RlbBgFIAEoCUgBiAEBEgwKBHJhbmsYBiABKAUSFAoMYmF0dGxlX3Njb3JlGAcgASgFEg0KBWdyYWRlGAggASgJEhcKD2V4ZWN1dGlvbl9jb3VudBgJIAEoBRIXCg90b29sX2NhbGxfY291bnQYCiABKAUSFAoMdG90YWxfdG9rZW5zGAsgASgDEhkKEXRvdGFsX2R1cmF0aW9uX21zGAwgASgDQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsItkCChpIZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxIYChB0b3RhbF9oZXJvX2NvdW50GAEgASgFEhkKEWFjdGl2ZV9oZXJvX2NvdW50GAIgASgFEhoKEnRvdGFsX2JhdHRsZV9zY29yZRgDIAEoBRIYChB0b3RhbF90b29sX2NhbGxzGAQgASgFEhQKDHRvdGFsX3Rva2VucxgFIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgGIAEoAxIUCgxpbnB1dF90b2tlbnMYByABKAMSGgoSY2FjaGVfaW5wdXRfdG9rZW5zGAggASgDEhUKDW91dHB1dF90b2tlbnMYCSABKAMSGwoTY2FjaGVfb3V0cHV0X3Rva2VucxgKIAEoAxI5CgNtdnAYCyABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0TXZwRHRvIqYGChNIZXJvQmF0dGxlUmVwb3J0RHRvEhMKC3JlcG9ydF9kYXRlGAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHRpbWVfem9uZV9pZBgDIAEoCRI1ChFjb3ZlcmVkX3N0YXJ0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoPY292ZXJlZF9lbmRfdXRjGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJFCgloYWdpcG93ZXIYBiABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEkEKB3N1bW1hcnkYByABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxJRCgxhY2hpZXZlbWVudHMYCCABKAsyOy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWNoaWV2ZW1lbnRTdW1tYXJ5RHRvElIKEGFjdGl2aXR5X3N1bW1hcnkYCSABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWN0aXZpdHlTdW1tYXJ5RHRvEkcKCmNvbXBhcmlzb24YCiABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbkR0bxJECglleGVjdXRvcnMYCyADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RXhlY3V0b3JEdG8SQwoIcHJvamVjdHMYDCABKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SPQoGaGVyb2VzGA0gAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydEhlcm9EdG8itQEKHkhhZ2lwb3dlclB1YmxpY0hpc3RvcnlQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItcBCh5IYWdpcG93ZXJTdGF0aXN0aWNzTWV0YWRhdGFEdG8SMwoPcmFuZ2Vfc3RhcnRfdXRjGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1yYW5nZV9lbmRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5idWNrZXRfbWludXRlcxgDIAEoBRIXCg9oYXNfZmlsbGVkX2dhcHMYBCABKAgSHAoUaGFzX3JlY29yZGVkX2hpc3RvcnkYBSABKAgi1gEKHUhhZ2lwb3dlclN0YXRpc3RpY3NTdW1tYXJ5RHRvEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYASABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAIgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgDIAEoAxISCgpuZXRfY2hhbmdlGAQgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIogCChxIYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvEg0KBXJhbmdlGAEgASgJEkYKCG1ldGFkYXRhGAIgASgLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyU3RhdGlzdGljc01ldGFkYXRhRHRvEkQKB3N1bW1hcnkYAyABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzU3VtbWFyeUR0bxJLCg1wdWJsaWNfc2VyaWVzGAQgAygLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyUHVibGljSGlzdG9yeVBvaW50RHRvIrsDChpIaXN0b3JpY2FsVGltZWxpbmVFdmVudER0bxIQCghldmVudF9pZBgBIAEoCRIzCg9vY2N1cnJlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDmNyZWF0ZWRfYXRfdXRjGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtlbnRpdHlfdHlwZRgEIAEoCRIRCgllbnRpdHlfaWQYBSABKAkSFwoKcHJvamVjdF9pZBgGIAEoCUgAiAEBEhcKCnNlc3Npb25faWQYByABKAlIAYgBARIMCgRjb2RlGAggASgJEigKCG1ldGFkYXRhGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhMKBnNvdXJjZRgKIAEoCUgCiAEBEhUKCGFjdG9yX2lkGAsgASgJSAOIAQESGwoOY29ycmVsYXRpb25faWQYDCABKAlIBIgBAUINCgtfcHJvamVjdF9pZEINCgtfc2Vzc2lvbl9pZEIJCgdfc291cmNlQgsKCV9hY3Rvcl9pZEIRCg9fY29ycmVsYXRpb25faWQiiAEKH0hpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8SEQoJcGFnZV9zaXplGAEgASgFEhYKDnJldHVybmVkX2NvdW50GAIgASgFEhAKCGhhc19tb3JlGAMgASgIEhgKC25leHRfY3Vyc29yGAQgASgJSACIAQFCDgoMX25leHRfY3Vyc29yIrABCiJIaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvEj8KBWl0ZW1zGAEgAygLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnREdG8SSQoKcGFnaW5hdGlvbhgCIAEoCzI1LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8imwMKIEhpc3RvcmljYWxUaW1lbGluZUV2ZW50U2FtcGxlRHRvEhMKC2VudGl0eV90eXBlGAEgASgJEgwKBGNvZGUYAiABKAkSGAoQc2FtcGxlX2VudGl0eV9pZBgDIAEoCRIeChFzYW1wbGVfcHJvamVjdF9pZBgEIAEoCUgAiAEBEh4KEXNhbXBsZV9zZXNzaW9uX2lkGAUgASgJSAGIAQESGgoNc2FtcGxlX3NvdXJjZRgGIAEoCUgCiAEBEhwKD3NhbXBsZV9hY3Rvcl9pZBgHIAEoCUgDiAEBEiIKFXNhbXBsZV9jb3JyZWxhdGlvbl9pZBgIIAEoCUgEiAEBEjAKEG1ldGFkYXRhX2V4YW1wbGUYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCFAoSX3NhbXBsZV9wcm9qZWN0X2lkQhQKEl9zYW1wbGVfc2Vzc2lvbl9pZEIQCg5fc2FtcGxlX3NvdXJjZUISChBfc2FtcGxlX2FjdG9yX2lkQhgKFl9zYW1wbGVfY29ycmVsYXRpb25faWQibQokSGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1Jlc3BvbnNlRHRvEkUKBWl0ZW1zGAEgAygLMjYuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnRTYW1wbGVEdG8y7QoKEVN0YXRpc3RpY3NTZXJ2aWNlEnQKEUdldEFnZ3JlZ2F0ZWREYXRhEi4uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXF1ZXN0Gi8uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXNwb25zZRJ9ChRHZXRUb2tlbk1vbml0b3JVc2FnZRIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVxdWVzdBoyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USgwEKFkdldFRva2VuTW9uaXRvckhpc3RvcnkSMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIaXN0b3J5UmVxdWVzdBo0LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRKPAQoaR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2USNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlcXVlc3QaOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEpUBChxHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5UaHJvdWdocHV0U3RhdGlzdGljc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USjAEKGUdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnkSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXNwb25zZRJ6ChNHZXRIZXJvQmF0dGxlUmVwb3J0EjAuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QaMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIZXJvQmF0dGxlUmVwb3J0UmVzcG9uc2USjAEKGUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnQSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIYWdpcG93ZXJIaXN0b3J5UmVwb3J0UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRKAAQoVR2V0SGlzdG9yaWNhbFRpbWVsaW5lEjIuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lUmVxdWVzdBozLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhpc3RvcmljYWxUaW1lbGluZVJlc3BvbnNlEpUBChxHZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VCKqoCJ1BDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5QbGF0Zm9ybS5WMWIGcHJvdG8z",[Ue,Ne,rs]),Ph=v(er,1),qh=v(er,3),eb=We(er,0),de=oe("CiJoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25zLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIlUKFk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QSOwoEYm9keRgBIAEoCzItLmhhZ2ljb2RlLnNlc3Npb24udjEuQ3JlYXRlQ2hhdFNlc3Npb25SZXF1ZXN0IlIKF09wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIk0KEk9wZW5TZXNzaW9uUmVxdWVzdBI3CgRib2R5GAEgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdCJOChNPcGVuU2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIicKEUdldFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiTQoSR2V0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvImEKElNhdmVTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjcKBGJvZHkYAiABKAsyKS5oYWdpY29kZS5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25SZXF1ZXN0Ik4KE1NhdmVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8izAEKE0xpc3RTZXNzaW9uc1JlcXVlc3QSEQoEdHlwZRgBIAEoCUgAiAEBEhgKC2FjdGl2ZV9vbmx5GAIgASgISAGIAQESHQoQaW5jbHVkZV9hcmNoaXZlZBgDIAEoCEgCiAEBEhcKCnByb2plY3RfaWQYBCABKAlIA4gBARITCgtwcm9qZWN0X2lkcxgFIAMoCUIHCgVfdHlwZUIOCgxfYWN0aXZlX29ubHlCEwoRX2luY2x1ZGVfYXJjaGl2ZWRCDQoLX3Byb2plY3RfaWQiUwoUTGlzdFNlc3Npb25zUmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTGlzdFJlc3BvbnNlRHRvIkAKFERlbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSFAoMZGVsZXRlX2ZpbGVzGAIgASgIIlYKFURlbGV0ZVNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIvChlBcmNoaXZlQ2hhdFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWwoaQXJjaGl2ZUNoYXRTZXNzaW9uUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5TaW1wbGVNZXNzYWdlUmVzcG9uc2VEdG8idAoZU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEkMKBGJvZHkYAiABKAsyNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0IlUKGlN3aXRjaFN0b3BwZWRBZ2VudFJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIl4KG1N0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBI/CgRib2R5GAEgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVIYWdpVGFza1Nlc3Npb25SZXF1ZXN0IlcKHFN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iZAohU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXF1ZXN0Ej8KBGJvZHkYASABKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkNyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QiXQoiU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byLOAwoSQ2hhdEhlcm9TdW1tYXJ5RHRvEg8KB2hlcm9faWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhEKBGljb24YBCABKAlIAYgBARIVCg1leGVjdXRvcl90eXBlGAUgASgJEhkKDGFnZW50X2NsaV9pZBgGIAEoCUgCiAEBEhsKDmFnZW50X2NsaV9uYW1lGAcgASgJSAOIAQESGwoOYWdlbnRfY2xpX2ljb24YCCABKAlIBIgBARIVCghtb2RlbF9pZBgJIAEoCUgFiAEBEhcKCm1vZGVsX25hbWUYCiABKAlIBogBARIXCgptb2RlbF9pY29uGAsgASgJSAeIAQESIgoVc2Vjb25kYXJ5X21vZGVsX2xhYmVsGAwgASgJSAiIAQFCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQg8KDV9hZ2VudF9jbGlfaWRCEQoPX2FnZW50X2NsaV9uYW1lQhEKD19hZ2VudF9jbGlfaWNvbkILCglfbW9kZWxfaWRCDQoLX21vZGVsX25hbWVCDQoLX21vZGVsX2ljb25CGAoWX3NlY29uZGFyeV9tb2RlbF9sYWJlbCI4ChRPcGVuU3BlY1Rhc2tQcm9ncmVzcxIRCgljb21wbGV0ZWQYASABKAUSDQoFdG90YWwYAiABKAUi/gEKEE9wZW5TcGVjRmlsZUluZm8SEQoJZmlsZV9uYW1lGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhEKCWZpbGVfdHlwZRgEIAEoCRITCgtpc19yZXF1aXJlZBgFIAEoCBITCgtpc19hcmNoaXZlZBgGIAEoCBIxCg1hcmNoaXZlZF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJACg10YXNrX3Byb2dyZXNzGAggASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY1Rhc2tQcm9ncmVzcyJcChFPcGVuU3BlY0ZpbGVzSW5mbxIRCgliYXNlX3BhdGgYASABKAkSNAoFZmlsZXMYAiADKAsyJS5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TcGVjRmlsZUluZm8i3gIKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCBIWCglzY2hlZHVsZWQYByABKAhIAYgBARIuCgpkdWVfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIhChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgJIAEoCUgCiAEBQhcKFV9leGVjdXRpb25fbWVzc2FnZV9pZEIMCgpfc2NoZWR1bGVkQhcKFV9zY2hlZHVsZWRfbWVzc2FnZV9pZCKAAQoWU2Vzc2lvbk5vdGlmaWNhdGlvbkR0bxIMCgRraW5kGAEgASgJEi8KC29ic2VydmVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCgdwYXlsb2FkGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIu0BChZTZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhoKDXByb21wdF90b2tlbnMYASABKAVIAIgBARIhChRjYWNoZWRfcHJvbXB0X3Rva2VucxgCIAEoBUgBiAEBEh4KEWNvbXBsZXRpb25fdG9rZW5zGAMgASgFSAKIAQESMwoPbGFzdF91cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIQCg5fcHJvbXB0X3Rva2Vuc0IXChVfY2FjaGVkX3Byb21wdF90b2tlbnNCFAoSX2NvbXBsZXRpb25fdG9rZW5zIl8KFFN0YWdlRXhlY3V0b3JJbmZvRHRvEhUKDXByb3ZpZGVyX3R5cGUYASABKAkSMAoMbGFzdF91cGRhdGVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK8AgoVU3RhZ2VIZXJvU2VsZWN0aW9uRHRvEhEKCXN0YWdlX2tleRgBIAEoCRISCgpzY3JpcHRfa2V5GAIgASgJEhUKDXNjZW5hcmlvX25hbWUYAyABKAkSFAoHaGVyb19pZBgEIAEoCUgAiAEBEhYKCWhlcm9fbmFtZRgFIAEoCUgBiAEBEhYKCWhlcm9faWNvbhgGIAEoCUgCiAEBEhUKDWV4ZWN1dG9yX3R5cGUYByABKAkSFQoNdXNlZF9mYWxsYmFjaxgIIAEoCBIYChBzZWxlY3Rpb25fc291cmNlGAkgASgJEi8KC3NlbGVjdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfaGVyb19pZEIMCgpfaGVyb19uYW1lQgwKCl9oZXJvX2ljb24i9QwKElNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESHAoPY2hpZWZfY29tcGxhaW50GAQgASgJSAGIAQESDAoEY29kZRgFIAEoBRIMCgR0eXBlGAYgASgJEg4KBnN0YXR1cxgHIAEoCRIRCglpc19hY3RpdmUYCCABKAgSMgoObGFzdF9hY3RpdmVfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnByb2plY3RfaWQYCiABKAkSFAoMcHJvamVjdF9uYW1lGAsgASgJEhQKDHByb2plY3RfcGF0aBgMIAEoCRIaCg1wcm9wb3NhbF9uYW1lGA0gASgJSAKIAQESPwoPb3Blbl9zcGVjX2ZpbGVzGA4gASgLMiYuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSQwoOcXVldWVfbWVzc2FnZXMYECADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SHgoRd29ya2luZ19kaXJlY3RvcnkYESABKAlIA4gBARIVCghtZXRhZGF0YRgSIAEoCUgEiAEBEh8KEmNoYXRfZXhlY3V0b3JfdHlwZRgTIAEoCUgFiAEBEjoKCWNoYXRfaGVybxgUIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2hhdEhlcm9TdW1tYXJ5RHRvElkKEnN0YWdlX2V4ZWN1dG9yX21hcBgVIAMoCzI9LmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJkChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyQi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5TdGFnZUhlcm9TZWxlY3Rpb25NYXBFbnRyeRIgChNydW50aW1lX21vZGVsX2xhYmVsGBcgASgJSAaIAQESOQoVcHJvY2Vzc2luZ19zdGFydGVkX2F0GBggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJCCg1zZXNzaW9uX3VzYWdlGBkgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhwKD3ByZXZpb3VzX3N0YXR1cxgaIAEoCUgHiAEBEkIKDW5vdGlmaWNhdGlvbnMYGyADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8SRwoSc2NoZWR1bGVkX21lc3NhZ2VzGBwgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvElAKDXVzZXJfbWV0YWRhdGEYHSADKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5Vc2VyTWV0YWRhdGFFbnRyeRpiChVTdGFnZUV4ZWN1dG9yTWFwRW50cnkSCwoDa2V5GAEgASgJEjgKBXZhbHVlGAIgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaaAoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjkKBXZhbHVlGAIgASgLMiouaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUhlcm9TZWxlY3Rpb25EdG86AjgBGjMKEVVzZXJNZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMi+QEKGENyZWF0ZUNoYXRTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhgKEGlzX2RlZmF1bHRfdGl0bGUYAyABKAgSFAoHaGVyb19pZBgEIAEoCUgAiAEBEk0KCG1ldGFkYXRhGAUgAygLMjsuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVDaGF0U2Vzc2lvblJlcXVlc3QuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCgoIX2hlcm9faWQivgIKEFBhdGhSZWZlcmVuY2VEdG8SCgoCaWQYASABKAkSDgoGc291cmNlGAIgASgJEhUKDWRpc3BsYXlfdmFsdWUYAyABKAkSFQoNcGh5c2ljYWxfcGF0aBgEIAEoCRINCgVzdGFydBgFIAEoBRILCgNlbmQYBiABKAUSFgoJZW50aXR5X2lkGAcgASgJSACIAQESFwoKcHJvamVjdF9pZBgIIAEoCUgBiAEBEkUKCG1ldGFkYXRhGAkgAygLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9lbnRpdHlfaWRCDQoLX3Byb2plY3RfaWQi+wEKGVNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIQCghpbWFnZV9pZBgCIAEoCRIWCg5oYWdpX2ltYWdlX3VybBgDIAEoCRIYCgtwcmV2aWV3X3VybBgEIAEoCUgAiAEBEhYKCWZpbGVfbmFtZRgFIAEoCUgBiAEBEhkKDGNvbnRlbnRfdHlwZRgGIAEoCUgCiAEBEhYKCWZpbGVfc2l6ZRgHIAEoA0gDiAEBQg4KDF9wcmV2aWV3X3VybEIMCgpfZmlsZV9uYW1lQg8KDV9jb250ZW50X3R5cGVCDAoKX2ZpbGVfc2l6ZSJ+ChlUYXJnZXRQcm9qZWN0UmVmZXJlbmNlRHRvEhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhgKC2FjY2Vzc190eXBlGAQgASgJSACIAQFCDgoMX2FjY2Vzc190eXBlIocBChNUYXJnZXRSZXBvc2l0b3J5RHRvEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIZCgxkaXNwbGF5X25hbWUYAyABKAlIAIgBARIYCgthY2Nlc3NfdHlwZRgEIAEoCUgBiAEBQg8KDV9kaXNwbGF5X25hbWVCDgoMX2FjY2Vzc190eXBlIj0KGFRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxIMCgRtb2RlGAEgASgJEhMKC2FjY2Vzc190eXBlGAIgASgJIpEGChRDcmVhdGVTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRIcCg9jaGllZl9jb21wbGFpbnQYAiABKAlIAIgBARIlChhvcmlnaW5hbF9jaGllZl9jb21wbGFpbnQYAyABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAQgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhEKBHR5cGUYBSABKAlIAogBARISCgpwcm9qZWN0X2lkGAYgASgJEkUKE3RhcmdldF9yZXBvc2l0b3JpZXMYByADKAsyKC5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlEdG8STgoXdGFyZ2V0X3JlcG9zaXRvcnlfc2NvcGUYCCABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxJHCg90YXJnZXRfcHJvamVjdHMYCSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAogAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEhgKEGlzX2RlZmF1bHRfdGl0bGUYCyABKAgSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgMIAEoCUgDiAEBEkkKCG1ldGFkYXRhGA0gAygLMjcuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUISChBfY2hpZWZfY29tcGxhaW50QhsKGV9vcmlnaW5hbF9jaGllZl9jb21wbGFpbnRCBwoFX3R5cGVCHAoaX3Byb3Bvc2FsX2NvbnRlbnRfbGFuZ3VhZ2UikwEKFFVwZGF0ZVNlc3Npb25SZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESEwoGc3RhdHVzGAMgASgJSAGIAQESFQoIbWV0YWRhdGEYBCABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCQoHX3N0YXR1c0ILCglfbWV0YWRhdGEiUwoWU2Vzc2lvbkxpc3RSZXNwb25zZUR0bxI5CghzZXNzaW9ucxgBIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIisKGFNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJIjMKIFN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0Eg8KB2hlcm9faWQYASABKAki6wgKHENyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QSDQoFdGl0bGUYASABKAkSGAoQaXNfZGVmYXVsdF90aXRsZRgCIAEoCBISCgpwcm9qZWN0X2lkGAMgASgJEhYKCXByb21wdF9pZBgEIAEoCUgAiAEBEhQKB21lc3NhZ2UYBSABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAYgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhwKD3JlcG9zaXRvcnlfcGF0aBgHIAEoCUgCiAEBEhgKC3RhcmdldF90eXBlGAggASgJSAOIAQESFQoIdmF1bHRfaWQYCSABKAlIBIgBARIcCg9vdXRwdXRfdmF1bHRfaWQYCiABKAlIBYgBARIbChNyZWZlcmVuY2VfdmF1bHRfaWRzGAsgAygJEhoKEmVkaXRhYmxlX3ZhdWx0X2lkcxgMIAMoCRJHCg90YXJnZXRfcHJvamVjdHMYDSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SHwoScmVzZWFyY2hfZGlyZWN0aW9uGA4gASgJSAaIAQESGwoOcHJlc2V0X3Rhc2tfaWQYDyABKAlIB4gBARIfChJwcmVzZXRfdGFza19sb2NhbGUYECABKAlICIgBARIxChFwcmVzZXRfdGFza19pbnB1dBgRIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIXCg9yZXBvc2l0b3J5X3VybHMYEiADKAkSEwoLcHJvamVjdF9pZHMYEyADKAkSEQoJbmVlZF9wdXNoGBQgASgIEiQKF3B1bGxfcmViYXNlX2JlZm9yZV9wdXNoGBUgASgISAmIAQESHwoSdGFyZ2V0X2JyYW5jaF9tb2RlGBYgASgJSAqIAQESHwoSdGFyZ2V0X2JyYW5jaF9uYW1lGBcgASgJSAuIAQESFwoKc2NyaXB0X2tleRgYIAEoCUgMiAEBEhQKB2hlcm9faWQYGSABKAlIDYgBARIgChNoZXJvX3NlbGVjdGlvbl9tb2RlGBogASgJSA6IAQFCDAoKX3Byb21wdF9pZEIKCghfbWVzc2FnZUISChBfcmVwb3NpdG9yeV9wYXRoQg4KDF90YXJnZXRfdHlwZUILCglfdmF1bHRfaWRCEgoQX291dHB1dF92YXVsdF9pZEIVChNfcmVzZWFyY2hfZGlyZWN0aW9uQhEKD19wcmVzZXRfdGFza19pZEIVChNfcHJlc2V0X3Rhc2tfbG9jYWxlQhoKGF9wdWxsX3JlYmFzZV9iZWZvcmVfcHVzaEIVChNfdGFyZ2V0X2JyYW5jaF9tb2RlQhUKE190YXJnZXRfYnJhbmNoX25hbWVCDQoLX3NjcmlwdF9rZXlCCgoIX2hlcm9faWRCFgoUX2hlcm9fc2VsZWN0aW9uX21vZGUy6ggKD1Nlc3Npb25zU2VydmljZRJsCg9PcGVuQ2hhdFNlc3Npb24SKy5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QaLC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEmAKC09wZW5TZXNzaW9uEicuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU2Vzc2lvblJlcXVlc3QaKC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TZXNzaW9uUmVzcG9uc2USXQoKR2V0U2Vzc2lvbhImLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblJlcXVlc3QaJy5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25SZXNwb25zZRJgCgtTYXZlU2Vzc2lvbhInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2F2ZVNlc3Npb25SZXF1ZXN0GiguaGFnaWNvZGUuc2Vzc2lvbi52MS5TYXZlU2Vzc2lvblJlc3BvbnNlEmMKDExpc3RTZXNzaW9ucxIoLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVzcG9uc2USZgoNRGVsZXRlU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuRGVsZXRlU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkRlbGV0ZVNlc3Npb25SZXNwb25zZRJ1ChJBcmNoaXZlQ2hhdFNlc3Npb24SLi5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlc3BvbnNlEnUKElN3aXRjaFN0b3BwZWRBZ2VudBIuLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVzcG9uc2USewoUU3RhcnRIYWdpVGFza1Nlc3Npb24SMC5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBoxLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRIYWdpVGFza1Nlc3Npb25SZXNwb25zZRKNAQoaU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb24SNi5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0TGVnYWN5SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlNlc3Npb24uVjFiBnByb3RvMw",[Ue,Ne]),tb=v(de,1),nb=v(de,3),ob=v(de,5),rb=v(de,7),ab=v(de,9),ib=v(de,11),sb=v(de,13),lb=v(de,17),cb=v(de,30),db=v(de,36),ub=v(de,37),mb=v(de,41),hb=We(de,0),Me=oe("CitoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fbWVzc2FnaW5nLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIr0BChlHZXRTZXNzaW9uTWVzc2FnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEQoEcGFnZRgCIAEoBUgAiAEBEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgBiAEBEhoKDWhpc3Rvcnlfc2NvcGUYBCABKAlIAogBARISCgVvcmRlchgFIAEoCUgDiAEBQgcKBV9wYWdlQgwKCl9wYWdlX3NpemVCEAoOX2hpc3Rvcnlfc2NvcGVCCAoGX29yZGVyIlkKGkdldFNlc3Npb25NZXNzYWdlc1Jlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUxpc3RSZXNwb25zZUR0byIqChRDYW5jZWxTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlYKFUNhbmNlbFNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZUR0byI3CiFHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJeCiJHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1Jlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvY2Vzc2luZ1N0YXR1c0R0byJGChtDYW5jZWxQZW5kaW5nTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBSJcChxDYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VEdG8iUQodQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgCIAEoCSJgCh5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvImQKE1N0ZWVyU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI5CgRib2R5GAIgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uU3RlZXJSZXF1ZXN0RHRvIlQKFFN0ZWVyU2Vzc2lvblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8ihQEKGVN0ZWVyUXVldWVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBRI/CgRib2R5GAMgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZWRNZXNzYWdlU3RlZXJSZXF1ZXN0RHRvImAKGlN0ZWVyUXVldWVkTWVzc2FnZVJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnNlc3Npb24udjEuUXVldWVkTWVzc2FnZVN0ZWVyUmVzcG9uc2VEdG8iZgoZUG9zdFNlc3Npb25NZXNzYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjUKBGJvZHkYAiABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVxdWVzdCJZChpQb3N0U2Vzc2lvbk1lc3NhZ2VSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVzcG9uc2VEdG8iYAoqR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEwoGbG9jYWxlGAIgASgJSACIAQFCCQoHX2xvY2FsZSJ/CitHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlElAKBnJlc3VsdBgBIAEoCzJALmhhZ2ljb2RlLnNlc3Npb24udjEuQ29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXNwb25zZUR0byJxCh9TdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSOgoEYm9keRgCIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8iaAogU3VibWl0U2Vzc2lvbkFubm90YXRpb25zUmVzcG9uc2USRAoGcmVzdWx0GAEgASgLMjQuaGFnaWNvZGUuc2Vzc2lvbi52MS5Bbm5vdGF0aW9uU3VibWlzc2lvblJlc3BvbnNlRHRvIvoBChZNZXNzYWdlSGVyb1NuYXBzaG90RHRvEhQKB2hlcm9faWQYASABKAlIAIgBARIWCgloZXJvX25hbWUYAiABKAlIAYgBARIWCgloZXJvX2ljb24YAyABKAlIAogBARIaCg1leGVjdXRvcl90eXBlGAQgASgJSAOIAQESEwoGc291cmNlGAUgASgJSASIAQESFgoJc3RhZ2Vfa2V5GAYgASgJSAWIAQFCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uQhAKDl9leGVjdXRvcl90eXBlQgkKB19zb3VyY2VCDAoKX3N0YWdlX2tleSJSChxNZXNzYWdlVXNlclF1ZXN0aW9uQW5zd2VyRHRvEhAKCHF1ZXN0aW9uGAEgASgJEg4KBnZhbHVlcxgCIAMoCRIQCghyZWplY3RlZBgDIAEoCCJCChxNZXNzYWdlVXNlclF1ZXN0aW9uT3B0aW9uRHRvEg0KBWxhYmVsGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIsgBChpNZXNzYWdlVXNlclF1ZXN0aW9uSXRlbUR0bxIQCghxdWVzdGlvbhgBIAEoCRIOCgZoZWFkZXIYAiABKAkSFAoMbXVsdGlfc2VsZWN0GAMgASgIEkIKB29wdGlvbnMYBCADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25PcHRpb25EdG8SGwoTYWxsb3dfY3VzdG9tX2Fuc3dlchgFIAEoCBIRCglpc19zZWNyZXQYBiABKAgiWgocTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0bxIZChFtYXhfYW5zd2VyX2xlbmd0aBgBIAEoBRIfChdtYXhfdmFsdWVzX3Blcl9xdWVzdGlvbhgCIAEoBSLYAgoWTWVzc2FnZVVzZXJRdWVzdGlvbkR0bxITCgtxdWVzdGlvbl9pZBgBIAEoCRITCgZydW5faWQYAiABKAlIAIgBARINCgVzdGF0ZRgDIAEoCRJCCglxdWVzdGlvbnMYBCADKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25JdGVtRHRvEkIKB2Fuc3dlcnMYBSADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25BbnN3ZXJEdG8SLwoLYW5zd2VyZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKBmxpbWl0cxgHIAEoCzIxLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0b0IJCgdfcnVuX2lkIo4EChJNZXNzYWdlUmVzcG9uc2VEdG8SCgoCaWQYASABKAkSEgoKc2Vzc2lvbl9pZBgCIAEoCRIMCgR0eXBlGAMgASgJEgwKBG1vZGUYBCABKAkSLQoJdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1jcmVhdGlvbl90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCg5jb250ZW50X2Jsb2NrcxgHIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRISCgVtb2RlbBgIIAEoCUgAiAEBEhUKCHByb3ZpZGVyGAkgASgJSAGIAQESQgoNaGVyb19zbmFwc2hvdBgKIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUhlcm9TbmFwc2hvdER0bxJCCg11c2VyX3F1ZXN0aW9uGAsgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlVXNlclF1ZXN0aW9uRHRvEhgKC3N0ZWVyX3N0YXRlGAwgASgJSAKIAQESHwoScGFyZW50X3Rvb2xfdXNlX2lkGA0gASgJSAOIAQFCCAoGX21vZGVsQgsKCV9wcm92aWRlckIOCgxfc3RlZXJfc3RhdGVCFQoTX3BhcmVudF90b29sX3VzZV9pZCKyAQoWTWVzc2FnZUxpc3RSZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHBhZ2UYAiABKAUSEQoJcGFnZV9zaXplGAMgASgFEhMKC3RvdGFsX2NvdW50GAQgASgFEhMKC3RvdGFsX3BhZ2VzGAUgASgFEjkKCG1lc3NhZ2VzGAYgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlUmVzcG9uc2VEdG8ikAEKGENhbmNlbFNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIwCgxjYW5jZWxsZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBnJ1bl9pZBgEIAEoCUgAiAEBQgkKB19ydW5faWQiyAIKE1Byb2Nlc3NpbmdTdGF0dXNEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIVCg1pc19wcm9jZXNzaW5nGAIgASgIEhwKFHF1ZXVlZF9tZXNzYWdlX2NvdW50GAMgASgFEkMKDnF1ZXVlX21lc3NhZ2VzGAQgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEjkKFXByb2Nlc3Npbmdfc3RhcnRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRwoSc2NoZWR1bGVkX21lc3NhZ2VzGAYgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEh8KF3NjaGVkdWxlZF9tZXNzYWdlX2NvdW50GAcgASgFIj0KFENhbmNlbGxlZE1lc3NhZ2VJbmZvEgwKBG1vZGUYASABKAkSFwoPY29udGVudF9wcmV2aWV3GAIgASgJIpIBChlDYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgDIAEoCRIhChlyZW1haW5pbmdfc2NoZWR1bGVkX2NvdW50GAQgASgFEg8KB21lc3NhZ2UYBSABKAkiwwEKF0NhbmNlbFBlbmRpbmdNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBITCgtxdWV1ZV9pbmRleBgDIAEoBRIXCg9yZW1haW5pbmdfY291bnQYBCABKAUSDwoHbWVzc2FnZRgFIAEoCRJEChFjYW5jZWxsZWRfbWVzc2FnZRgGIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsbGVkTWVzc2FnZUluZm8iUgoXU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRIXCgptZXNzYWdlX2lkGAIgASgJSACIAQFCDQoLX21lc3NhZ2VfaWQiKQoWU2Vzc2lvblN0ZWVyUmVxdWVzdER0bxIPCgdjb250ZW50GAEgASgJIjAKHVF1ZXVlZE1lc3NhZ2VTdGVlclJlc3BvbnNlRHRvEg8KB291dGNvbWUYASABKAkiPAocUXVldWVkTWVzc2FnZVN0ZWVyUmVxdWVzdER0bxIcChRleGVjdXRpb25fbWVzc2FnZV9pZBgBIAEoCSKVAQoWUG9zdE1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJEiEKFHNjaGVkdWxlZF9tZXNzYWdlX2lkGAIgASgJSACIAQESLgoKZHVlX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFwoVX3NjaGVkdWxlZF9tZXNzYWdlX2lkIu0BChJQb3N0TWVzc2FnZVJlcXVlc3QSDwoHY29udGVudBgBIAEoCRIMCgRtb2RlGAIgASgJEkIKCmltYWdlX3JlZnMYAyADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAQgAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEjQKEHNjaGVkdWxlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIl4KK0NvbnZlcnRUb1Byb3Bvc2FsSGFnaVNraWxsUHJvbXB0UmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRITCgZwcm9tcHQYAiABKAlIAIgBAUIJCgdfcHJvbXB0ImAKH0Fubm90YXRpb25TdWJtaXNzaW9uUmVzcG9uc2VEdG8SDwoHbWVzc2FnZRgBIAEoCRIYChBhbm5vdGF0aW9uX2NvdW50GAIgASgFEhIKCmZpbGVfY291bnQYAyABKAUiygEKEkJsb2NrQW5ub3RhdGlvbkR0bxIZChFzdGFydF9saW5lX251bWJlchgBIAEoBRIXCg9lbmRfbGluZV9udW1iZXIYAiABKAUSGAoQb3JpZ2luYWxfY29udGVudBgDIAEoCRISCgpibG9ja190eXBlGAQgASgJEhcKD2Fubm90YXRpb25fdGV4dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgoKAmlkGAcgASgJIq8BChFGaWxlQW5ub3RhdGlvbkR0bxIRCglmaWxlX25hbWUYASABKAkSEQoJZmlsZV9wYXRoGAIgASgJEkIKEWJsb2NrX2Fubm90YXRpb25zGAMgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5CbG9ja0Fubm90YXRpb25EdG8SHAoPZmlsZV9hbm5vdGF0aW9uGAQgASgJSACIAQFCEgoQX2ZpbGVfYW5ub3RhdGlvbiLfAQoXQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRI1CgVmaWxlcxgCIAMoCzImLmhhZ2ljb2RlLnNlc3Npb24udjEuRmlsZUFubm90YXRpb25EdG8SGQoRdG90YWxfYW5ub3RhdGlvbnMYAyABKAUSMAoMc3VibWl0dGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaCg1nbG9iYWxfcHJvbXB0GAUgASgJSACIAQFCEAoOX2dsb2JhbF9wcm9tcHQykQoKF1Nlc3Npb25NZXNzYWdpbmdTZXJ2aWNlEnUKEkdldFNlc3Npb25NZXNzYWdlcxIuLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVzcG9uc2USZgoNQ2FuY2VsU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZRKNAQoaR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXMSNi5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25Qcm9jZXNzaW5nU3RhdHVzUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXNSZXNwb25zZRJ7ChRDYW5jZWxQZW5kaW5nTWVzc2FnZRIwLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEoEBChZDYW5jZWxTY2hlZHVsZWRNZXNzYWdlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlc3BvbnNlEmMKDFN0ZWVyU2Vzc2lvbhIoLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVzcG9uc2USdQoSU3RlZXJRdWV1ZWRNZXNzYWdlEi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXF1ZXN0Gi8uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXNwb25zZRJ1ChJQb3N0U2Vzc2lvbk1lc3NhZ2USLi5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlc3BvbnNlEqgBCiNHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdBI/LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0GkAuaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlEocBChhTdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnMSNC5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1JlcXVlc3QaNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1Jlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuU2Vzc2lvbi5WMWIGcHJvdG8z",[Ue,Ne,de]),bb=v(Me,1),gb=v(Me,11),pb=v(Me,15),Ab=v(Me,19),fb=v(Me,34),Zb=v(Me,38),Rb=v(Me,43),Eb=We(Me,0),Ie=oe("CipoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fcHJvcG9zYWwucHJvdG8SE2hhZ2ljb2RlLnNlc3Npb24udjEiOAoiTGlzdFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInIKI0xpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEksKBnJlc3VsdBgBIAEoCzI7LmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZXNMaXN0UmVzcG9uc2VEdG8ijQIKGVVubGlua2VkT3BlblNwZWNDaGFuZ2VEdG8SDAoEbmFtZRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEhwKD3Rhc2tzX2NvbXBsZXRlZBgEIAEoBUgAiAEBEhgKC3Rhc2tzX3RvdGFsGAUgASgFSAGIAQESGQoRaGFzX3Byb3Bvc2FsX2ZpbGUYBiABKAgSDQoFZmlsZXMYByADKAkSIgoVbm90X2ltcG9ydGFibGVfcmVhc29uGAggASgJSAKIAQFCEgoQX3Rhc2tzX2NvbXBsZXRlZEIOCgxfdGFza3NfdG90YWxCGAoWX25vdF9pbXBvcnRhYmxlX3JlYXNvbiJpCiZVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc0xpc3RSZXNwb25zZUR0bxI/CgdjaGFuZ2VzGAEgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5VbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRHRvIjkKI0NvdW50VW5saW5rZWRPcGVuU3BlY0NoYW5nZXNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiawokQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEkMKBnJlc3VsdBgBIAEoCzIzLmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZUNvdW50RHRvIi8KHlVubGlua2VkT3BlblNwZWNDaGFuZ2VDb3VudER0bxINCgVjb3VudBgBIAEoBSJiCiRHZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtjaGFuZ2VfbmFtZRgCIAEoCRIRCglmaWxlX3BhdGgYAyABKAkiawolR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5zZXNzaW9uLnYxLlVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvIkMKHVVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvEhEKCWZpbGVfcGF0aBgBIAEoCRIPCgdjb250ZW50GAIgASgJIkgKHEltcG9ydE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFuZ2VfbmFtZXMYAiADKAkiZAodSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5JbXBvcnRPcGVuU3BlY0NoYW5nZXNSZXN1bHREdG8iZAoeSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzdWx0RHRvEkIKB3Jlc3VsdHMYASADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8imAEKHEltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8SDAoEbmFtZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSOAoHc2Vzc2lvbhgDIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvEhQKB21lc3NhZ2UYBCABKAlIAIgBAUIKCghfbWVzc2FnZSJwCh5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI6CgRib2R5GAIgASgLMiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVByb3Bvc2FsUmVxdWVzdCJtCh9PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0byJsChdHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEj0KBGJvZHkYAiABKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXF1ZXN0RHRvIlkKGEdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byJoChVBcmNoaXZlU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI7CgRib2R5GAIgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8iUQoWQXJjaGl2ZVNlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byJqChZFeGVjdXRlUHJvcG9zYWxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSPAoEYm9keRgCIAEoCzIuLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdER0byJYChdFeGVjdXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIsChZDb21wbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiUgoXQ29tcGxldGVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iMwodVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJaCh5WYWxpZGF0ZVNlc3Npb25FeGVjdXRlUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjEKG1ZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlgKHFZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjMKHVZhbGlkYXRlU2Vzc2lvbkFyY2hpdmVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWgoeVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblJlc3VsdER0byJyCiFQcm9wb3NhbE9wdGltaXphdGlvbkRpYWdub3N0aWNEdG8SDAoEY29kZRgBIAEoCRIQCghzZXZlcml0eRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhIKBWZpZWxkGAQgASgJSACIAQFCCAoGX2ZpZWxkIo4BCi1Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SEAoIaXNfdmFsaWQYASABKAgSSwoLZGlhZ25vc3RpY3MYAiADKAsyNi5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uRGlhZ25vc3RpY0R0byLcAwonUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvEhcKCnNjcmlwdF9rZXkYASABKAlIAIgBARIdChBzZWxlY3RlZF9oZXJvX2lkGAIgASgJSAGIAQESHAoPY2FwdGFpbl9oZXJvX2lkGAMgASgJSAKIAQESFgoJcm9zdGVyX2lkGAQgASgJSAOIAQESawoQZXh0ZW5zaW9uX2ZpZWxkcxgFIAMoCzJRLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvLkV4dGVuc2lvbkZpZWxkc0VudHJ5EhYKCXN0YWdlX2tleRgGIAEoCUgEiAEBEh0KEHNlbGVjdGlvbl9zb3VyY2UYByABKAlIBYgBARo2ChRFeHRlbnNpb25GaWVsZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19zY3JpcHRfa2V5QhMKEV9zZWxlY3RlZF9oZXJvX2lkQhIKEF9jYXB0YWluX2hlcm9faWRCDAoKX3Jvc3Rlcl9pZEIMCgpfc3RhZ2Vfa2V5QhMKEV9zZWxlY3Rpb25fc291cmNlIr4DCiNQcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVJlc3VsdER0bxIcCg9vcHRpbWl6ZWRfdGl0bGUYASABKAlIAIgBARIoChtvcHRpbWl6ZWRfcHJvcG9zYWxfbWFya2Rvd24YAiABKAlIAYgBARIfChdvcHRpbWl6ZWRfcHJvcG9zYWxfbmFtZRgDIAEoCRIdChVvcHRpbWl6ZWRfZGVzY3JpcHRpb24YBCABKAkSVwoRc2NlbmFyaW9fc2V0dGluZ3MYBSABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0bxJWCgp2YWxpZGF0aW9uGAYgASgLMkIuaGFnaWNvZGUuc2Vzc2lvbi52MS5Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SGQoMcmF3X3Jlc3BvbnNlGAcgASgJSAKIAQFCEgoQX29wdGltaXplZF90aXRsZUIeChxfb3B0aW1pemVkX3Byb3Bvc2FsX21hcmtkb3duQg8KDV9yYXdfcmVzcG9uc2Ui0ggKJFByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIbChNyZXF1ZXN0X2ZpbmdlcnByaW50GAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgDIAEoCRIVCg1hcHBsaWVkX3RpdGxlGAQgASgJEh0KFWFwcGxpZWRfcHJvcG9zYWxfbmFtZRgFIAEoCRIgChhwcm9wb3NhbF9kcmFmdF9hdmFpbGFibGUYBiABKAgSIAoYc2NlbmFyaW9fc2V0dGluZ3Nfc3RhdHVzGAcgASgJEhoKEmFwcGxpZWRfdGl0bGVfbW9kZRgIIAEoCRIQCghpc192YWxpZBgJIAEoCBJLCgtkaWFnbm9zdGljcxgKIAMoCzI2LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25EaWFnbm9zdGljRHRvEiYKGW9wdGltaXplZF90aXRsZV9jYW5kaWRhdGUYCyABKAlIAIgBARIjChZwcm9wb3NhbF9kcmFmdF9wcmV2aWV3GAwgASgJSAGIAQESGgoNYXJ0aWZhY3RfcGF0aBgNIAEoCUgCiAEBEhsKDmNvcnJlbGF0aW9uX2lkGA4gASgJSAOIAQESHQoQcmVzb2x2ZWRfaGVyb19pZBgPIAEoCUgEiAEBEh8KEnJlc29sdmVkX2hlcm9fbmFtZRgQIAEoCUgFiAEBEh8KEnJlc29sdmVkX2hlcm9faWNvbhgRIAEoCUgGiAEBEigKG3Jlc29sdmVkX2hlcm9fZXhlY3V0b3JfdHlwZRgSIAEoCUgHiAEBEiIKFWhlcm9fc2VsZWN0aW9uX3NvdXJjZRgTIAEoCUgIiAEBEiMKFmhlcm9fcm91dGluZ19zdGFnZV9rZXkYFCABKAlICYgBARIkChdoZXJvX3JvdXRpbmdfc2NyaXB0X2tleRgVIAEoCUgKiAEBEiQKF29wdGltaXphdGlvbl9jZXNzaW9uX2lkGBYgASgJSAuIAQFCHAoaX29wdGltaXplZF90aXRsZV9jYW5kaWRhdGVCGQoXX3Byb3Bvc2FsX2RyYWZ0X3ByZXZpZXdCEAoOX2FydGlmYWN0X3BhdGhCEQoPX2NvcnJlbGF0aW9uX2lkQhMKEV9yZXNvbHZlZF9oZXJvX2lkQhUKE19yZXNvbHZlZF9oZXJvX25hbWVCFQoTX3Jlc29sdmVkX2hlcm9faWNvbkIeChxfcmVzb2x2ZWRfaGVyb19leGVjdXRvcl90eXBlQhgKFl9oZXJvX3NlbGVjdGlvbl9zb3VyY2VCGQoXX2hlcm9fcm91dGluZ19zdGFnZV9rZXlCGgoYX2hlcm9fcm91dGluZ19zY3JpcHRfa2V5QhoKGF9vcHRpbWl6YXRpb25fY2Vzc2lvbl9pZCLVAQolUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0bxJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlUmVzdWx0RHRvEkoKB3N1bW1hcnkYAiABKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgDIAEoCSKJAwoXT3B0aW1pemVQcm9wb3NhbFJlcXVlc3QSEwoLZGVzY3JpcHRpb24YASABKAkSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgCIAEoCUgAiAEBEiMKFm9wdGltaXphdGlvbl9kaXJlY3Rpb24YAyABKAlIAYgBARISCgV0aXRsZRgEIAEoCUgCiAEBEhgKEGlzX2RlZmF1bHRfdGl0bGUYBSABKAgSJQoYb3JpZ2luYWxfY2hpZWZfY29tcGxhaW50GAYgASgJSAOIAQESVwoRc2NlbmFyaW9fc2V0dGluZ3MYByABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0b0IcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIZChdfb3B0aW1pemF0aW9uX2RpcmVjdGlvbkIICgZfdGl0bGVCGwoZX29yaWdpbmFsX2NoaWVmX2NvbXBsYWludCJFChpQbGFubmluZ0RpcmVjdGlvbk9wdGlvbkR0bxIPCgJpZBgBIAEoCUgAiAEBEg8KB2VuYWJsZWQYAiABKAhCBQoDX2lkIowCChpHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdER0bxIgChNlbmFibGVfZXhwbG9yZV9tb2RlGAEgASgISACIAQESTAoTcGxhbm5pbmdfZGlyZWN0aW9ucxgCIAMoCzIvLmhhZ2ljb2RlLnNlc3Npb24udjEuUGxhbm5pbmdEaXJlY3Rpb25PcHRpb25EdG8SJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgDIAEoCUgBiAEBEhQKB2hlcm9faWQYBCABKAlIAogBAUIWChRfZW5hYmxlX2V4cGxvcmVfbW9kZUIcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIKCghfaGVyb19pZCI8ChhBcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIj0KGUV4ZWN1dGVQcm9wb3NhbFJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIlcKC0NvbmZsaWN0RHRvEgwKBHR5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhIKCnJlc29sdXRpb24YBCABKAkiawoSVmFsaWRhdGlvbklzc3VlRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIQCghzZXZlcml0eRgDIAEoCRIWCgllbnRpdHlfaWQYBCABKAlIAIgBAUIMCgpfZW50aXR5X2lkIoUBChRWYWxpZGF0aW9uU3VtbWFyeUR0bxIVCg1wcm9qZWN0X2NvdW50GAEgASgFEhUKDXNlc3Npb25fY291bnQYAiABKAUSHwoXZHVwbGljYXRlX3Byb2plY3RfY291bnQYAyABKAUSHgoWb3JwaGFuZWRfc2Vzc2lvbl9jb3VudBgEIAEoBSKMAgoTVmFsaWRhdGlvblJlc3VsdER0bxIQCghpc192YWxpZBgBIAEoCBI5Cgh3YXJuaW5ncxgCIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjcKBmVycm9ycxgDIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjMKCWNvbmZsaWN0cxgEIAMoCzIgLmhhZ2ljb2RlLnNlc3Npb24udjEuQ29uZmxpY3REdG8SOgoHc3VtbWFyeRgFIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblN1bW1hcnlEdG8yngwKFlNlc3Npb25Qcm9wb3NhbFNlcnZpY2UShAEKF09wdGltaXplU2Vzc2lvblByb3Bvc2FsEjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QaNC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wdGltaXplU2Vzc2lvblByb3Bvc2FsUmVzcG9uc2USbwoQR2VuZXJhdGVQcm9wb3NhbBIsLmhhZ2ljb2RlLnNlc3Npb24udjEuR2VuZXJhdGVQcm9wb3NhbFJlcXVlc3QaLS5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRJpCg5BcmNoaXZlU2Vzc2lvbhIqLmhhZ2ljb2RlLnNlc3Npb24udjEuQXJjaGl2ZVNlc3Npb25SZXF1ZXN0GisuaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlc3BvbnNlEmwKD0V4ZWN1dGVQcm9wb3NhbBIrLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdBosLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVzcG9uc2USbAoPQ29tcGxldGVTZXNzaW9uEisuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXF1ZXN0GiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXNwb25zZRKBAQoWVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZRIyLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QaMy5oYWdpY29kZS5zZXNzaW9uLnYxLlZhbGlkYXRlU2Vzc2lvbkV4ZWN1dGVSZXNwb25zZRJ7ChRWYWxpZGF0ZVNlc3Npb25TdGFydBIwLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uU3RhcnRSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25TdGFydFJlc3BvbnNlEoEBChZWYWxpZGF0ZVNlc3Npb25BcmNoaXZlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25BcmNoaXZlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEpABChtMaXN0VW5saW5rZWRPcGVuU3BlY0NoYW5nZXMSNy5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QaOC5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpMBChxDb3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzEjguaGFnaWNvZGUuc2Vzc2lvbi52MS5Db3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBo5LmhhZ2ljb2RlLnNlc3Npb24udjEuQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpYBCh1HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZRI5LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXF1ZXN0GjouaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlc3BvbnNlEn4KFUltcG9ydE9wZW5TcGVjQ2hhbmdlcxIxLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVxdWVzdBoyLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2VCKaoCJlBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5TZXNzaW9uLlYxYgZwcm90bzM",[Ne,de]),Sb=v(Ie,15),Vb=v(Ie,17),Gb=v(Ie,19),Nb=v(Ie,21),vb=v(Ie,23),Wb=v(Ie,36),yb=v(Ie,38),Ib=v(Ie,39),Xb=v(Ie,40),Yb=We(Ie,0),Cb=oe("CixoYWdpY29kZS9jb29yZGluYXRpb24vdjEvcmVzb3VyY2VfbG9jay5wcm90bxIYaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxIuMFCgpMb2NrU3RhdHVzEg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEhAKCHBvc2l0aW9uGAQgASgFEg0KBWVwb2NoGAUgASgDEjQKEGxlYXNlX2V4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKE21heF9ob2xkX2V4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2hvbGRlcl9vd25lcl9pZBgIIAEoCRIUCgxob2xkZXJfbGFiZWwYCSABKAkSFAoMcXVldWVfbGVuZ3RoGAogASgFEiIKGnN1Z2dlc3RlZF9wb2xsX2ludGVydmFsX21zGAsgASgFEicKH3N1Z2dlc3RlZF9oZWFydGJlYXRfaW50ZXJ2YWxfbXMYDCABKAUSLwoLc2VydmVyX3RpbWUYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiEKGXJlcXVpc2l0aW9uZWRfYnlfb3duZXJfaWQYDiABKAkSGgoScmVxdWlzaXRpb25fcmVhc29uGA8gASgJEjQKEHJlcXVpc2l0aW9uZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKFGNoZWNrX2luX2VhcmxpZXN0X2F0GBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChJjaGVja19pbl9sYXRlc3RfYXQYEiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKEHR1cm5fZWFybGllc3RfYXQYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDnR1cm5fbGF0ZXN0X2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKrAQoSQWNxdWlyZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGgoNbGVhc2Vfc2Vjb25kcxgDIAEoBUgAiAEBEhIKBWxhYmVsGAQgASgJSAGIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgCiAEBQhAKDl9sZWFzZV9zZWNvbmRzQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJLChNBY3F1aXJlTG9ja1Jlc3BvbnNlEjQKBnJlc3VsdBgBIAEoCzIkLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5Mb2NrU3RhdHVzImUKFEdldExvY2tTdGF0dXNSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGQoMd2FpdF9zZWNvbmRzGAMgASgFSACIAQFCDwoNX3dhaXRfc2Vjb25kcyJNChVHZXRMb2NrU3RhdHVzUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMigQEKEFJlbmV3TG9ja1JlcXVlc3QSDwoHbG9ja19pZBgBIAEoCRIQCghvd25lcl9pZBgCIAEoCRIaCg1sZWFzZV9zZWNvbmRzGAMgASgFSACIAQESEgoFZXBvY2gYBCABKANIAYgBAUIQCg5fbGVhc2Vfc2Vjb25kc0IICgZfZXBvY2giSQoRUmVuZXdMb2NrUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMiVQoSUmVsZWFzZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSEgoFZXBvY2gYAyABKANIAIgBAUIICgZfZXBvY2giWQoTUmVsZWFzZUxvY2tSZXNwb25zZRIQCghyZWxlYXNlZBgBIAEoCBIXCg9wcmV2aW91c19zdGF0dXMYAiABKAkSFwoPaG9sZGVyX293bmVyX2lkGAMgASgJIpEBChZSZXF1aXNpdGlvbkxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGcmVhc29uGAMgASgJEhIKBWxhYmVsGAQgASgJSACIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgBiAEBQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJPChdSZXF1aXNpdGlvbkxvY2tSZXNwb25zZRI0CgZyZXN1bHQYASABKAsyJC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N0YXR1cyIyChBMaXN0TG9ja3NSZXF1ZXN0EhMKBnByZWZpeBgBIAEoCUgAiAEBQgkKB19wcmVmaXgiSQoRTGlzdExvY2tzUmVzcG9uc2USNAoFbG9ja3MYASADKAsyJS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N1bW1hcnki3QEKC0xvY2tTdW1tYXJ5Eg8KB2xvY2tfaWQYASABKAkSFwoPaG9sZGVyX293bmVyX2lkGAIgASgJEhQKDGhvbGRlcl9sYWJlbBgDIAEoCRINCgVlcG9jaBgEIAEoAxI0ChBsZWFzZV9leHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9ob2xkX3N0YXJ0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHF1ZXVlX2xlbmd0aBgHIAEoBTKjBQoTUmVzb3VyY2VMb2NrU2VydmljZRJqCgtBY3F1aXJlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5BY3F1aXJlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuQWNxdWlyZUxvY2tSZXNwb25zZRJwCg1HZXRMb2NrU3RhdHVzEi4uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXF1ZXN0Gi8uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXNwb25zZRJkCglSZW5ld0xvY2sSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVuZXdMb2NrUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZW5ld0xvY2tSZXNwb25zZRJqCgtSZWxlYXNlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZWxlYXNlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVsZWFzZUxvY2tSZXNwb25zZRJ2Cg9SZXF1aXNpdGlvbkxvY2sSMC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVxdWlzaXRpb25Mb2NrUmVxdWVzdBoxLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZXF1aXNpdGlvbkxvY2tSZXNwb25zZRJkCglMaXN0TG9ja3MSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTGlzdExvY2tzUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5MaXN0TG9ja3NSZXNwb25zZUIuqgIrUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvb3JkaW5hdGlvbi5WMWIGcHJvdG8z",[Ne]),Bb=We(Cb,0),Hn=new Set([b.INT64,b.UINT64,b.SINT64,b.FIXED64,b.SFIXED64]),Us=e=>e.typeName.startsWith("google.protobuf.");function Qn(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)||Us(e))return t;const n=t;for(const o of e.fields){const r=n[o.jsonName];r!==void 0&&(n[o.jsonName]=wb(o,r))}return n}function wb(e,t){switch(e.fieldKind){case"scalar":return Hn.has(e.scalar)?Qn(t):t;case"message":return un(e.message,t);case"list":return Array.isArray(t)?e.listKind==="scalar"?Hn.has(e.scalar)?t.map(Qn):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]=Qn(n[o]):e.mapKind==="message"&&(n[o]=un(e.message,n[o]));return n}default:return t}}function Fb(e,t){return un(e,ls(e,t,{alwaysEmitImplicit:!0}))}function kb(e,t){return Fb(e,t).result}function mn(e,t,n=0){if(t===null||typeof t!="object"||Array.isArray(t)||Us(e)||n>8)return t;const o=t;for(const r of e.fields){const a=o[r.jsonName];if(!(a===null||typeof a!="object")){if(r.fieldKind==="message")mn(r.message,a,n+1);else if(r.fieldKind==="list"&&r.listKind==="message"&&Array.isArray(a))a.forEach(i=>mn(r.message,i,n+1));else if(r.fieldKind==="map"&&!Array.isArray(a)){const i=a;for(const s of Object.keys(i)){const l=i[s];r.mapKind==="scalar"&&r.scalar===b.STRING?l===null?delete i[s]:(typeof l=="number"||typeof l=="boolean")&&(i[s]=String(l)):r.mapKind==="message"&&mn(r.message,l,n+1)}}}}return t}function D(e,t){return bs(e,t===void 0?t:mn(e,JSON.parse(JSON.stringify(t))),{ignoreUnknownFields:!0})}function Fa(e,t){const n=Ws(e);if(n)throw t.forEach((o,r)=>{n.metadata.append(r,o)}),n;if(!t.has("Grpc-Status")&&!e.has("Grpc-Status"))throw new B("protocol error: missing status",S.Internal)}function Ub(e,t,n,o){var r,a;const i=new Headers(n??{});i.set(Vm,e?Xm:Ym),i.set(Im,"1");const s=(a=(r=i.get("User-Agent"))!==null&&r!==void 0?r:i.get("X-User-Agent"))!==null&&a!==void 0?a:"connect-es/2.2.0";return i.set(ym,s),o&&i.set(Wm,s),t!==void 0&&i.set(Nm,`${t}m`),i}function ka(e,t,n,o,r,a){const i=Ub(e,t,n,a);return r!=null&&i.set(Ns,r.name),o.length>0&&i.set(Gm,o.map(s=>s.name).join(",")),i}function Jb(e){switch(e){case 400:return S.Internal;case 401:return S.Unauthenticated;case 403:return S.PermissionDenied;case 404:return S.Unimplemented;case 429:return S.Unavailable;case 502:return S.Unavailable;case 503:return S.Unavailable;case 504:return S.Unavailable;default:return S.Unknown}}function xb(e,t){var n;if(e>=200&&e<300)return{foundStatus:t.has(vs),headerError:Ws(t)};throw new B(decodeURIComponent((n=t.get("Grpc-Message"))!==null&&n!==void 0?n:`HTTP ${e}`),Jb(e),t)}function Ua(e,t,n){const{foundStatus:o,headerError:r}=xb(t,n);let a;const i=n.get(Ns);if(i!==null&&i.toLowerCase()!=="identity"&&(a=e.find(s=>s.name===i),!a))throw new B(`unsupported response encoding "${i}"`,S.Internal,n);return{foundStatus:o,compression:a,headerError:r}}var Ja=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(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},ze=function(e){return this instanceof ze?(this.v=e,this):new ze(e)},Kb=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(R){return Promise.resolve(R).then(p,h)}}function s(p,R){o[p]&&(r[p]=function(V){return new Promise(function(X,J){a.push([p,V,X,J])>1||l(p,V)})},R&&(r[p]=R(r[p])))}function l(p,R){try{c(o[p](R))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof ze?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,R){p(R),a.shift(),a.length&&l(a[0][0],a[0][1])}};function zb(e){return{async unary(t,n,o,r,a,i){const s=Ia(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,await km({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!1,service:t.parent,method:t,requestMethod:"POST",url:ya(e.baseUrl,t),header:ka(e.useBinaryFormat,o,r,e.acceptCompression,e.sendCompression,!0),contextValues:i??va(),message:a},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:dn(Ss([l.message]),Ra(s.getI(e.useBinaryFormat)),Sa(e.sendCompression,e.compressMinBytes),Ga(),{propagateDownStreamError:!0})}),{compression:u,headerError:h}=Ua(e.acceptCompression,c.status,c.header),{trailer:f,message:p}=await dm(c.body,Na(e.readMaxBytes),Va(u??null,e.readMaxBytes),Ea(s.getO(e.useBinaryFormat),128,Wa()),async R=>{var V,X,J,d;let m,A;try{for(var g=!0,Z=Ja(R),G;G=await Z.next(),V=G.done,!V;g=!0){d=G.value,g=!1;const C=d;if(C.end){if(A!==void 0)throw new B("protocol error: received extra trailer",S.Unimplemented);A=C.value}else{if(m!==void 0)throw new B("protocol error: received extra output message for unary method",S.Unimplemented);m=C.value}}}catch(C){X={error:C}}finally{try{!g&&!V&&(J=Z.return)&&await J.call(Z)}finally{if(X)throw X.error}}return{trailer:A,message:m}},{propagateDownStreamError:!1});if(f===void 0)throw h??new B("protocol error: missing trailer",c.header.has("Grpc-Status")?S.Unimplemented:S.Unknown);if(Fa(f,c.header),p===void 0)throw new B("protocol error: missing output message for unary method",f.has("Grpc-Status")?S.Unimplemented:S.Unknown);return{stream:!1,service:t.parent,method:t,header:c.header,message:p,trailer:f}}})},async stream(t,n,o,r,a,i){const s=Ia(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,Um({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!0,service:t.parent,method:t,requestMethod:"POST",url:ya(e.baseUrl,t),header:ka(e.useBinaryFormat,o,r,e.acceptCompression,e.sendCompression,!0),contextValues:i??va(),message:a},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:dn(l.message,Ra(s.getI(e.useBinaryFormat)),Sa(e.sendCompression,e.compressMinBytes),Ga(),{propagateDownStreamError:!0})}),{compression:u,foundStatus:h,headerError:f}=Ua(e.acceptCompression,c.status,c.header);if(f)throw f;const p=Object.assign(Object.assign({},l),{header:c.header,trailer:new Headers,message:dn(c.body,Na(e.readMaxBytes),Va(u??null,e.readMaxBytes),Ea(s.getO(e.useBinaryFormat),128,Wa()),function(R){return Kb(this,arguments,function*(){var V,X,J,d;if(h){if((yield ze(R[Symbol.asyncIterator]().next())).done!==!0)throw new B("protocol error: extra data for trailers-only",S.InvalidArgument);return yield ze(void 0)}let m=!1;try{for(var A=!0,g=Ja(R),Z;Z=yield ze(g.next()),V=Z.done,!V;A=!0){d=Z.value,A=!1;const G=d;if(G.end){if(m)throw new B("protocol error: received extra trailer",S.InvalidArgument);m=!0,Fa(G.value,c.header),G.value.forEach((C,K)=>p.trailer.set(K,C));continue}if(m)throw new B("protocol error: received extra message after trailer",S.InvalidArgument);yield yield ze(G.value)}}catch(G){X={error:G}}finally{try{!A&&!V&&(J=g.return)&&(yield ze(J.call(g)))}finally{if(X)throw X.error}}if(!m)throw new B("protocol error: missing trailer",S.Internal)})},{propagateDownStreamError:!0})});return p}})}}}function Wn(e){let t=S.Internal;const n=tr(e).map(yn);n.some(r=>r.code=="ERR_STREAM_WRITE_AFTER_END")||n.some(r=>r.code=="ERR_STREAM_DESTROYED"||r.code=="ERR_HTTP2_INVALID_STREAM"||r.code=="ECONNRESET")?t=S.Aborted:n.some(r=>r.code=="ETIMEDOUT"||r.code=="ENOTFOUND"||r.code=="EAI_AGAIN"||r.code=="ECONNREFUSED")&&(t=S.Unavailable);const o=B.from(e,t);return o!==e&&(o.cause=e),o}function tr(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 Lb(e){switch(e){case P.PROTOCOL_ERROR:case P.INTERNAL_ERROR:case P.FLOW_CONTROL_ERROR:case P.SETTINGS_TIMEOUT:case P.FRAME_SIZE_ERROR:case P.COMPRESSION_ERROR:case P.CONNECT_ERROR:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Internal);case P.REFUSED_STREAM:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Unavailable);case P.CANCEL:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Canceled);case P.ENHANCE_YOUR_CALM:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.ResourceExhausted);case P.INADEQUATE_SECURITY:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.PermissionDenied);case P.HTTP_1_1_REQUIRED:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.PermissionDenied);default:break}}var P;(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"})(P||(P={}));var jb=(0,Zn.promisify)(pt.gzip),Tb=(0,Zn.promisify)(pt.gunzip),Hb=(0,Zn.promisify)(pt.brotliCompress),Qb=(0,Zn.promisify)(pt.brotliDecompress),Mb={name:"gzip",compress(e){return gn(jb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):gn(Js(Tb(e,{maxOutputLength:t}),t))}},Ob={name:"br",compress(e){return gn(Hb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):gn(Js(Qb(e,{maxOutputLength:t}),t))}};function gn(e){return e.then(t=>t.buffer instanceof ArrayBuffer?t:new Uint8Array(t))}function Js(e,t){return e.catch(n=>{var o;const r=yn(n);let a=S.Internal,i="decompression failed";switch(r.code){case"ERR_BUFFER_TOO_LARGE":a=S.ResourceExhausted,i=`message is larger than configured readMaxBytes ${t} after decompression`;break;case"Z_DATA_ERROR":case"ERR_PADDING_2":a=S.InvalidArgument;break;default:!((o=r.code)===null||o===void 0)&&o.startsWith("ERR__ERROR_FORMAT_")&&(a=S.InvalidArgument);break}return Promise.reject(new B(i,a,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 r of o)t.append(n,r);return t}function xs(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 r=t[o],a=t[o+1];Array.isArray(n[r])?n[r].push(a):typeof n[r]=="string"?n[r]=[n[r],a]:n[r]=a}else for(const[o,r]of Object.entries(t))Array.isArray(r)?n[o]=r.concat():r!==void 0&&(n[o]=r);if(e!==void 0)if(Array.isArray(e))for(const[o,r]of e)Mn(n,o,r);else if("forEach"in e)typeof e.forEach=="function"&&e.forEach((o,r)=>{Mn(n,r,o)});else for(const[o,r]of Object.entries(e))Mn(n,o,r);return n}function Mn(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 Ks=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,r,a,i;this.s=ho(),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:(r=t?.pingTimeoutMs)!==null&&r!==void 0?r:1e3*15,pingIdleConnection:(a=t?.pingIdleConnection)!==null&&a!==void 0?a:!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 r=await this.gotoReady();try{const a=r.conn.request(Object.assign(Object.assign({},n),{":method":e,":path":t}),o);return r.registerRequest(a),a}catch(a){if(r.conn.closed||r.conn.destroyed)continue;throw a}}}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 r=e??new B("connection aborted",S.Canceled);(n=(t=this.s).abort)===null||n===void 0||n.call(t,r);for(const a of this.shuttingDown)(o=a.abort)===null||o===void 0||o.call(a,r);this.setState(qt(r))}async gotoReady(){for(this.s.t=="ready"?this.s.isShuttingDown()||this.s.conn.closed||this.s.conn.destroyed?this.setState(On(this.authority,this.http2SessionOptions)):this.s.requiresVerify()&&await this.verify(this.s):(this.s.t=="closed"||this.s.t=="error")&&this.setState(On(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 r=this.shuttingDown.indexOf(o);r!==-1&&this.shuttingDown.splice(r,1)}}switch(e.t){case"connecting":e.conn.then(o=>{this.setState(_b(o,this.options))},o=>{this.setState(qt(o))});break;case"ready":e.onClose=()=>this.setState(ho()),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(On(this.authority,this.http2SessionOptions))},t=>{this.setState(qt(t))}).finally(()=>{this.verifying=void 0}),this.verifying)}};function ho(){return{t:"closed"}}function Db(e){return{t:"error",reason:e}}function qt(e){return e instanceof B&&B.from(e).code==S.Canceled?ho():Db(e)}function On(e,t){let n,o;const r=new Promise((c,u)=>{n=c,o=u}),a=Re.connect(e,t);a.on("connect",i),a.on("error",s);function i(){n?.(a),l()}function s(c){o?.(Wn(c)),l()}function l(){a.off("connect",i),a.off("error",s)}return{t:"connecting",conn:r,abort(c){a.destroyed||a.destroy(void 0,Re.constants.NGHTTP2_CANCEL),o?.(c)},onExitState(){l()}}}function _b(e,t){$b(e),e.unref();let n=Date.now(),o=0,r,a,i=!1,s=!1,l;V();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(),R()),g.once("response",()=>{n=Date.now(),u()}),g.once("close",()=>{o--,o==0&&(e.unref(),u(),V())})},responseByteRead(g){g.session===e&&(e.closed||e.destroyed||o<=0||(n=Date.now(),u()))},verify(){return e.ref(),new Promise(g=>{const Z=()=>{g(!1)};p(()=>{o==0&&e.unref(),e.off("error",Z),e.off("close",Z),g(!0)}),e.once("error",Z),e.once("close",Z)})},abort(g){e.destroyed||(e.once("error",()=>{}),e.destroy(g,Re.constants.NGHTTP2_CANCEL))},onExitState(){c.isShuttingDown()||(A(),this.onError=void 0,this.onClose=void 0)}};function u(){h(),(o>0||t.pingIdleConnection)&&(r=Dn(f,t.pingIntervalMs))}function h(){clearTimeout(r),clearTimeout(a)}function f(){p(u)}function p(g){clearTimeout(a),a=Dn(()=>{e.destroy(new B("PING timed out",S.Unavailable),Re.constants.NGHTTP2_CANCEL)},t.pingTimeoutMs),e.ping((Z,G)=>{if(clearTimeout(a),Z===null){if(G>t.pingTimeoutMs){e.destroy(new B("PING timed out",S.Unavailable),Re.constants.NGHTTP2_CANCEL);return}n=Date.now(),g()}})}function R(){clearTimeout(l)}function V(){l=Dn(X,t.idleConnectionTimeoutMs)}function X(){e.close(),d()}function J(g,Z,G){if(g===Re.constants.NGHTTP2_NO_ERROR&&o===0){e.destroy(new B("received GOAWAY without any open streams",S.Canceled),Re.constants.NGHTTP2_NO_ERROR);return}i=!0;const C=Buffer.from("too_many_pings","ascii");G?.equals(C)&&(t.pingIntervalMs=t.pingIntervalMs*2,s=!0)}function d(){var g;A(),(g=c.onClose)===null||g===void 0||g.call(c)}function m(g){var Z,G;if(A(),s){const C=new B(`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`,S.ResourceExhausted);(Z=c.onError)===null||Z===void 0||Z.call(c,C)}else(G=c.onError)===null||G===void 0||G.call(c,Wn(g))}function A(){h(),R(),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 Dn(e,t){if(!(t>2147483647))return setTimeout(e,t).unref()}function $b(e){if(e.connecting)throw new B("expected open session, but it is connecting",S.Internal);if(e.destroyed)throw new B("expected open session, but it is destroyed",S.Internal);if(e.closed)throw new B("expected open session, but it is closed",S.Internal)}function xa(e){var t;return e.httpVersion=="1.1"?Pb(e.nodeOptions):qb((t=e.sessionProvider)!==null&&t!==void 0?t:(n=>new Ks(n)))}function Pb(e){return async function(n){const o=Ls(n.signal);return new Promise((r,a)=>{o.onError(i=>{a(i)}),eg(o,n.url,Object.assign(Object.assign({},e),{headers:xs(n.header,e?.headers),method:n.method}),i=>{zs(n,i,o),i.on("response",s=>{var l;s.on("error",o.error),o.onError(u=>s.destroy(u));const c=new Headers;r({status:(l=s.statusCode)!==null&&l!==void 0?l:0,header:In(s.headers),body:tg(o,s,c),trailer:c})})})})}}function qb(e){return function(n){const o=Ls(n.signal),r=e(n.url);return new Promise((a,i)=>{o.onError(s=>{i(s)}),ng(o,r,n.url,n.method,xs(n.header),{},s=>{zs(n,s,o),s.on("response",l=>{var c;a({status:(c=l[":status"])!==null&&c!==void 0?c:0,header:In(l),body:rg(o,s,r),trailer:og(s)})})})})}}function eg(e,t,n,o){let r;new URL(t).protocol.startsWith("https")?r=to.request(t,n):r=eo.request(t,n),e.onError(a=>r.destroy(a)),r.flushHeaders(),r.on("error",e.error),r.on("socket",function(i){function s(){i.off("connect",s),o(r)}i.readyState==="open"?o(r):i.on("connect",s)})}function tg(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const r=await e.race(o.next());return r.done===!0&&(In(t.trailers).forEach((a,i)=>{n.set(i,a)}),e.close()),r},throw(r){throw e.error(r),r}}}}}function ng(e,t,n,o,r,a,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 B(l,S.Internal));return}t.request(o,s.pathname+s.search,r,{}).then(l=>{e.onError(c=>{if(l.closed)return;const u=c.code==S.Canceled?P.CANCEL:P.INTERNAL_ERROR;return new Promise(h=>l.close(u,h))}),l.on("error",function(u){l.writableEnded&&tr(u).map(yn).some(h=>h.code=="ERR_STREAM_WRITE_AFTER_END")||e.error(u)}),l.on("close",function(){const u=Lb(l.rstCode);u&&e.error(u)}),i(l)},l=>{e.error(l)})}function og(e){const t=new Headers;return e.on("trailers",n=>{In(n).forEach((o,r)=>{t.set(r,o)})}),t}function rg(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const r=await e.race(o.next());return r.done===!0&&e.close(),n?.notifyResponseByteRead(t),r},throw(r){throw e.error(r),r}}}}}async function zs(e,t,n){if(e.body===void 0){await new Promise(r=>t.end(r));return}const o=e.body[Symbol.asyncIterator]();return new Promise(r=>{a();function a(){n.isClosed()||o.next().then(i=>{if(i.done===!0){t.end(r);return}t.write(i.value,"binary",s=>{if(s==null){a();return}o.throw!==void 0&&o.throw(Wn(s)).catch(()=>{}),!(t.writableEnded&&tr(s).map(yn).some(l=>l.code=="ERR_STREAM_WRITE_AFTER_END"))&&n.error(s)})},i=>{n.error(i)})}})}function Ls(e){let t,n=!1,o,r=[];const a={error(l){if(!n){n=!0,o=l instanceof B?l:Wn(l),t?.(o);for(const c of r)c(o);i()}},close(){n||(n=!0,t&&t(new B("sentinel completed early",S.Internal)),i())},isClosed(){return n},onError(l){n?o!==void 0&&l(o):r.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 B("sentinel completed early",S.Internal)),u}};function i(){e&&e.removeEventListener("abort",s),r=[],t=void 0}function s(){a.error(Lt(this))}return e&&(e.addEventListener("abort",s),e.aborted&&a.error(Lt(e))),a}function ag(e){var t,n,o,r;let a;if(e.httpVersion=="2"){let i;e.sessionManager?i=e.sessionManager:i=new Ks(e.baseUrl,{pingIntervalMs:e.pingIntervalMs,pingIdleConnection:e.pingIdleConnection,pingTimeoutMs:e.pingTimeoutMs,idleConnectionTimeoutMs:e.idleConnectionTimeoutMs},e.nodeOptions),a=xa({httpVersion:"2",sessionProvider:()=>i})}else a=xa({httpVersion:"1.1",nodeOptions:e.nodeOptions});return Object.assign(Object.assign(Object.assign({},e),{httpClient:a,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:(r=e.acceptCompression)!==null&&r!==void 0?r:[Mb,Ob]}),nm(e.readMaxBytes,e.writeMaxBytes,e.compressMinBytes))}function ig(e){return zb(ag(e))}function sg(e){return`cli/${e??"unknown"}`}var lg=sg("0.1.0-dev.55.1.790ae59"),cg="/grpc";function dg(e){return`${e.replace(/\/+$/,"")}${cg}`}var ug=e=>async t=>{const{token:n,lang:o}=ks();return t.header.set("X-Hagi-Client",lg),n&&t.header.set("Authorization",`Bearer ${n}`),o&&t.header.set("Accept-Language",o),e(t)},en;function Xe(){const e=dg(ks().baseUrl);return(!en||en.baseUrl!==e)&&(en={baseUrl:e,transport:ig({baseUrl:e,httpVersion:"1.1",useBinaryFormat:!0,interceptors:[ug]})}),en.transport}function Le(e){return e?Qd(e).toISOString():null}function pn(e){return e.length>0?e:null}function Ka(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:Ka(e.checkInEarliestAt,e.checkInLatestAt),turnWindow:Ka(e.turnEarliestAt,e.turnLatestAt)}}function mg(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 hg(e){return e.locks.map(mg)}var Ze=()=>ve(bh,Xe()),ct=()=>ve(Vh,Xe()),De=()=>ve(Xh,Xe()),za=()=>ve(wh,Xe()),he=()=>ve($h,Xe()),La=()=>ve(eb,Xe()),xe=()=>ve(hb,Xe()),nn=()=>ve(Eb,Xe()),Bt=()=>ve(Yb,Xe()),dt=()=>ve(Bb,Xe());async function F(e,t){return kb(e,await t)}function bg(){return{listSessions:async e=>F(ab,xe().listSessions({type:e.type,activeOnly:e.activeOnly,includeArchived:e.includeArchived,projectId:e.projectId,projectIds:e.projectIds??[]})),getSession:async e=>F(ob,xe().getSession({sessionId:e})),getSessionMessages:async(e,t={})=>F(bb,nn().getSessionMessages({sessionId:e,page:t.page,pageSize:t.pageSize,historyScope:t.historyScope,order:t.order})),createProposalSession:async e=>F(nb,xe().openSession({body:D(db,e)})),createChatSession:async e=>F(tb,xe().openChatSession({body:D(cb,e)})),createHagiTaskSession:async e=>F(lb,xe().startHagiTaskSession({body:D(mb,e)})),listHagiTaskSchemas:async()=>F(Ch,za().listPresetTaskSchemas({})),getHagiTaskSchema:async e=>F(Bh,za().getPresetTaskSchema({presetTaskId:e})),updateSession:async(e,t)=>F(rb,xe().saveSession({sessionId:e,body:D(ub,t)})),deleteSession:async(e,t)=>F(ib,xe().deleteSession({sessionId:e,deleteFiles:t??!1})),sendMessage:async(e,t)=>F(pb,nn().postSessionMessage({sessionId:e,body:D(Zb,t)})),steerSession:async(e,t)=>F(gb,nn().steerSession({sessionId:e,body:D(fb,t)})),optimizeProposal:async(e,t)=>F(Sb,Bt().optimizeSessionProposal({sessionId:e,body:D(Wb,t)})),generateProposal:async(e,t)=>F(Vb,Bt().generateProposal({sessionId:e,body:D(yb,t)})),executeProposal:async(e,t)=>F(Nb,Bt().executeProposal({sessionId:e,body:D(Xb,t??{})})),archiveProposal:async(e,t)=>F(Gb,Bt().archiveSession({sessionId:e,body:D(Ib,t??{})})),completeProposal:async e=>F(vb,Bt().completeSession({sessionId:e})),submitAnnotations:async(e,t)=>F(Ab,nn().submitSessionAnnotations({sessionId:e,body:D(Rb,t)})),listProjects:async()=>F(Ph,La().getAggregatedData({forceRefresh:!1})),getTokenMonitorUsage:async()=>F(qh,La().getTokenMonitorUsage({})),createProject:async e=>F(eh,Ze().createProject({body:D(ch,e)})),updateProject:async(e,t)=>F(th,Ze().updateProject({id:e,body:D(dh,t)})),deleteProject:async e=>{await Ze().deleteProject({id:e})},getMonoSpecsManagement:async e=>F(nh,Ze().getMonoSpecsManagement({projectId:e})),saveMonoSpecsManagement:async(e,t)=>F(sh,Ze().updateMonoSpecsManagement({projectId:e,body:D(mh,t)})),initializeMonoSpecsManagement:async e=>F(ih,Ze().initializeMonoSpecs({projectId:e})),reloadMonoSpecsManagement:async e=>F(oh,Ze().reloadMonoSpecs({projectId:e})),validateMonoSpecs:async e=>F(lh,Ze().validateMonoSpecsConfig({body:D(hh,e)})),cloneMonoSpecsRepositories:async(e,t)=>F(rh,Ze().cloneMonoSpecsRepositories({projectId:e,body:D(uh,t)})),removeMonoSpecsRepositoryCheckout:async(e,t,n)=>F(ah,Ze().removeMonoSpecsRepositoryCheckout({projectId:e,path:t,force:n})),listPlans:async()=>F(Gh,De().listScheduledPlans({})),getPlan:async e=>F(Nh,De().getScheduledPlan({id:e})),createPlan:async e=>F(vh,De().createScheduledPlan({body:D(wa,e)})),updatePlan:async(e,t)=>F(Wh,De().updateScheduledPlan({id:e,body:D(wa,t)})),deletePlan:async e=>{await De().deleteScheduledPlan({id:e})},runPlan:async e=>F(yh,De().runScheduledPlan({id:e})),startPlan:async e=>F(Ih,De().startScheduledPlan({id:e})),listVaults:async()=>F(gh,ct().listVaults({})),createVault:async e=>F(ph,ct().createVault({body:D(Eh,e)})),updateVault:async(e,t)=>F(Ah,ct().updateVault({id:e,body:D(Sh,t)})),deleteVault:async(e,t)=>F(fh,ct().deleteVault({id:e,deleteLocalFiles:t??!1})),listVaultFiles:async(e,t)=>F(Zh,ct().getVaultFiles({id:e,path:t})),previewVaultFile:async(e,t)=>F(Rh,ct().getVaultFilePreview({id:e,path:t})),archiveChat:async e=>F(sb,xe().archiveChatSession({sessionId:e})),listLocalSkills:async()=>F(Fh,he().getLocalSkills({})),uninstallLocalSkill:async e=>F(kh,he().uninstallLocalSkill({body:D(Qh,e)})),setBuiltInSkillAvailability:async e=>F(Uh,he().setBuiltInSkillAvailability({body:D(Mh,e)})),searchSkillGallery:async e=>F(Jh,he().getSkillGallery({query:e})),getSkillGalleryDetail:async(e,t)=>F(xh,he().getSkillGalleryDetail({id:e,source:t})),getSkillGalleryAudit:async(e,t)=>F(Kh,he().getSkillGalleryAudit({id:e,source:t})),installGallerySkill:async e=>F(Hh,he().installSkill({body:D(_h,e)})),listTrustedSkillProviders:async()=>F(zh,he().getTrustedSkillProviders({})),upsertTrustedSkillProvider:async e=>F(Lh,he().upsertTrustedSkillProvider({body:D(Oh,e)})),deleteTrustedSkillProvider:async e=>F(jh,he().deleteTrustedSkillProvider({body:D(Dh,e)})),resetTrustedSkillProviders:async()=>F(Th,he().resetTrustedSkillProviders({})),acquireLock:async e=>tn((await dt().acquireLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,label:e.label,sessionId:e.sessionId})).result),getLockStatus:async(e,t)=>tn((await dt().getLockStatus({lockId:e.lockId,ownerId:e.ownerId,waitSeconds:e.waitSeconds},{signal:t})).result),renewLock:async(e,t)=>tn((await dt().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 dt().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 dt().requisitionLock({lockId:e.lockId,ownerId:e.ownerId,reason:e.reason,label:e.label,sessionId:e.sessionId})).result),listLocks:async e=>hg(await dt().listLocks({prefix:e}))}}function js(e){return process.on("SIGINT",e),process.on("SIGTERM",e),()=>{process.off("SIGINT",e),process.off("SIGTERM",e)}}function Xn(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 bo(e){const t=e?.map(n=>k(n)).filter(Boolean);return t&&t.length>0?t:void 0}function Ts(e=process.env,t={stdout:n=>{process.stdout.write(n)},stderr:n=>{process.stderr.write(n)}}){return{api:bg(),env:e,io:t,sleep:Xn}}function gg(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:Pm({baseUrl:n.baseUrl,token:n.token,lang:n.lang},t.env)}}var pg=5e3,Ag=1e3,fg=1e4;function Hs(e){return Math.min(Ag*2**Math.max(0,e-1),fg)}async function go(e,t,n){if(!n){await e.sleep(t);return}if(n.aborted)return;let o=()=>{};const r=new Promise(a=>{o=a,n.addEventListener("abort",o,{once:!0})});try{await Promise.race([e.sleep(t),r])}finally{n.removeEventListener("abort",o)}}function Zg(e,t){return e.position!==t.position||e.holder?.ownerId!==t.holder?.ownerId}async function Rg(e){const{read:t,clock:n,signal:o}=e,r=n.now(),a=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()-r)/100)/10});for(;;){if(o?.aborted)return c("cancelled");const u=a-(n.now()-r);if(u<=0)return c("timeout");const h=Math.min(20,Math.max(1,Math.ceil(u/1e3))),f=n.now();let p;try{p=await t(h,o)}catch(X){if(o?.aborted)return c("cancelled");if(!Cs(X))throw X;l+=1,await go(n,Math.min(Hs(l),u),o);continue}l=0,s+=1;const R=i;if(i=p,p.status==="Holding")return c("holding");if(p.status!=="Queued")return c("lost");const V=Zg(R,p);if(V&&e.onChange?.(p),!V&&n.now()-f<1e3){const X=p.suggestedPollIntervalMs>0?p.suggestedPollIntervalMs:pg;await go(n,Math.min(X,Math.max(0,a-(n.now()-r))),o)}}}var Eg="HAGI_LOCK_OWNER",Sg="HAGI_SESSION_ID";function gt(e){const t=e?.trim();return t||void 0}function Vg(e,t){const n=gt(e)??gt(t.HAGI_LOCK_OWNER)??gt(t.HAGI_SESSION_ID);if(!n)throw new N(`No lock owner. Pass your own session ID as --owner <session-id>, or set ${Eg} (or ${Sg}). The CLI does not invent an owner ID.`);return n}function Gg(e){const t=gt(e.lockId),n=gt(e.server),o=gt(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 Nt(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 vt(e,t){return{lockId:Gg(e),ownerId:Vg(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 r=Number(o);if(r<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return r}function nr(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 Wt(e){try{return await e()}catch(t){throw Ys(t)??t}}function Qs(e){return{now:e.now??Date.now,sleep:e.sleep??Xn}}function Ng(e,t){Nt(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 r=o.wait?Vt(o.timeout,"--timeout",1)??900:void 0,a=Vt(o.leaseSeconds,"--lease-seconds",1),i=I(this,t),s=vt(o,i.env),l=await Wt(()=>i.api.acquireLock({...s,leaseSeconds:a,label:k(o.label)})),c=V=>i.io.stdout(i.outputJson?W(V):At(V,"acquire"));if(r===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??js)(()=>u.abort());let f;try{f=await Rg({initial:l,read:(V,X)=>i.api.getLockStatus({...s,waitSeconds:V},X),timeoutSeconds:r,clock:Qs(t),signal:u.signal,onChange:V=>{i.outputJson||i.io.stdout(cc(V))}})}finally{h()}let p;(f.outcome==="timeout"||f.outcome==="cancelled")&&(p=await i.api.releaseLock(s).then(()=>!0,()=>!1));const R={outcome:f.outcome,polls:f.polls,elapsedSeconds:f.elapsedSeconds,released:p};switch(i.outputJson?i.io.stdout(W({...f.status,wait:R})):i.io.stdout(f.outcome==="holding"?At(f.status,"status"):dc(f,p)),f.outcome){case"timeout":throw new Do(`Timed out after ${f.elapsedSeconds}s waiting for lock ${s.lockId}; last status ${f.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 (${f.status.status}).`,{reported:!0});default:}})}var vg=6e4,ja=[30*6e4,5*6e4],Ft="Stop using the resource now.";function Ta(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"}. ${Ft}`}case"Expired":return`Lock ${e} LOST: the lease expired or the hard cap passed. ${Ft}`;case"Queued":return`Lock ${e} LOST: this owner is queued at position ${t.position}, not holding. ${Ft}`;default:return`Lock ${e} LOST: the backend has no hold for this owner (${t.status}). ${Ft}`}}function Ha(e,t,n){if(!t)return null;const o=Date.parse(t),r=n?Date.parse(n):NaN;return Number.isNaN(r)?o:e.now()+(o-r)}async function Wg(e){const{lockId:t,ownerId:n,api:o,clock:r,signal:a}=e;let i=e.epoch,s=e.intervalSeconds===void 0?void 0:e.intervalSeconds*1e3,l=!1,c=0,u=r.now(),h=null,f=null;const p=new Set;let R=0,V=null,X=!1,J=!1;const d=(A,g,Z)=>e.emit({kind:A,message:g,errorCode:Z}),m=()=>{if(f===null)return;const A=ja.filter(Z=>!p.has(Z)&&r.now()>=f-Z);if(A.length===0)return;A.forEach(Z=>p.add(Z));const g=Math.min(...A)/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(a.aborted)return{outcome:"stopped",beats:c};let A=u;if(f!==null)for(const Z of ja)p.has(Z)||(A=Math.min(A,f-Z));if(A>r.now()&&(await go(r,A-r.now(),a),a.aborted))return{outcome:"stopped",beats:c};if(m(),r.now()<u)continue;let g;try{if(i===void 0){const Z=await o.getLockStatus({lockId:t,ownerId:n},a);if(Z.status!=="Holding"){const G=`Refusing to start: owner ${n} does not hold lock ${t}. ${Ta(t,Z)}`;return d("refused",G),{outcome:"refused",message:G,beats:c}}i=Z.epoch}g=await o.renewLock({lockId:t,ownerId:n,epoch:i,leaseSeconds:e.leaseSeconds},a)}catch(Z){if(a.aborted)return{outcome:"stopped",beats:c};const G=Ys(Z);if(G){const K=`Lock ${t} LOST: ${G.message}${/stop using/i.test(G.message)?"":` ${Ft}`}`;return d("lost",K,G.errorCode),{outcome:"lost",message:K,beats:c}}if(!Cs(Z))throw Z;R+=1;const C=r.now();V??=C,!X&&C-V>=vg&&(X=!0,d("outage",`Backend unreachable for ${Math.round((C-V)/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&&C>=h&&(J=!0,d("maybe-lost",`Lock ${t} may already be lost: the last known lease deadline passed during the outage.`)),u=r.now()+Hs(R);continue}if(g.status!=="Holding"){const Z=Ta(t,g);return d("lost",Z),{outcome:"lost",message:Z,beats:c}}c+=1,V!==null&&(X&&d("recovered",`Backend reachable again after ${Math.round((r.now()-V)/1e3)}s; heartbeat resumed.`),V=null,X=!1,J=!1),R=0,h=Ha(r,g.leaseExpiresAt,g.serverTime),f=Ha(r,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=r.now()+s}}function yg(e,t){Nt(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 r=nr(o.epoch),a=Vt(o.interval,"--interval",1),i=Vt(o.leaseSeconds,"--lease-seconds",1),s=I(this,t),l=vt(o,s.env),c=new AbortController,u=(t.onInterrupt??js)(()=>c.abort());try{const h=await Wg({...l,epoch:r,intervalSeconds:a,leaseSeconds:i,verbose:o.verbose===!0,api:s.api,clock:Qs(t),signal:c.signal,emit:f=>{s.io.stdout(s.outputJson?`${JSON.stringify({event:f.kind,...l,message:f.message,errorCode:f.errorCode})}
|
|
59
|
+
`:`${f.message}
|
|
60
|
+
`)}});if(h.outcome!=="stopped")throw new et(h.message??`Lock ${l.lockId} is lost.`,{reported:!0})}finally{u()}})}function Ig(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 r=I(this,t),a=await Wt(()=>r.api.listLocks(k(o.prefix)));r.io.stdout(r.outputJson?W({locks:a}):mc(a))})}function Xg(e,t){Nt(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 r=nr(o.epoch),a=I(this,t),i=vt(o,a.env),s=await Wt(()=>a.api.releaseLock({...i,epoch:r}));a.io.stdout(a.outputJson?W(s):uc(s))})}function Yg(e,t){Nt(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 r=nr(o.epoch),a=Vt(o.leaseSeconds,"--lease-seconds",1),i=I(this,t),s=vt(o,i.env),l=await Wt(()=>i.api.renewLock({...s,epoch:r,leaseSeconds:a}));if(l.status!=="Holding")throw i.io.stdout(i.outputJson?W(l):At(l,"renew")),new et(`Owner ${s.ownerId} no longer holds lock ${s.lockId} (${l.status}).`,{reported:!0});i.io.stdout(i.outputJson?W(l):At(l,"renew"))})}var Qa=200;function Cg(e,t){Nt(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 r=k(o.reason);if(!r||r.length>Qa)throw new N(`--reason must be 1 to ${Qa} characters.`);const a=I(this,t),i=vt(o,a.env),s=await Wt(()=>a.api.requisitionLock({...i,reason:r,label:k(o.label)}));a.io.stdout(a.outputJson?W(s):At(s,"requisition"))})}function Bg(e,t){Nt(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 r=Vt(o.waitSeconds,"--wait-seconds",0),a=I(this,t),i=vt(o,a.env),s=await Wt(()=>a.api.getLockStatus({...i,waitSeconds:r}));a.io.stdout(a.outputJson?W(s):At(s,"status"))})}function wg(e,t){const n=e.command("lock").description("Take turns on a shared resource with other agents: a fair queue lock with a heartbeat.");Ng(n,t),Bg(n,t),Yg(n,t),yg(n,t),Xg(n,t),Cg(n,t),Ig(n,t)}var Fg=[wg];function kg(e,t,n=Fg){const o=e.command("agent").description("Manage agent-facing capabilities, such as the shared resource lock.");for(const r of n)r(o,t)}function Ug(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 r=I(this,t),a=o.sessionId.trim(),i=await r.api.archiveChat(a);if(r.outputJson){r.io.stdout(W({sessionId:a,message:i.message}));return}r.io.stdout(`Chat archived
|
|
61
61
|
sessionId ${a}
|
|
62
62
|
message ${i.message}
|
|
63
63
|
`)})}var Ms=(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 Ma(e){return typeof e=="string"?e.trim():e?.value?.trim()??""}function Jg(e){const t=e.userMetadata;return t&&Object.keys(t).length>0?{...t}:void 0}function xg(e){return Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(", ")}function Ae(e){const t=Jg(e);return{sessionId:Ma(e.sessionId),title:e.title,type:e.type,status:e.status,projectId:Ma(e.projectId),proposalName:e.proposalName??void 0,archived:e.status===Ms.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 Os(e){return{sessions:e.sessions.map(Ae)}}function Ds(e,t){return t.length===0?`No ${e.toLowerCase()} found.
|
|
@@ -84,7 +84,7 @@ ${Fe(l)}`)})}function qg(e,t){y(e.command("delete").description("Delete a chat s
|
|
|
84
84
|
sessionId ${a}
|
|
85
85
|
message ${i.message}
|
|
86
86
|
`)})}var ir=(function(e){return e.CHAT="Chat",e.PROPOSAL="Proposal",e})({});function ep(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 r=I(this,t),a=Os(await r.api.listSessions({type:ir.CHAT,projectId:k(o.projectId),projectIds:bo(o.projectIds),activeOnly:o.activeOnly?!0:void 0,includeArchived:o.includeArchived?!0:void 0}));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(Ds("Chat sessions",a.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 tp="the backend does not support Steer",Da="HAGI_SEND_STEER";function sr(){return new Se("--steer","Deliver the message to the running task as a Steer. Overrides HAGI_SEND_STEER and the config file.")}function lr(){return new Se("--no-steer","Send a normal message, even when HAGI_SEND_STEER or the config file asks for Steer.")}var np=new Set(["1","true","yes","on"]),op=new Set(["0","false","no","off"]);function rp(e){const t=Ee(e[Da]);if(t===void 0)return;const n=t.toLowerCase();if(np.has(n))return!0;if(op.has(n))return!1;throw new N(`${Da} has an unrecognized value "${t}". Accepted values: 1, true, yes, on (Steer) or 0, false, no, off (no Steer).`)}function ap({flag:e,env:t}){if(e!==void 0)return{requested:e,source:"flag"};const n=rp(t);if(n!==void 0)return{requested:n,source:"env"};const o=_m(t);return o!==void 0?{requested:o,source:"config"}:{requested:!1,source:"default"}}async function cr(e){const{context:t,sessionId:n,content:o,mode:r,executorType:a,steerFlag:i}=e,s=ap({flag:i,env:t.env}),l=async u=>({message:(await t.api.sendMessage(n,{content:o,mode:r,executorType:a})).message,steer:{requested:s.requested,source:s.source,effective:!1,...s.requested&&u!==void 0?{reason:u}:{}}});if(!s.requested)return l();const c=[...r!==void 0?["--mode"]:[],...a!==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 B&&u.code===S.Unimplemented)return l(tp);throw u}}var dr=(function(e){return e.READONLY="Readonly",e.EDIT="Edit",e})({});function ip(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 Se("--mode <mode>","Message mode override.").choices(Object.values(dr))).addOption(new Se("--executor-type <type>","Executor override for this message.").choices(Object.values(Yn))).addOption(sr()).addOption(lr()).action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await cr({context:r,sessionId:a,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(r.outputJson){r.io.stdout(W({sessionId:a,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:or(i.steer)}));return}r.io.stdout(rr("Chat message sent",a,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function sp(e,t){const n=e.command("chat").description("Manage normal chat sessions.");ep(n,t),Pg(n,t),Ug(n,t),qg(n,t),ip(n,t)}async function lp(){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 Cn(e){const t=e.trim();if(!t)throw new N("Provide --input <file> or --input - for stdin.");const n=t==="-"?await lp():await(0,tc.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 cp=["first","random"];async function dp(e){let t;try{t=await Cn(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 up(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&&!cp.includes(o))throw new N("--hero-selection-mode must be first or random.")}function mp(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 r=k(o.taskId),a=k(o.promptId);up(o,r,a);const i=o.input!==void 0?await dp(x(o.input,"--input")):void 0,s=I(this,t),l={title:x(o.title,"--title"),projectId:x(o.projectId,"--project-id"),promptId:a,presetTaskId:r,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:bo(o.referenceVaultId),editableVaultIds:bo(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
|
-
${Fe(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 hp=new Set(["Optimizing","Openspecing","Executing","Archiving"]);function bp(e){return hp.has(e)}async function gp(e,t,n){const o=n.now(),r=t.timeoutSeconds*1e3,a=t.graceSeconds*1e3,i=t.intervalSeconds*1e3;let s=0,l=!1;for(;;){const u=await e();s+=1;const h=n.now()-o,
|
|
87
|
+
${Fe(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 hp=new Set(["Optimizing","Openspecing","Executing","Archiving"]);function bp(e){return hp.has(e)}async function gp(e,t,n){const o=n.now(),r=t.timeoutSeconds*1e3,a=t.graceSeconds*1e3,i=t.intervalSeconds*1e3;let s=0,l=!1;for(;;){const u=await e();s+=1;const h=n.now()-o,f=bp(u.status);if(l=l||f,!f&&(l||h>=a||h>=r))return c(u,{settled:!0,timedOut:!1});if(h>=r)return c(u,{settled:!1,timedOut:!0});await n.sleep(Math.min(i,r-h))}function c(u,h){return{session:u,...h,transitionSeen:l,polls:s,elapsedSeconds:Math.round((n.now()-o)/100)/10}}}function _n(e,t,n){const o=e.trim();if(!/^\d+$/.test(o))throw new N(`${t} must be a whole number of seconds.`);const r=Number(o);if(r<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return r}function pp(e){const t=[["--timeout",e.timeout],["--interval",e.interval],["--grace",e.grace]].filter(([,a])=>a!==void 0).map(([a])=>a);if(!e.wait){if(t.length>0)throw new N(`${t.join(", ")} needs --wait.`);return}const n=e.timeout===void 0?900:_n(e.timeout,"--timeout",1),o=e.interval===void 0?5:_n(e.interval,"--interval",1),r=e.grace===void 0?10:_n(e.grace,"--grace",0);if(o>=n)throw new N("--interval must be less than --timeout.");return{intervalSeconds:o,timeoutSeconds:n,graceSeconds:r}}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(r){const a=pp(r),i=x(r.sessionId,"--session-id"),s=I(this,t);if(!a){const h=Ae(await s.api.getSession(i));if(s.outputJson){s.io.stdout(W({session:h}));return}s.io.stdout(Fe(h));return}const l=await gp(()=>s.api.getSession(i),a,{now:t.now??Date.now,sleep:t.sleep??Xn}),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(`${Fe(c)}${zg(u,c.status)}`),l.timedOut)throw new Do(`Timed out after ${l.elapsedSeconds}s waiting for ${n.label} ${i} to settle; last status ${c.status}.`)})}function Ap(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 fp(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 el(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(r){const a=fp(r.last),i=x(r.sessionId,"--session-id"),s=I(this,t),l=await s.api.getSessionMessages(i,a===void 0?{page:1,order:"desc"}:{page:1,pageSize:a,order:"desc"});if(s.outputJson){s.io.stdout(W(l));return}s.io.stdout(Lg(l))})}function Zp(e,t){el(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 _a(e){return e?"yes":"no"}function $a(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 tl(e){return[...e].sort((t,n)=>{const o=t.id??"",r=n.id??"";return o<r?-1:o>r?1:0})}function Rp(e){return An({tasks:tl(e)})}function Ep(e){if(e.length===0)return`No HagiTask is available.
|
|
88
88
|
`;const t=tl(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
90
|
`}function Sp(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 Vp(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?`
|
|
@@ -123,8 +123,8 @@ ${q([["planId",e.planId],["accepted",String(e.accepted)]])}`}var Jp=["id","creat
|
|
|
123
123
|
${Qt(i)}`)})}function zp(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 r=I(this,t),a=x(o.id,"--id");await r.api.deletePlan(a);const i=wp(a);if(r.outputJson){r.io.stdout(W(i));return}r.io.stdout(Fp(i))})}async function il(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,al(o,{enabled:n}))),changed:!0}}function Lp(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 r=I(this,t),{view:a,changed:i}=await il(r,x(o.id,"--id"),!1);if(r.outputJson){r.io.stdout(W({plan:a,changed:i}));return}r.io.stdout(`${i?"Plan disabled":"Plan was already disabled"}
|
|
124
124
|
${Qt(a)}`)})}function jp(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 r=I(this,t),{view:a,changed:i}=await il(r,x(o.id,"--id"),!0);if(r.outputJson){r.io.stdout(W({plan:a,changed:i}));return}r.io.stdout(`${i?"Plan enabled":"Plan was already enabled"}
|
|
125
125
|
${Qt(a)}`)})}function Tp(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 r=I(this,t),a=_e(await r.api.getPlan(x(o.id,"--id")));if(r.outputJson){r.io.stdout(W({plan:a}));return}r.io.stdout(Qt(a))})}function Hp(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),r=Cp(await o.api.listPlans());if(o.outputJson){o.io.stdout(W(r));return}o.io.stdout(Bp(r.plans))})}function Qp(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 r=I(this,t),a=x(o.id,"--id");if(o.background){const s=kp(await r.api.startPlan(a));if(r.outputJson){r.io.stdout(W(s));return}r.io.stdout(Up(s));return}const i=Ae(await r.api.runPlan(a));if(r.outputJson){r.io.stdout(W({session:i}));return}r.io.stdout(`Plan run created a session
|
|
126
|
-
${Fe(i)}`)})}function Mp(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 r=x(o.id,"--id"),a=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(!a&&!i&&!s&&l===void 0)throw new N("Provide at least one change: --input, --name, --enabled, --disabled, or --hero-id.");const c=a?fn(await ol(a)):{},u=I(this,t),h=await u.api.getPlan(r),
|
|
127
|
-
${Qt(
|
|
126
|
+
${Fe(i)}`)})}function Mp(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 r=x(o.id,"--id"),a=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(!a&&!i&&!s&&l===void 0)throw new N("Provide at least one change: --input, --name, --enabled, --disabled, or --hero-id.");const c=a?fn(await ol(a)):{},u=I(this,t),h=await u.api.getPlan(r),f=_e(await u.api.updatePlan(r,al(h,{...c,...rl({name:i,heroId:s,enabled:l})})));if(u.outputJson){u.io.stdout(W({plan:f}));return}u.io.stdout(`Plan updated
|
|
127
|
+
${Qt(f)}`)})}function Op(e,t){const n=e.command("plan").description("Manage scheduled plans: saved proposal or HagiTask inputs that run on a schedule.");Hp(n,t),Tp(n,t),Kp(n,t),Mp(n,t),jp(n,t),Lp(n,t),zp(n,t),Qp(n,t)}function ue(e){const t=e?.trim();return t||void 0}function ur(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 sl(e){return{projects:(e??[]).map(ur)}}function Dp(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
130
|
`}function ll(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 _p(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 $p(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)]])}
|
|
@@ -151,11 +151,11 @@ ${r}`.trimEnd():""].filter(Boolean).join(`
|
|
|
151
151
|
`}function aA(e){return{path:e.path??"",removed:e.removed===!0,message:ae(e.message)}}function iA(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
153
|
`}function mr(e,t,n={}){const o=dl(t);if(e.outputJson){e.io.stdout(W(o));return}const r=n.heading?`${n.heading}
|
|
154
|
-
`:"";e.io.stdout(`${r}${ul(o,{yaml:n.yaml})}`)}function po(e,t){return[...t,e]}function
|
|
154
|
+
`:"";e.io.stdout(`${r}${ul(o,{yaml:n.yaml})}`)}function po(e,t){return[...t,e]}function ht(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 sA(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.",po,[]).option("--include-optional","Also clone optional repositories when no --path is given.").action(async function(o){const r=o.path.map(ht),a=I(this,t),i=x(o.id,"--id"),s=o.includeOptional===!0,l=ml((await a.api.cloneMonoSpecsRepositories(i,r.length>0?{paths:r,includeOptional:s}:{includeOptional:s})).results);a.outputJson?a.io.stdout(W(l)):a.io.stdout(hl(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 lA(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 r=I(this,t);mr(r,await r.api.initializeMonoSpecsManagement(x(o.id,"--id")),{heading:"MonoSpecs configuration initialized."})})}function cA(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 r=I(this,t);mr(r,await r.api.reloadMonoSpecsManagement(x(o.id,"--id")),{heading:"MonoSpecs configuration reloaded."})})}function dA(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 r=I(this,t),a=x(o.id,"--id"),i=ht(x(o.path,"--path")),s=o.force===!0;let l;try{l=await r.api.removeMonoSpecsRepositoryCheckout(a,i,s)}catch(u){const h=Bs(u);throw h.status===409&&!s&&/force/i.test(h.message)?new ye(409,`${h.message}
|
|
155
155
|
Re-run with --force to delete this checkout anyway.`,h.details):u}const c=aA(l);r.outputJson?r.io.stdout(W(c)):r.io.stdout(iA(c))})}var uA="--version, --repo-directory, --commit-when-archive, --add-repository, --remove-repository";function mA(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 hA(e){return e.split("/").at(-1)??e}function $n(e,t,n){const o=dl(t),r=n?ml(n.results):void 0;if(e.outputJson){e.io.stdout(W(r?{...o,clone:r}:o));return}e.io.stdout(`MonoSpecs configuration saved.
|
|
156
156
|
${ul(o)}`),r&&e.io.stdout(`
|
|
157
157
|
Clone results
|
|
158
|
-
${hl(r)}`)}function bA(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.",po,[]).option("--remove-repository <path>","Configured repository path to remove. Repeatable.",po,[]).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 r=o.addRepository.map(
|
|
158
|
+
${hl(r)}`)}function bA(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.",po,[]).option("--remove-repository <path>","Configured repository path to remove. Repeatable.",po,[]).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 r=o.addRepository.map(ht),a=o.removeRepository.map(ht);if(!(o.version!==void 0||o.repoDirectory!==void 0||o.commitWhenArchive!==void 0)&&r.length===0&&a.length===0)throw new N(`Provide at least one change: ${uA}.`);if(o.clone&&r.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&&r.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(mA);for(const V of a){const X=h.findIndex(J=>ht(J.path??"")===V);if(X<0)throw new N(`Repository path ${V} is not configured, so it cannot be removed.`);h.splice(X,1)}for(const V of r){if(h.some(X=>ht(X.path??"")===V))throw new N(`Repository path ${V} is already configured.`);h.push({name:o.name??hA(V),code:null,path:V,url:o.url??null,displayName:o.displayName??null,type:o.type??null,icon:null,optional:!1,tags:[],metadata:[]})}const f=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,f);return}let p;try{p=(await l.api.cloneMonoSpecsRepositories(c,{paths:r,includeOptional:!1})).results??[]}catch(V){throw $n(l,f),V}$n(l,f,{results:p});const R=p.filter(V=>V.status==="failed");if(R.length>0)throw new U(`The configuration was saved, but ${R.length} repository clone(s) failed. See the clone results above.`)})}function gA(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 r=I(this,t);mr(r,await r.api.getMonoSpecsManagement(x(o.id,"--id")),{yaml:o.yaml===!0})})}function pA(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 r=I(this,t),a=x(o.id,"--id"),i=((await r.api.listProjects()).projects??[]).find(l=>l.id===a);if(!i?.path)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=oA(await r.api.validateMonoSpecs({projectPath:i.path}));if(r.outputJson?r.io.stdout(W(s)):r.io.stdout(rA(s)),!s.isValid)throw new U("MonoSpecs configuration is invalid. See the errors above.")})}function AA(e,t){const n=e.command("monospecs").description("Manage the MonoSpecs configuration and the local repository checkouts of a project.");gA(n,t),lA(n,t),bA(n,t),pA(n,t),cA(n,t),sA(n,t),dA(n,t)}function fA(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 r=I(this,t),a=o.id.trim(),i=((await r.api.listProjects()).projects??[]).find(l=>l.id===a);if(!i)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=_p(i);if(r.outputJson){r.io.stdout(W(s));return}r.io.stdout($p(s))})}function ZA(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 r=I(this,t),a=o.id.trim(),i=sl((await r.api.listProjects()).projects).projects.find(l=>l.id===a);if(!i)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=ur(await r.api.updateProject(a,{name:k(o.name)??i.name,path:k(o.path)??i.path,description:o.clearDescription?null:k(o.description)??i.description??null}));if(r.outputJson){r.io.stdout(W({project:s}));return}r.io.stdout(`Project updated
|
|
159
159
|
${ll(s)}`)})}function RA(e,t){const n=e.command("project").description("Manage Hagi projects through generated project and aggregation APIs.");eA(n,t),fA(n,t),Pp(n,t),ZA(n,t),qp(n,t),AA(n,t)}function EA(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,r=typeof n.submittedAt=="string"&&n.submittedAt.trim()?n.submittedAt:new Date().toISOString();return{...n,sessionId:e,totalAnnotations:o,submittedAt:r,files:n.files}}function SA(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 r=I(this,t),a=o.sessionId.trim(),i=EA(a,await Cn(o.input)),s=await r.api.submitAnnotations(a,i);if(r.outputJson){r.io.stdout(W({sessionId:a,message:s.message,annotationCount:s.annotationCount??i.totalAnnotations,fileCount:s.fileCount??i.files.length}));return}r.io.stdout(`Proposal annotations submitted
|
|
160
160
|
sessionId ${a}
|
|
161
161
|
message ${s.message}
|
|
@@ -198,7 +198,7 @@ ${Fe(s)}`)})}function LA(e,t){const n=e.command("proposal").description("Manage
|
|
|
198
198
|
`;case"freeze":return t.unchanged?`freeze unchanged: ${n} stays at revision ${String(t.revision)}
|
|
199
199
|
`:[`frozen: ${n} revision ${String(t.revision)}`+(t.previousRevision===null?"":` (revised from ${String(t.previousRevision)})`),`reopened: ${Pa(t.reopened)} added: ${Pa(t.added)}`,""].join(`
|
|
200
200
|
`);default:return`${e}: ${n}
|
|
201
|
-
`}}var hr=["goal","research","acceptance","plan","run","amend"],$A="install/gitignore.template",PA=".gitignore";function qA(){return typeof __filename=="string"?(0,mi.pathToFileURL)(__filename).href:{}.url}function ef(e){let t=
|
|
201
|
+
`}}var hr=["goal","research","acceptance","plan","run","amend"],$A="install/gitignore.template",PA=".gitignore";function qA(){return typeof __filename=="string"?(0,mi.pathToFileURL)(__filename).href:{}.url}function ef(e){let t=E.default.dirname((0,mi.fileURLToPath)(e));for(;;){const n=E.default.join(t,"resources","saga");if(Y.default.existsSync(n))return n;const o=E.default.dirname(t);if(o===t)break;t=o}throw new Error(`Unable to locate package resources/saga from ${e}`)}function Al(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 qa(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 r=e,a=Object.keys(r).sort(),i=[...t].sort();if(a.length!==i.length||a.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 a)if(typeof r[s]!="string")throw new U(`Invalid Saga asset manifest at ${o}: ${n}.${s} must be a digest`);return r}function tf(e,t){let n;try{n=JSON.parse(e.toString("utf8"))}catch(r){throw new U(`Invalid Saga asset manifest at ${t}: ${r instanceof Error?r.message:String(r)}`)}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:qa(o.install,[$A],"install",t),methods:qa(o.methods,hr,"methods",t)}}function ei(e,t,n){const o=Al(E.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=qA()){const t=ef(e),n=E.default.join(t,"manifest.json"),o=tf(Al(n,"Saga asset manifest"),n),r=new Map;for(const[i,s]of Object.entries(o.install))r.set(PA,ei(t,i,s));const a=new Map;for(const i of hr)a.set(i,ei(t,`prompts/${i}.md`,o.methods[i]));return{directory:t,install:r,methods:a}}var nf=/^- \[( |x)\] (\S+) (.*?)\s*\|\s*(.*)$/,of=/^- ~ (\S+) (.*?)\s*\|\s*(.*)$/,rf=new Set(["## 待决问题","## Open questions"]),af=["[已决定","[decided"],sf=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 fl(e){const t=[],n=[];return Mt(e).forEach((o,r)=>{const a=nf.exec(o);if(a){t.push({line:r,id:a[2],title:a[3],done:a[1]==="x",note:a[4].trim()});return}const i=of.exec(o);i&&n.push({id:i[1],title:i[2]})}),{active:t,superseded:n}}function Zl(e){const t={};let n;for(const o of Mt(e)){const r=/^## (\S+)/.exec(o);r&&(n=r[1]);const a=/^cmd:\s*(.+)$/.exec(o);a&&n&&(t[n]=a[1].trim())}return t}function lf(e){const t=[];let n=!1;for(const o of Mt(e)){if(o.startsWith("## ")){n=rf.has(o.trim());continue}n&&o.startsWith("- ")&&!af.some(r=>o.includes(r))&&!sf.has(o.trim().toLowerCase())&&t.push(o.slice(2).trim())}return t}function cf(e){const t=/^merged-in:[ \t]*(\S*)[ \t]*$/m.exec(e);return t?t[1]:""}function df(e){return[...e.active.map(t=>`${t.id} ${t.title}`),...e.superseded.map(t=>`~ ${t.id} ${t.title}`)].join(`
|
|
202
202
|
`)}function uf(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,$e(n)]))}function ti(e){const t=n=>Object.entries(n).map(([o,r])=>` ${o}: ${r}
|
|
203
203
|
`).join("");return`revision: ${e.revision}
|
|
204
204
|
`+(e.frozenAt===void 0?"":`frozen-at: ${e.frozenAt}
|
|
@@ -207,60 +207,60 @@ ${Fe(s)}`)})}function LA(e,t){const n=e.command("proposal").description("Manage
|
|
|
207
207
|
${t(e.hashes)}acceptance-by-item:
|
|
208
208
|
${t(e.acceptanceByItem)}`+(e.methods===void 0?"":`methods:
|
|
209
209
|
${t(e.methods)}`)+`items: ${e.items.join(" ")}
|
|
210
|
-
`}function Rl(e,t="contract.lock"){const n=/^revision:\s*(\d+)/m.exec(e),o=/^hashes:\r?\n/m.exec(e),r=/^acceptance-by-item:\r?\n/m.exec(e),a=/^items:[ \t]*(.*)$/m.exec(e);if(!n||!o||!r||!a)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:Pn(e,"hashes"),acceptanceByItem:Pn(e,"acceptance-by-item"),methods:/^methods:\r?\n/m.test(e)?Pn(e,"methods"):void 0,items:a[1].split(/\s+/).filter(Boolean)}}function Pn(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 Zo="**/runtime/";function
|
|
211
|
-
`)}function hf(e,t,n){const o=ne(e,t),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 El(e,t){(0,Y.unlinkSync)(ne(e,t))}function bf(e,t,n){(0,Y.linkSync)(ne(e,t),ne(e,n))}function gf(e,t,n){const o=ne(e,t),r=ne(e,n);if(
|
|
210
|
+
`}function Rl(e,t="contract.lock"){const n=/^revision:\s*(\d+)/m.exec(e),o=/^hashes:\r?\n/m.exec(e),r=/^acceptance-by-item:\r?\n/m.exec(e),a=/^items:[ \t]*(.*)$/m.exec(e);if(!n||!o||!r||!a)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:Pn(e,"hashes"),acceptanceByItem:Pn(e,"acceptance-by-item"),methods:/^methods:\r?\n/m.test(e)?Pn(e,"methods"):void 0,items:a[1].split(/\s+/).filter(Boolean)}}function Pn(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 Zo="**/runtime/";function Gt(e){try{return(0,Y.lstatSync)(e)}catch(t){if(t.code==="ENOENT")return;throw t}}function mf(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function ne(e,t){const n=E.default.resolve(e),o=E.default.resolve(t),r=E.default.relative(n,o);if(r==="")return o;if(r===".."||r.startsWith(`..${E.default.sep}`)||E.default.isAbsolute(r))throw new T([`path escapes the Saga root: ${t}`]);const a=Gt(n);if(a&&(a.isSymbolicLink()||!mf((0,Y.realpathSync)(n),n)))throw new T([`Saga root is redirected through a link: ${n}`]);let i=n;for(const s of r.split(E.default.sep)){i=E.default.join(i,s);const l=Gt(i);if(!l)break;if(l.isSymbolicLink())throw new T([`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 wn(e,t,n){const o=ne(e,t);let r;try{r=(0,Y.openSync)(o,"wx"),(0,Y.writeSync)(r,gr(n))}finally{r!==void 0&&(0,Y.closeSync)(r)}}function bt(e,t,n){const o=ne(e,t),r=E.default.join(E.default.dirname(o),`${E.default.basename(o)}.${(0,je.randomUUID)()}.tmp`);let a;try{a=(0,Y.openSync)(r,"wx"),(0,Y.writeSync)(a,gr(n)),(0,Y.closeSync)(a),a=void 0,(0,Y.renameSync)(r,o)}finally{a!==void 0&&(0,Y.closeSync)(a),Gt(r)&&(0,Y.unlinkSync)(r)}}function br(e,t,n){bt(e,t,`${JSON.stringify(n,null,2)}
|
|
211
|
+
`)}function hf(e,t,n){const o=ne(e,t),r=yt(e,t),a=r!==void 0&&r.length>0&&r[r.length-1]!==10;let i;try{i=(0,Y.openSync)(o,"a"),(0,Y.writeSync)(i,gr(a?`
|
|
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 El(e,t){(0,Y.unlinkSync)(ne(e,t))}function bf(e,t,n){(0,Y.linkSync)(ne(e,t),ne(e,n))}function gf(e,t,n){const o=ne(e,t),r=ne(e,n);if(Gt(r))throw new T([`destination already exists: ${n}`]);(0,Y.renameSync)(o,r)}function yt(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 yt(e,t)?.toString("utf8")}function pf(e,t,n){const o=ne(e,t),r=ne(e,n);if(Gt(r))throw new T([`destination already exists: ${n}`]);(0,Y.renameSync)(o,r)}function Af(e){return e.split(/\r?\n/).includes(Zo)}function It(e){ke(e,e);const t=ne(e,E.default.join(e,".gitignore"));let n;try{if(n=Gt(t)?(0,Y.readFileSync)(t,"utf8"):void 0,n!==void 0&&Af(n))return;if(n===void 0){wn(e,t,`${Zo}
|
|
213
213
|
`);return}const o=n.includes(`\r
|
|
214
214
|
`)?`\r
|
|
215
215
|
`:`
|
|
216
216
|
`;(0,Y.appendFileSync)(t,`${n.length>0&&!n.endsWith(`
|
|
217
|
-
`)?o:""}${Zo}${o}`)}catch(o){throw o instanceof T?o:new U(`Cannot write the runtime ignore rule in "${t}": ${Fn(o)}. No runtime files were created.`)}}function gr(e){return typeof e=="string"?Buffer.from(e,"utf8"):e}function Fn(e){return e instanceof Error?e.message:String(e)}var ff=/^[a-z0-9][a-z0-9-]{0,62}$/,Zf=new Set(["prompts","tools","archive","runtime","amendments","revisions"]);function Ro(e){try{return(0,Y.lstatSync)(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}function Rf(e){try{return(0,Y.statSync)(e).isDirectory()}catch(t){if(t.code==="ENOENT")return!1;throw t}}function Ef(e,t){if(!ff.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(Zf.has(e))throw new N(`Saga ID ${JSON.stringify(e)} is reserved.`);const n=
|
|
217
|
+
`)?o:""}${Zo}${o}`)}catch(o){throw o instanceof T?o:new U(`Cannot write the runtime ignore rule in "${t}": ${Fn(o)}. No runtime files were created.`)}}function gr(e){return typeof e=="string"?Buffer.from(e,"utf8"):e}function Fn(e){return e instanceof Error?e.message:String(e)}var ff=/^[a-z0-9][a-z0-9-]{0,62}$/,Zf=new Set(["prompts","tools","archive","runtime","amendments","revisions"]);function Ro(e){try{return(0,Y.lstatSync)(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}function Rf(e){try{return(0,Y.statSync)(e).isDirectory()}catch(t){if(t.code==="ENOENT")return!1;throw t}}function Ef(e,t){if(!ff.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(Zf.has(e))throw new N(`Saga ID ${JSON.stringify(e)} is reserved.`);const n=E.default.join(t,e);if(Ro(n))throw new U(`Saga "${e}" already exists at ${n}.`);const o=E.default.join(t,"archive");if(Rf(o)){const r=(0,Y.readdirSync)(o).find(a=>a.endsWith(`-${e}`));if(r)throw new U(`Saga "${e}" already exists in the archive as "${r}".`)}}function Sf(e){return`hagi saga init ${e.kind==="path"?"--path":"--project-id"} ${JSON.stringify(e.value)}`}function Vf(e,t){const n=E.default.dirname(E.default.dirname(e)),o=[".hagicode",".hagicode/sagas"],r=[".gitignore"],a=s=>{throw new U(`Saga resource path "${s}" is missing or unsafe. Run ${Sf(t)} after correcting the target.`)};for(const s of o){const l=E.default.join(n,s);Ro(l)||a(s);const c=(0,Y.lstatSync)(l);(c.isSymbolicLink()||!c.isDirectory())&&a(s)}for(const s of r){const l=E.default.join(e,...s.split("/"));Ro(l)||a(s);const c=(0,Y.lstatSync)(l);(c.isSymbolicLink()||!c.isFile())&&a(s)}const i=(0,Y.readFileSync)(E.default.join(e,".gitignore"),"utf8").split(/\r?\n/);!i.includes("**/runtime/")&&!i.includes("*/runtime/")&&a(".gitignore (runtime ignore rule)")}function Gf(e,t){const n=ne(t,E.default.join(t,e));try{(0,Y.mkdirSync)(n)}catch(r){throw r.code==="EEXIST"?new U(`Saga "${e}" already exists at ${n}.`):r}const o={id:e,createdAt:tt(),method:1};try{wn(t,E.default.join(n,"saga.json"),`${JSON.stringify(o,null,2)}
|
|
218
218
|
`)}catch(r){throw(0,Y.rmSync)(n,{recursive:!0,force:!0}),r}return o}var Sl=[".hagicode",".hagicode/sagas"];function Vl(e){return e.toString("utf8").split(/\r?\n/).includes("**/runtime/")}function Nf(e){if(Vl(e))return e;const t=e.toString("utf8"),n=t.match(/\r\n|\n/)?.[0]??`
|
|
219
219
|
`,o=e.length>0&&!t.endsWith(`
|
|
220
|
-
`)?n:"";return Buffer.concat([e,Buffer.from(`${o}**/runtime/`)])}function Tt(e){try{return(0,Y.lstatSync)(e)}catch(t){if(t.code==="ENOENT")return;throw t}}function ni(e,t,n){const o=
|
|
221
|
-
`);try{bf(e,i,a)}catch(s){throw s.code!=="EEXIST"?s:new T([Xl(t,Rr(e,t)?.ownerSession??"unknown")])}finally{El(e,i)}return r}function Er(e,t,n){const o=Rr(e,t);if(!o)return{locked:!1};if(!Il(o.token,n))throw new T([`${Xl(t,o.ownerSession)} Supply the execution token with --token or SAGA_EXECUTION_TOKEN.`]);return{locked:!0,ownerSession:o.ownerSession}}function
|
|
222
|
-
`}function Cl(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
|
|
220
|
+
`)?n:"";return Buffer.concat([e,Buffer.from(`${o}**/runtime/`)])}function Tt(e){try{return(0,Y.lstatSync)(e)}catch(t){if(t.code==="ENOENT")return;throw t}}function ni(e,t,n){const o=E.default.join(E.default.dirname(e),`.${E.default.basename(e)}.${(0,je.randomUUID)()}.tmp`);let r;try{r=(0,Y.openSync)(o,"wx",n??438),(0,Y.writeFileSync)(r,t),(0,Y.closeSync)(r),r=void 0,(0,Y.renameSync)(o,e)}finally{r!==void 0&&(0,Y.closeSync)(r),Tt(o)&&(0,Y.unlinkSync)(o)}}function oi(e,t,n){const o=E.default.relative(e,n);if(o===".."||o.startsWith(`..${E.default.sep}`)||E.default.isAbsolute(o))throw new U(`Saga installation path escapes the selected project: ${t}`);const r=E.default.resolve(t),a=E.default.resolve(n);if(process.platform==="win32"?r.toLowerCase()!==a.toLowerCase():r!==a)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=E.default.join(n,".hagicode","sagas");for(const r of Sl){const a=E.default.join(n,r),i=Tt(a);if(i){if(i.isSymbolicLink())throw new U(`Refusing redirected Saga installation directory: ${a}`);if(!i.isDirectory())throw new U(`Saga installation path is not a directory: ${a}`);oi(n,a,(0,Y.realpathSync)(a))}}for(const r of t.install.keys()){const a=E.default.join(o,...r.split("/")),i=Tt(a);if(i){if(i.isSymbolicLink())throw new U(`Refusing redirected Saga resource: ${a}`);if(!i.isFile())throw new U(`Saga resource is not a regular file: ${a}`);if(oi(o,a,(0,Y.realpathSync)(a)),i.nlink>1&&!Vl((0,Y.readFileSync)(a)))throw new U(`Refusing to overwrite hard-linked Saga resource: ${a}`)}}return o}function vf(e,t,n=!1){const o=on(e,t),r=E.default.dirname(E.default.dirname(o));for(const i of Sl){const s=E.default.join(r,i);Tt(s)||(0,Y.mkdirSync)(s)}on(r,t);const a=[];for(const[i,s]of t.install){const l=E.default.join(o,...i.split("/")),c=Tt(l);if(!c){on(r,t),ni(l,s),a.push({path:i,outcome:"created"});continue}const u=(0,Y.readFileSync)(l),h=Nf(u);u.equals(h)?a.push({path:i,outcome:"unchanged"}):(on(r,t),ni(l,h,c.mode&511),a.push({path:i,outcome:"merged"}))}return{root:o,force:n,files:a,conflicts:[]}}var Ot=hr;function Wf(e){return Ot.includes(e)}function yf(e){return(0,je.createHash)("sha256").update(e).digest("hex")}function Gl(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:yf(n),bytes:n}}function Nl(e=Bn()){return Object.fromEntries(Ot.map(t=>[t,Gl(t,e).sha256]))}var vl=/^[a-z0-9][a-z0-9-]{0,62}$/,Wl=new Set(["prompts","tools","archive","runtime","amendments","revisions"]),If=[["goal","goal.md"],["research","research.md"],["acceptance","acceptance.md"],["plan","progress.md"]];function kn(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(kn(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 Xf(e){const t=fl(it(E.default.join(e,"progress.md"))??"");return{active:t.active.map(({id:n,title:o,done:r,note:a})=>({id:n,title:o,done:r,note:a})),superseded:t.superseded}}function Yf(e){return Zl(it(E.default.join(e,"acceptance.md"))??"")}function Cf(e){const t=E.default.join(e,"runtime","blocked.json"),n=it(t);if(n===void 0)return{};let o;try{o=JSON.parse(n)}catch(r){throw new U(`Invalid Saga data in "${t}": ${r instanceof Error?r.message:String(r)}`)}if(!o||typeof o!="object"||Array.isArray(o))throw new U(`Invalid Saga data in "${t}": expected a JSON object.`);return o}function Bf(e){const t=E.default.join(e,"contract.lock"),n=it(t);return n===void 0?0:Rl(n,t).revision}function pr(e){const t=E.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(kn(o))return[];throw new U(`Cannot read Saga amendments "${t}": ${o instanceof Error?o.message:String(o)}`)}return n.map(o=>{const r=E.default.join(t,o),a=it(r);if(a===void 0)throw new U(`Cannot read Saga amendment "${r}": not a regular file.`);return{name:o,mergedIn:cf(a)}})}function wf(e){const t=n=>{const o=it(E.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 yl(e){const t=Xf(e),n=Yf(e),o=Cf(e);return[...t.active.map(r=>({id:r.id,title:r.title,state:r.done?"done":r.id in o?"blocked":"pending",cmd:n[r.id]||"",note:r.note})),...t.superseded.map(r=>({id:r.id,title:r.title,state:"superseded",cmd:"",note:""}))]}function Ff(e){return yl(e)}var kf=["draft","planned","running","paused","done"];function Uf(e){const t=it(E.default.join(e,"runtime","status.json"));if(t===void 0)return;let n;try{n=JSON.parse(t)}catch{return}if(!n||typeof n!="object"||Array.isArray(n))return;const{state:o,note:r}=n;if(!(typeof o!="string"||!kf.includes(o)))return{state:o,note:typeof r=="string"?r:""}}function Ar(e,t){const n=Bf(t),o=yl(t),r=wf(t),a=o.filter(p=>p.state!=="superseded"),i=o.filter(p=>p.state==="done").length,s=If.find(([p])=>!r[p])?.[0]??null,l=n===0?s?"draft":"planned":i===a.length?"done":"running",c=Uf(t),u=c!==void 0&&(c.state!=="running"||l==="running"),h=u?c.state:l,f=u?c.note:"";return{schema:"saga-status/2",sagaId:e,revision:n,state:h,updatedAt:new Date().toISOString().replace(/\.\d{3}Z$/,"Z"),note:f,artifacts:r,nextArtifact:s,counts:{total:a.length,done:i,blocked:o.filter(p=>p.state==="blocked").length,pending:o.filter(p=>p.state==="pending").length,superseded:o.filter(p=>p.state==="superseded").length},openAmendments:pr(t).filter(p=>!p.mergedIn).length,items:o.map(({id:p,title:R,state:V})=>({id:p,title:R,state:V}))}}function Un(e,t){const n=()=>{throw new ye(404,`Saga "${t}" was not found.`)};(!vl.test(t)||Wl.has(t))&&n();const o=E.default.join(e,t);let r;try{r=(0,Y.lstatSync)(o)}catch(a){throw kn(a)&&n(),new U(`Cannot inspect Saga "${o}": ${a instanceof Error?a.message:String(a)}`)}return r.isDirectory()||n(),o}function Jf(e){let t;try{t=(0,Y.readdirSync)(e,{withFileTypes:!0})}catch(n){if(kn(n))return[];throw new U(`Cannot list Sagas in "${e}": ${n instanceof Error?n.message:String(n)}`)}return t.filter(n=>n.isDirectory()&&vl.test(n.name)&&!Wl.has(n.name)).map(n=>n.name).sort()}function xf(e){return Jf(e).map(t=>{const n=Ar(t,E.default.join(e,t));return{sagaId:n.sagaId,state:n.state,revision:n.revision,counts:n.counts,openAmendments:n.openAmendments,updatedAt:n.updatedAt}})}function Kf(e){return{sagas:xf(e)}}function zf(e,t){return{sagaId:t,items:Ff(Un(e,t))}}function fr(e,t){return E.default.join(e,t)}function Zr(e,t){return E.default.join(fr(e,t),"runtime","execute.lock")}function Lf(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 Rr(e,t){const n=ne(e,Zr(e,t));let o;try{o=(0,Y.readFileSync)(n,"utf8")}catch(a){if(a.code==="ENOENT")return;throw new U(`Cannot read the execution lock of Saga "${t}": ${a.message}`)}let r;try{r=JSON.parse(o)}catch{throw new U(`The execution lock of Saga "${t}" is not valid JSON.`)}if(!Lf(r))throw new U(`The execution lock of Saga "${t}" has an unexpected shape.`);return r}function Il(e,t){return t===void 0||t===""?!1:(0,je.timingSafeEqual)(Buffer.from($e(e),"hex"),Buffer.from($e(t),"hex"))}function Xl(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 jf(e,t,n){const o=n?.trim();if(!o)throw new N("claim requires a nonempty --session <owner-session-id>.");It(e),ke(e,E.default.join(fr(e,t),"runtime"));const r={token:(0,je.randomUUID)(),ownerSession:o,createdAt:tt()},a=Zr(e,t),i=E.default.join(E.default.dirname(a),`.execute.lock.${(0,je.randomUUID)()}.tmp`);wn(e,i,`${JSON.stringify(r,null,2)}
|
|
221
|
+
`);try{bf(e,i,a)}catch(s){throw s.code!=="EEXIST"?s:new T([Xl(t,Rr(e,t)?.ownerSession??"unknown")])}finally{El(e,i)}return r}function Er(e,t,n){const o=Rr(e,t);if(!o)return{locked:!1};if(!Il(o.token,n))throw new T([`${Xl(t,o.ownerSession)} Supply the execution token with --token or SAGA_EXECUTION_TOKEN.`]);return{locked:!0,ownerSession:o.ownerSession}}function Tf(e,t){const n=ne(e,E.default.join(fr(e,t),"runtime","status.json"));let o;try{o=(0,Y.readFileSync)(n,"utf8")}catch(r){if(r.code==="ENOENT")return;throw r}try{const r=JSON.parse(o).state;return typeof r=="string"?r:void 0}catch{return}}function Hf(e,t,n){const o=Rr(e,t);if(!o)throw new T([`Saga "${t}" has no execution lock; there is nothing to release.`]);if(!Il(o.token,n.token))throw new T([`the execution token does not match the owner session ${o.ownerSession}.`]);if(!n.workersSettled)throw new T(["confirm that every worker has settled with --workers-settled."]);const r=Tf(e,t);if(r!=="paused"&&r!=="done")throw new T([`the stored status is ${r??"missing"}; write a paused or done snapshot with set-status before releasing.`]);return El(e,Zr(e,t)),{ownerSession:o.ownerSession}}function Sr(e){const t=E.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 Eo(e){if(!Array.isArray(e.projects))throw new U("Backend project list did not include a projects collection.");return e.projects}function Yl(e,t){if(typeof e.path!="string"||e.path.length===0)throw new U(`Backend project "${t}" has no host-local project path.`);return Sr(e.path)}async function Qf(e,t,n){if(e.kind==="path")return Sr(e.value);const o=Eo(await I(t,n).api.listProjects()).find(r=>r.id===e.value);if(!o)throw new ye(404,`Project "${e.value}" was not found.`);return Yl(o,e.value)}function Mf(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function Of(e){try{return(0,Y.realpathSync)(E.default.resolve(e))}catch{return}}function Df(e,t){const n=e.flatMap(o=>{if(typeof o.id!="string"||typeof o.path!="string"||o.path.length===0)return[];const r=Of(o.path);return r!==void 0&&Mf(r,t)?[{id:o.id}]:[]});if(n.length===0)throw new T([`no registered project has the path ${t}; register the project or pass --project-id.`]);if(n.length>1){const o=n.map(r=>r.id).join(", ");throw new T([`${n.length} registered projects have the path ${t} (${o}); pass --project-id to choose one.`])}return{projectId:n[0].id,projectDirectory:t}}async function _f(e,t){if(e.kind==="path"){const o=Sr(e.value);return Df(Eo(await t()),o)}const n=Eo(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:Yl(n,e.value)}}var ri=["implementation","verification"],$f="worker";function Pf(e){const t={"saga.id":e.sagaId,"saga.role":$f,"saga.worker":e.role,"saga.master":e.masterSessionId};return e.item!==void 0&&(t["saga.item"]=e.item),t}function qf(e){const t=e.title.replace(/\s+/g," ").trim(),n=e.createdAt??tt();return`- ${e.sessionId} | ${n} | ${e.role} | ${e.item??"-"} | ${t}
|
|
222
|
+
`}function Cl(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 e2(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 Xt(e,t){const n=e.optsWithGlobals(),o=Cl(n),r=await Qf(o,e,t);return{env:t.env,io:t.io,outputJson:n.json===!0,projectDirectory:r,sagaRoot:E.default.join(r,".hagicode","sagas"),selector:o}}var wt="session create",t2=/[\\/]/;function rn(e,t){if(typeof e!="string"||e.trim()==="")throw new N(`session create requires a nonblank ${t} <value>.`);return e.trim()}function ai(e,t){if(t2.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 n2(e){if(typeof e!="string"||!ri.includes(e))throw new N(`--role must be one of ${ri.join(", ")}.`);return e}function o2(e,t){const n=ai(rn(e.saga,"--saga"),"--saga"),o=rn(e.title,"--title"),r=n2(e.role),a=rn(e.master,"--master"),i=e.item===void 0?void 0:ai(rn(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:r,masterSessionId:a,item:i,executionToken:s,selector:Cl(e)}}function r2(e,t){const n=E.default.join(e,t,"runtime"),o=E.default.join(n,"sessions.md");return ne(e,o),It(e),ke(e,n),o}function a2(e){return e instanceof Error?e.message:String(e)}function i2(e){return async function(){const n=o2(this.optsWithGlobals(),e.env),o=I(this,e),r=i=>o.io.stdout(i),{sagaId:a}=n;try{const i=await _f(n.selector,()=>o.api.listProjects()),s=E.default.join(i.projectDirectory,".hagicode","sagas");Un(s,a),Er(s,a,n.executionToken);const l=r2(s,a),c=Ae(await o.api.createChatSession({title:n.title,projectId:i.projectId,metadata:Pf({sagaId:a,role:n.role,masterSessionId:n.masterSessionId,item:n.item})}));try{hf(s,l,qf({sessionId:c.sessionId,role:n.role,item:n.item,title:n.title}))}catch(h){const f=`session ${c.sessionId} was created but its record could not be written to ${l}: ${a2(h)}`,p={sagaId:a,command:wt,ok:!1,errors:[f],session:c};throw r(o.outputJson?W(p):fo(wt,a,[f])),new T([f],{reported:!0})}const u={sagaId:a,command:wt,ok:!0,session:c,record:l};r(o.outputJson?W(u):OA(u))}catch(i){if(i instanceof T&&!i.reported){const s={sagaId:a,command:wt,ok:!1,errors:i.reasons};r(o.outputJson?W(s):fo(wt,a,i.reasons)),i.reported=!0}throw i}}}var s2=["goal.md","research.md","acceptance.md","progress.md"],Bl=/^(状态|Status):\s*PASS\s*$/m;function Oe(e,t){const n=E.default.join(e,t),o=Pe(e,E.default.join(n,"progress.md")),r=Pe(e,E.default.join(n,"acceptance.md"));return{sagaRoot:e,sagaId:t,directory:n,goal:yt(e,E.default.join(n,"goal.md")),research:Pe(e,E.default.join(n,"research.md")),acceptance:r,progress:o,plan:fl(o??""),commands:Zl(r??"")}}function l2(e){return/[\\/]/.test(e)||e==="."||e===".."}function Jn(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 r of s2)n[r]||t.push(`${r} is missing`);const o=e.plan.active.map(r=>r.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 r of[...o,...e.plan.superseded.map(a=>a.id)])l2(r)&&t.push(`unsafe item ID: ${r}`);for(const r of o)r in e.commands||t.push(`item ${r} has no acceptance cmd in acceptance.md`);for(const r of Object.keys(e.commands))o.includes(r)||t.push(`acceptance entry ${r} 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(df(e.plan))}}function Vr(e){return pr(e.directory).filter(t=>!t.mergedIn).map(t=>`open amendment ${t.name}: merge it into the artifacts and set merged-in`)}function Fl(e){return lf(e.research??"").map(t=>`open question not decided by a human: ${t}`)}function Gr(e){const t=Pe(e.sagaRoot,E.default.join(e.directory,"contract.lock"));if(t!==void 0)return{text:t,lock:Rl(t,E.default.join(e.directory,"contract.lock"))}}function kl(e){const t=[],n=Gr(e);if(!n)t.push("contract.lock missing: run freeze first");else{const o=wl(e);for(const[r,a]of Object.entries(o))n.lock.hashes[r]!==a&&t.push(`hash mismatch for ${r}: frozen contract (r${n.lock.revision}) changed, run freeze after merging an amendment`)}return t.push(...Vr(e)),t.push(...Fl(e)),t.push(...c2(e)),t}function c2(e){const t=[],n=E.default.join(e.directory,"runtime");for(const o of e.plan.active.filter(r=>r.done)){if(!o.note)t.push(`item ${o.id} is ticked but has no evidence reference`);else{const a=E.default.resolve(n,o.note);a.startsWith(`${E.default.resolve(n)}${E.default.sep}`)?yt(e.sagaRoot,a)===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 r=Pe(e.sagaRoot,E.default.join(n,"reports",`${o.id}.md`));(r===void 0||!Bl.test(r))&&t.push(`item ${o.id} is ticked but its PASS report is missing`)}return t}function Ul(e,t,n){const o=Oe(e,t),r=Jn(o);return n==="run"?[...r,...kl(o)]:r}function d2(e){const t=Gr(e);if(!t)return;const n=t.lock.methods;if(n===void 0)return{recorded:!1,drift:[]};const o=Nl();return{recorded:!0,drift:Ot.filter(r=>n[r]!==o[r]).map(r=>({name:r,recorded:n[r]??null,current:o[r]}))}}function u2(e,t,n){const o=Oe(e,t),r=Jn(o);return n==="plan"?{errors:r}:{errors:[...r,...kl(o)],methods:d2(o)}}function m2(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"],...Ul(e,t,"run")]}function h2(e){return uf(e.commands)}function b2(e,t){const n=Nl(),o=Oe(e,t),r=[...Jn(o),...Fl(o),...Vr(o)];if(r.length>0)throw new T(r);const a=wl(o),i=h2(o),s=o.plan.active,l=[...s.map(d=>d.id),...o.plan.superseded.map(d=>d.id)],c=E.default.join(o.directory,"contract.lock"),u=Gr(o);if(!u)return bt(e,c,ti({revision:1,frozenAt:tt(),prev:"-",hashes:a,acceptanceByItem:i,methods:n,items:l})),{revision:1,unchanged:!1,reopened:[],added:s.map(d=>d.id)};const{text:h,lock:f}=u;if(Object.keys(a).length===Object.keys(f.hashes).length&&Object.entries(a).every(([d,m])=>f.hashes[d]===m))return{revision:f.revision,unchanged:!0,reopened:[],added:[]};const p=`r${f.revision+1}`;if(!pr(o.directory).some(d=>d.mergedIn===p))throw new T([`contract changed without an amendment merged into ${p}: tamper or unrecorded change`]);const R=new Set(l),V=f.items.filter(d=>!R.has(d));if(V.length>0)throw new T([`item removed without being marked superseded: ${V.join(", ")}`]);ke(e,E.default.join(o.directory,"revisions")),bt(e,E.default.join(o.directory,"revisions",`r${f.revision}.lock`),h);const X=Mt(o.progress??""),J=[];for(const d of s)d.done&&f.acceptanceByItem[d.id]!==i[d.id]&&(X[d.line]=`- [ ] ${d.id} ${d.title} | reopened in ${p}: acceptance changed`,J.push(d.id));if(J.length>0){It(e);const d=E.default.join(o.directory,"runtime","history",`r${f.revision}`);ke(e,d);for(const m of J)for(const A of[E.default.join(o.directory,"runtime","evidence",`${m}.log`),E.default.join(o.directory,"runtime","reports",`${m}.md`)])yt(e,A)!==void 0&&gf(e,A,E.default.join(d,E.default.basename(A)))}return bt(e,E.default.join(o.directory,"progress.md"),`${X.join(`
|
|
223
223
|
`)}
|
|
224
|
-
`),
|
|
224
|
+
`),bt(e,c,ti({revision:f.revision+1,frozenAt:tt(),prev:$e(h),hashes:a,acceptanceByItem:i,methods:n,items:l})),{revision:f.revision+1,previousRevision:f.revision,unchanged:!1,reopened:J,added:s.filter(d=>!f.items.includes(d.id)).map(d=>d.id)}}function Jl(e){return e.length>0&&!/[\\/]/.test(e)&&e!=="."&&e!==".."}function Nr(e,t){const n=E.default.join(e,t,"runtime","blocked.json"),o=Pe(e,n);if(o===void 0)return{};let r;try{r=JSON.parse(o)}catch(a){throw new U(`Invalid Saga data in "${n}": ${a.message}`)}if(!r||typeof r!="object"||Array.isArray(r))throw new U(`Invalid Saga data in "${n}": expected a JSON object.`);return{...r}}function g2(e,t){return E.default.join(e,t,"progress.md")}function p2(e,t,n){if(!n||!Jl(n))throw new T([`invalid item ID: ${JSON.stringify(n??"")}`]);const o=Oe(e,t),r=o.plan.active.find(h=>h.id===n);if(!r)throw new T([`unknown item ${n}: it is not an active item in progress.md`]);const a=E.default.join(o.directory,"runtime"),i=Pe(e,E.default.join(a,"reports",`${n}.md`));if(i===void 0||!Bl.test(i))throw new T([`no PASS report for ${n}: runtime/reports/${n}.md must contain "Status: PASS"`]);if(yt(e,E.default.join(a,"evidence",`${n}.log`))===void 0)throw new T([`no evidence file for ${n}: runtime/evidence/${n}.log is missing`]);const s=Ul(e,t,"run");if(s.length>0)throw new T(s);const l=`evidence/${n}.log`,c=Mt(o.progress??"");c[r.line]=`- [x] ${n} ${r.title} | ${l}`,It(e),bt(e,g2(e,t),`${c.join(`
|
|
225
225
|
`)}
|
|
226
|
-
`);const u=Nr(e,t);return n in u&&(delete u[n],br(e,
|
|
226
|
+
`);const u=Nr(e,t);return n in u&&(delete u[n],br(e,E.default.join(a,"blocked.json"),u)),{itemId:n,evidence:l}}function A2(e,t,n,o){if(o===void 0||o.trim()==="")throw new N("block requires a nonempty reason.");if(!n||!Jl(n))throw new T([`invalid item ID: ${JSON.stringify(n??"")}`]);const r=Oe(e,t);if(!r.plan.active.some(s=>s.id===n))throw new T([`unknown item ${n}: it is not an active item in progress.md`]);It(e);const a=E.default.join(r.directory,"runtime");ke(e,a);const i=Nr(e,t);return i[n]=o.trim(),br(e,E.default.join(a,"blocked.json"),i),{itemId:n,reason:o.trim()}}function f2(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"amendment"}function Z2(e,t,n,o){const r=(n??"").replace(/\s*[\r\n]+\s*/g," ").trim();if(r==="")throw new N("amend requires a nonempty title.");const a=E.default.join(e,t,"amendments");ke(e,a);const i=(0,Y.readdirSync)(a).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")}-${f2(r)}.md`;return wn(e,E.default.join(a,l),`title: ${r}
|
|
227
227
|
created-at: ${tt()}
|
|
228
228
|
merged-in:
|
|
229
229
|
---
|
|
230
230
|
${o}
|
|
231
|
-
`),{name:l,mergedIn:""}}function
|
|
232
|
-
${
|
|
233
|
-
`).action(
|
|
234
|
-
`);function nt(e){return e?"yes":"no"}function
|
|
231
|
+
`),{name:l,mergedIn:""}}function R2(){const e=new Date,t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function E2(e,t,n){const o=Oe(e,t),r=Nr(e,t),a=[];o.plan.active.length===0&&a.push("the saga has no active items");for(const l of o.plan.active.filter(c=>!c.done))a.push(`item ${l.id} is ${l.id in r?"blocked":"pending"}`);if(a.push(...Vr(o)),a.length>0&&!n)throw new T([...a,"use --force to archive anyway"]);const i=E.default.join(e,"archive");ke(e,i);const s=E.default.join(i,`${R2()}-${t}`);return pf(e,E.default.join(e,t),s),{destination:s}}var vr=["draft","planned","running","paused","done"];function xl(e){return typeof e=="string"&&vr.includes(e)}function S2(e,t,n,o){if(!xl(n))throw new N(`--state must be one of ${vr.join(", ")}.`);const r=E.default.join(e,t);if(n==="planned"||n==="running"){const i=Jn(Oe(e,t));if(i.length>0)throw new T(i)}if(n==="done"){const i=m2(e,t);if(i.length>0)throw new T(i)}const a={...Ar(t,r),state:n,note:o??"",updatedAt:tt()};return It(e),ke(e,E.default.join(r,"runtime")),br(e,E.default.join(r,"runtime","status.json"),a),a}function Ye(e,t){return async function(...o){const r=o.slice(0,-2).map(String),a=this.opts();t.preflight?.(a);const i=t.takesToken?e2(this,e.env):void 0,s=await Xt(this,e),l=r[0];if(!l)throw new N(`${t.name} requires a Saga ID.`);Un(s.sagaRoot,l);const c=u=>s.io.stdout(u);try{t.guard&&Er(s.sagaRoot,l,i);const u=t.run({sagaId:l,sagaRoot:s.sagaRoot,token:i},a,r),h={sagaId:l,command:t.name,ok:!0,...u};c(s.outputJson?W(h):_A(t.name,h))}catch(u){if(u instanceof T){const h={sagaId:l,command:t.name,ok:!1,errors:u.reasons,...u.details};c(s.outputJson?W(h):fo(t.name,l,u.reasons)+DA(u.details)),u.reported=!0}throw u}}}function V2(e){if(typeof e.session!="string"||e.session.trim()==="")throw new N("claim requires a nonempty --session <owner-session-id>.")}function G2(e){return Ye(e,{name:"claim",takesToken:!1,preflight:V2,run:({sagaId:t,sagaRoot:n},o)=>{const r=jf(n,t,o.session);return{ownerSession:r.ownerSession,token:r.token,createdAt:r.createdAt}}})}function N2(e){return Ye(e,{name:"assert-owner",takesToken:!0,run:({sagaId:t,sagaRoot:n,token:o})=>{const r=Er(n,t,o);return r.locked?{locked:!0,ownerSession:r.ownerSession}:{locked:!1}}})}function v2(e){return Ye(e,{name:"freeze",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n})=>{const o=b2(n,t);return{revision:o.revision,previousRevision:o.previousRevision??null,unchanged:o.unchanged,reopened:o.reopened,added:o.added}}})}function W2(e){return Ye(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 r=o.phase,{errors:a,methods:i}=u2(n,t,r),s=i===void 0?{}:{methods:i};if(a.length>0)throw new T(a,{details:s});return{phase:r,errors:[],...s}}})}function y2(e){return Ye(e,{name:"tick",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({...p2(n,t,r[1])})})}function I2(e){return Ye(e,{name:"block",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({...A2(n,t,r[1],r[2])})})}function X2(e){return Ye(e,{name:"amend",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({name:Z2(n,t,r[1],r[2]??"").name,merged:!1})})}function Y2(e){return Ye(e,{name:"archive",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o)=>({...E2(n,t,o.force===!0)})})}function C2(e){return Ye(e,{name:"set-status",takesToken:!0,guard:!0,preflight:t=>{if(!xl(t.state))throw new N(`--state must be one of ${vr.join(", ")}.`)},run:({sagaId:t,sagaRoot:n},o)=>({...S2(n,t,o.state,o.note)})})}function B2(e){return Ye(e,{name:"release",takesToken:!0,run:({sagaId:t,sagaRoot:n,token:o},r)=>({released:!0,ownerSession:Hf(n,t,{token:o,workersSettled:r.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 w2(e){return async function(){const n=await Xt(this,e),o=this.opts().force===!0,r=vf(n.projectDirectory,Bn(),o);n.io.stdout(n.outputJson?W(r):jA(r))}}function F2(e){return async function(n){const o=this.optsWithGlobals();if(!Wf(n))throw new N(`Unknown Saga method ${JSON.stringify(n)}: use one of ${Ot.join(", ")}.`);const r=Gl(n,Bn()),a=r.bytes.toString("utf8");e.io.stdout(o.json===!0?W({name:r.name,sha256:r.sha256,content:a}):a)}}function k2(e){return async function(n){const o=await Xt(this,e);Ef(n,o.sagaRoot),Vf(o.sagaRoot,o.selector);const r=Gf(n,o.sagaRoot),a={id:r.id,directory:E.default.join(o.sagaRoot,n),metadata:r};o.io.stdout(o.outputJson?W(a):TA(a))}}function U2(e){return async function(){const n=await Xt(this,e),o=Kf(n.sagaRoot);n.io.stdout(n.outputJson?W(o):HA(o))}}function J2(e){return async function(n){const o=await Xt(this,e),r=Ar(n,Un(o.sagaRoot,n));o.io.stdout(o.outputJson?W(r):QA(r))}}function x2(e){return async function(n){const o=await Xt(this,e),r=zf(o.sagaRoot,n);o.io.stdout(o.outputJson?W(r):MA(r))}}function K2(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(w2(t)),y(n.command("method <name>").description(`Print a published Saga method (${Ot.join(", ")}) from the installed CLI.`)).action(F2(t)),le(n.command("new <saga-id>").description("Create a Saga in an initialized project.")).action(k2(t)),le(n.command("list").description("List active Sagas.")).action(U2(t)),le(n.command("status <saga-id>").description("Read a Saga status projection.")).action(J2(t)),le(n.command("items <saga-id>").description("Read Saga plan items.")).action(x2(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(G2(t)),Ke(le(n.command("assert-owner <saga-id>").description("Check the execution token before dispatch."))).action(N2(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(B2(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(v2(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(C2(t)),Ke(le(n.command("tick <saga-id> <item-id>").description("Mark a plan item done once its PASS report and evidence exist."))).action(y2(t)),Ke(le(n.command("block <saga-id> <item-id> <reason>").description("Record why a plan item is blocked."))).action(I2(t)),Ke(le(n.command("amend <saga-id> <title> <text>").description("Append an open amendment to the Saga contract."))).action(X2(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(Y2(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(W2(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
|
+
${z2}
|
|
233
|
+
`).action(i2(t))}var z2=["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.","",_s(),"","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 L2(e){return e&&e.length>0?e.join(", "):"-"}function Kl(e){return e.origin??"user"}function zl(e){return Kl(e)==="built-in"}function j2(e){return zl(e)?nt(e.builtIn?.enabled):"-"}function T2(e){return(zl(e)?e.builtIn?.version:e.managedInstallMetadata?.version)??"-"}function H2(e){const t=e.items??[];return t.length===0?`No local skills installed.
|
|
235
235
|
`:`Local skills (${t.length})
|
|
236
|
-
${ie([{header:"Name",value:n=>n.name??"-"},{header:"Origin",value:Kl},{header:"Enabled",value:
|
|
237
|
-
`}function
|
|
236
|
+
${ie([{header:"Name",value:n=>n.name??"-"},{header:"Origin",value:Kl},{header:"Enabled",value:j2},{header:"Version",value:T2},{header:"Scope",value:n=>n.scope??"-"},{header:"Agents",value:n=>L2(n.agents)},{header:"Path",value:n=>n.path??"-"}],t)}
|
|
237
|
+
`}function Q2(e){return q([["skillName",e.skillName??void 0],["status",e.status??void 0],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function M2(e){return q([["skillName",e.slug??void 0],["enabled",nt(e.enabled)],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function O2(e){const t=e.items??[];return t.length===0?`No gallery skills found.
|
|
238
238
|
`:`Gallery skills (${t.length})
|
|
239
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
|
|
241
|
-
`).join("")}`}function
|
|
240
|
+
`}function D2(e){return`skills.sh audit (${e.provider}): risk=${e.risk??"--"}, alerts=${e.alerts??"--"}, score=${e.score??"--"}, analyzedAt=${e.analyzedAt??"--"}`}function _2(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=>`${D2(o)}
|
|
241
|
+
`).join("")}`}function $2(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 an(e){const t=e.items??[];return t.length===0?`No trusted providers (directory version ${e.version??0}).
|
|
242
242
|
`:`Trusted providers (${t.length}, directory version ${e.version??0})
|
|
243
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
|
|
244
|
+
`}function P2(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(r){const a=I(this,t),i=await a.api.searchSkillGallery(k(r.query));if(a.outputJson){a.io.stdout(W(i));return}a.io.stdout(O2(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(r){const a=I(this,t),i=x(r.id,"--id"),s=x(r.source,"--source"),[l,c]=await Promise.allSettled([a.api.getSkillGalleryDetail(i,s),a.api.getSkillGalleryAudit(i,s)]);if(l.status==="rejected")throw l.reason;const u=l.value,h={providers:c.status==="fulfilled"?c.value?.providers??[]:[]};if(a.outputJson){a.io.stdout(W({...u,audit:h}));return}a.io.stdout(_2(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(r){const a=I(this,t),i=await a.api.installGallerySkill({id:x(r.id,"--id"),source:x(r.source,"--source"),skillSlug:x(r.skillSlug,"--skill-slug"),version:k(r.version)});if(a.outputJson){a.io.stdout(W(i));return}a.io.stdout($2(i))})}var q2="The change applies to agent runs that start afterwards; a run already in progress keeps its skills.";function ii(e,t,n){const o=n?"enable":"disable";y(e.command(o).description(`${n?"Turn on":"Turn off"} one built-in skill by name. ${q2}`)).requiredOption("--skill-name <name>",`Built-in skill name to ${o}.`).action(async function(a){const i=I(this,t),s=await i.api.setBuiltInSkillAvailability({slug:x(a.skillName,"--skill-name"),enabled:n});if(i.outputJson?i.io.stdout(W(s)):i.io.stdout(M2(s)),!s.succeeded)throw new U(s.userMessage??`The built-in skill availability was not changed for ${s.slug??a.skillName}.`)})}function eZ(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 r=I(this,t),a=await r.api.listLocalSkills();if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(H2(a))}),ii(n,t,!0),ii(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(r){const a=I(this,t),i=await a.api.uninstallLocalSkill({skillName:x(r.skillName,"--skill-name")});if(a.outputJson){a.io.stdout(W(i));return}a.io.stdout(Q2(i))})}async function tZ(e,t){const n=await Cn(e);if(!n||typeof n!="object"||Array.isArray(n))throw new N(`${t} must be a JSON object.`);return n}function nZ(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 r=I(this,t),a=await r.api.listTrustedSkillProviders();if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(an(a))}),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(r){const a=I(this,t),i=await tZ(x(r.input,"--input"),"Trusted provider input"),s=await a.api.upsertTrustedSkillProvider(i);if(a.outputJson){a.io.stdout(W(s));return}a.io.stdout(an(s))}),y(n.command("delete").description("Delete one trusted provider by id.")).requiredOption("--provider-id <id>","Trusted provider id to delete.").action(async function(r){const a=I(this,t),i={providerId:x(r.providerId,"--provider-id")},s=await a.api.deleteTrustedSkillProvider(i);if(a.outputJson){a.io.stdout(W(s));return}a.io.stdout(an(s))}),y(n.command("reset").description("Reset trusted providers to the backend defaults.")).action(async function(){const r=I(this,t),a=await r.api.resetTrustedSkillProviders();if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(an(a))})}function oZ(e,t){const n=e.command("skills").description("Manage local skills, the skill gallery, and trusted providers.");eZ(n,t),P2(n,t),nZ(n,t)}function si(e,t,n){const o=n.guard;return{state:o?o.state:n.reason===null?null:"unknown",reason:o?o.reason:n.reason,provider:n.provider??null,status:e?.status??"unavailable",source:e?.source??"none",failureReason:e?.failureReason??null,dateKey:e?.dateKey??null,totalTokens:e?.totalTokens??null,costUsd:e?.costUsd??null,windows:t.map(r=>({provider:r.provider,kind:r.kind,remainingPercent:r.remainingPercent,resetsAtUtc:r.resetsAtUtc,minutesToReset:r.minutesToReset,windowMinutes:r.windowMinutes,watched:r.watched})),guard:o}}function rZ(e){const t=e.provider??"all providers",n=[];n.push(aZ(e,t));for(const o of e.windows)n.push(` ${sZ(o)}`);return e.windows.length===0&&e.state!=="unknown"&&n.push(" No limit windows reported."),`${n.join(`
|
|
245
245
|
`)}
|
|
246
|
-
`}function
|
|
246
|
+
`}function aZ(e,t){const n=e.guard;if(n?.state==="ready")return`READY ${t}: every watched window is above ${n.thresholdPercent}% remaining (waited ${n.waitedSeconds}s, stagger ${n.jitterSeconds}s).`;if(n?.state==="low"){const o=n.blockers.map(iZ).join("; ");return`LOW ${t}: at or below ${n.thresholdPercent}% after waiting ${n.waitedSeconds}s: ${o}.`}return e.state==="unknown"?`UNAVAILABLE ${t}: ${e.reason??"no usable figure"}.`:`READ ${t}: ${e.windows.length} limit window(s), no threshold given.`}function iZ(e){const t=e.remainingPercent===null?"remaining unknown":`${e.remainingPercent}% remaining`;return`${e.provider} ${e.kind} ${t}, resets ${e.resetsAtUtc??"at an unknown time"}`}function sZ(e){const t=e.windowMinutes===null?"":` [${e.windowMinutes} min]`,n=e.remainingPercent===null?"remaining unknown":`remaining ${e.remainingPercent}%`,o=e.resetsAtUtc===null?"reset unknown":`resets ${e.resetsAtUtc} (in ${e.minutesToReset??"?"} min)`,r=e.watched?"":" (not watched: weekly or longer)";return`${e.provider} ${e.kind}${t}: ${n}, ${o}${r}`}var lZ=1800,li=21600,ci=3600;function cZ(e){return typeof e.remainingPercent=="number"&&Number.isFinite(e.remainingPercent)?di(e.remainingPercent):typeof e.usedPercent=="number"&&Number.isFinite(e.usedPercent)?di(100-e.usedPercent):null}function dZ(e){return typeof e.windowMinutes=="number"?e.windowMinutes<=360:e.kind==="session"}function Ll(e,t,n){const o=[];for(const r of e.limits?.providers??[])if(!(n!==void 0&&r.provider!==n))for(const a of r.windows??[]){const i=a.resetsAtUtc?Date.parse(a.resetsAtUtc):NaN;o.push({provider:r.provider,kind:a.kind,windowMinutes:typeof a.windowMinutes=="number"?a.windowMinutes:null,remainingPercent:cZ(a),resetsAtUtc:a.resetsAtUtc??null,minutesToReset:Number.isNaN(i)?null:mZ((i-t)/6e4),watched:dZ(a)})}return o}function jl(e,t,n,o){return e.status!=="ok"?e.failureReason?`Token Monitor status is ${e.status}: ${e.failureReason}`:`Token Monitor status is ${e.status}`:t.some(r=>(!o||r.watched)&&r.remainingPercent!==null)?null:`no ${o?"watched ":""}${n??"provider"} window with a remaining figure in the Token Monitor snapshot`}async function uZ(e,t,n){const o=n.now(),r=()=>Math.floor((n.now()-o)/1e3);let a=0,i=null,s=[];const l=(c,u)=>({wait:{state:c,provider:t.provider,thresholdPercent:t.thresholdPercent,checkedAtUtc:new Date(n.now()).toISOString(),...u},snapshot:i,windows:s});for(;;){let c=null,u=null;try{c=await e(),i=c}catch(d){u=d instanceof Error?d.message:String(d)}const h=c?Ll(c,n.now(),t.provider):[];c&&(s=h);const f=c?jl(c,h,t.provider,!0):u;if(f!==null){a+=1;const d=r();if(a>3||d>=t.maxWaitSeconds)return l("unknown",{waitedSeconds:d,jitterSeconds:0,blockers:[],reason:f});await n.sleep(Math.min(30,t.maxWaitSeconds-d)*1e3);continue}a=0;const p=h.filter(d=>d.watched&&d.remainingPercent!==null&&d.remainingPercent<=t.thresholdPercent),R=r();if(p.length===0){const d=t.jitterSeconds>0&&R>0?Math.floor(n.random()*(t.jitterSeconds+1)):0;return d>0&&await n.sleep(d*1e3),l("ready",{waitedSeconds:R,jitterSeconds:d,blockers:[],reason:null})}if(R>=t.maxWaitSeconds)return l("low",{waitedSeconds:R,jitterSeconds:0,blockers:p,reason:null});const V=Math.max(...p.map(d=>d.minutesToReset===null?300:Math.max(0,d.minutesToReset*60)+60)),X=t.maxWaitSeconds-R,J=Math.max(1,Math.min(300,V,X));await n.sleep(J*1e3)}}function di(e){return Math.min(100,Math.max(0,e))}function mZ(e){return Math.round(e*10)/10}function hZ(e,t){y(e.command("usage").description("Read Token Monitor usage: each provider's limit windows with their remaining percent and reset times.").command("limits").description("Read provider limit windows. With --wait-until-above, wait for a reset for a bounded time. Read-only.").option("--provider <id>","Only this provider, for example claude or codex. Required with --wait-until-above.").option("--wait-until-above <percent>","Wait until every short window (six hours or less) of --provider is above this remaining percent.").option("--max-wait <seconds>",`Longest wait with --wait-until-above (default ${lZ}; 0 checks once; at most ${li}).`).option("--jitter-seconds <seconds>",`Random delay after a wait that ends ready (default 120; 0 disables; at most ${ci}).`).addHelpText("after",`
|
|
247
247
|
Exit codes: 0 a usable reading (with --wait-until-above: ready or low; low is not a failure),
|
|
248
248
|
${$.QUOTA_UNKNOWN} unavailable (no usable figure was read), 2 invalid options.
|
|
249
249
|
Transport and HTTP failures keep their usual codes. Quota comes only from the backend Token Monitor usage RPC.
|
|
250
|
-
`)).action(async function(){const o=this.opts(),r=o.provider?.trim()||void 0,a=qn(o.waitUntilAbove,"--wait-until-above",0,100),i=qn(o.maxWait,"--max-wait",0,li),s=qn(o.jitterSeconds,"--jitter-seconds",0,ci);if(a===void 0){if(o.maxWait!==void 0||o.jitterSeconds!==void 0)throw new N("--max-wait and --jitter-seconds apply only with --wait-until-above <percent>.")}else if(r===void 0)throw new N("--wait-until-above needs --provider <id>: a wait watches one provider's windows.");const l=I(this,t),c={now:t.now??Date.now,sleep:t.sleep??Xn,random:Math.random},u=()=>l.api.getTokenMonitorUsage(),h=
|
|
250
|
+
`)).action(async function(){const o=this.opts(),r=o.provider?.trim()||void 0,a=qn(o.waitUntilAbove,"--wait-until-above",0,100),i=qn(o.maxWait,"--max-wait",0,li),s=qn(o.jitterSeconds,"--jitter-seconds",0,ci);if(a===void 0){if(o.maxWait!==void 0||o.jitterSeconds!==void 0)throw new N("--max-wait and --jitter-seconds apply only with --wait-until-above <percent>.")}else if(r===void 0)throw new N("--wait-until-above needs --provider <id>: a wait watches one provider's windows.");const l=I(this,t),c={now:t.now??Date.now,sleep:t.sleep??Xn,random:Math.random},u=()=>l.api.getTokenMonitorUsage(),h=p=>{l.io.stdout(l.outputJson?W(p):rZ(p))};if(a===void 0){const p=await u(),R=Ll(p,c.now(),r),V=jl(p,R,r,!1);if(h(si(p,R,{provider:r,reason:V,guard:null})),V!==null)throw new mo(`Quota unavailable: ${V}.`);return}const f=await uZ(u,{provider:r,thresholdPercent:a,maxWaitSeconds:i??1800,jitterSeconds:s??120},c);if(h(si(f.snapshot,f.windows,{provider:r,reason:null,guard:f.wait})),f.wait.state==="unknown")throw new mo(`${r} quota could not be read: ${f.wait.reason??"no usable figure"}.`)})}function qn(e,t,n,o){if(e===void 0)return;if(!/^\d+$/.test(e.trim()))throw new N(`${t} must be a whole number.`);const r=Number(e.trim());if(r<n||r>o)throw new N(`${t} must be between ${n} and ${o}.`);return r}function j(e){const t=e?.trim();return t||void 0}function bZ(e){return{severity:j(e.severity)??"",code:j(e.code)??"",message:j(e.message)??"",relativePath:j(e.relativePath)}}function Wr(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(bZ)}}function Tl(e){return{generatedAtUtc:j(e.generatedAtUtc),vaults:(e.items??[]).map(Wr)}}function gZ(e){return e.length===0?`No vaults found.
|
|
251
251
|
`:`Vaults (${e.length})
|
|
252
252
|
${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)}
|
|
253
|
-
`}function Hl(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
|
|
254
|
-
${q([["vaultId",e.vaultId],["deleted",String(e.deleted)],["deleteLocalFilesRequested",String(e.deleteLocalFilesRequested)],["localFilesDeletionStatus",e.localFilesDeletionStatus],["localFilesDeleted",String(e.localFilesDeleted)]])}`}function
|
|
253
|
+
`}function Hl(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 pZ(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 AZ(e){return{vaultId:j(e.id)??"",deleted:e.deleted===!0,deleteLocalFilesRequested:e.deleteLocalFilesRequested===!0,localFilesDeletionStatus:j(e.localFilesDeletionStatus),localFilesDeleted:e.localFilesDeleted===!0}}function fZ(e){return`Vault deleted
|
|
254
|
+
${q([["vaultId",e.vaultId],["deleted",String(e.deleted)],["deleteLocalFilesRequested",String(e.deleteLocalFilesRequested)],["localFilesDeletionStatus",e.localFilesDeletionStatus],["localFilesDeleted",String(e.localFilesDeleted)]])}`}function ZZ(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(pZ)}}function RZ(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
|
|
255
255
|
${t}No files found.
|
|
256
256
|
`:`Vault files
|
|
257
257
|
${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)}
|
|
258
|
-
`}function
|
|
258
|
+
`}function EZ(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 SZ(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
|
|
259
259
|
${t}`;const n=e.content.endsWith(`
|
|
260
260
|
`)?"":`
|
|
261
261
|
`;return`Vault file preview
|
|
262
262
|
${t}content
|
|
263
263
|
-------
|
|
264
|
-
${e.content}${n}`}function
|
|
265
|
-
${Hl(a)}`)})}function
|
|
266
|
-
${Hl(h)}`)})}function
|
|
264
|
+
${e.content}${n}`}function VZ(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 r=I(this,t),a=Wr(await r.api.createVault({name:x(o.name,"--name"),type:x(o.type,"--type"),physicalPath:x(o.physicalPath,"--physical-path"),gitUrl:k(o.gitUrl)}));if(r.outputJson){r.io.stdout(W({vault:a}));return}r.io.stdout(`Vault created
|
|
265
|
+
${Hl(a)}`)})}function GZ(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 r=I(this,t),a=AZ(await r.api.deleteVault(x(o.id,"--id"),o.deleteLocalFiles===!0));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(fZ(a))})}function NZ(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 r=I(this,t),a=ZZ(await r.api.listVaultFiles(x(o.id,"--id"),k(o.path)));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(RZ(a))})}function vZ(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 r=I(this,t),a=EZ(await r.api.previewVaultFile(x(o.id,"--id"),x(o.path,"--path")));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(SZ(a))})}function WZ(e,t){y(e.command("list").description("List registered vaults through the generated vault client.")).action(async function(){const o=I(this,t),r=Tl(await o.api.listVaults());if(o.outputJson){o.io.stdout(W(r));return}o.io.stdout(gZ(r.vaults))})}function yZ(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 r=k(o.name),a=k(o.type),i=k(o.physicalPath),s=k(o.gitUrl);if(!r&&!a&&!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=Tl(await l.api.listVaults()).vaults.find(f=>f.id===c);if(!u)throw new ye(404,`Vault ${c} was not found in the latest vault snapshot.`);const h=Wr(await l.api.updateVault(c,{name:r??u.name,type:a??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
|
|
266
|
+
${Hl(h)}`)})}function IZ(e,t){const n=e.command("vault").description("Manage Hagi vaults and vault file browsing through generated backend APIs.");WZ(n,t),VZ(n,t),yZ(n,t),GZ(n,t);const o=n.command("files").description("Browse registered vault files and preview supported content.");NZ(o,t),vZ(o,t)}function XZ(e){return e.includes("--json")}function Ql(e=Ts(),t=!1){const n=new sc;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}),gg(n),RA(n,e),LA(n,e),IZ(n,e),sp(n,e),Yp(n,e),Op(n,e),oZ(n,e),kg(n,e),K2(n,e),hZ(n,e),n}function YZ(e,t,n){return e.exitCode===0||e.code==="commander.helpDisplayed"||e.code==="commander.version"?0:(n&&t.io.stderr(ws({exitCode:$.USAGE,message:e.message},{json:!0})),$.USAGE)}async function CZ(e=process.argv,t=Ts()){const n=XZ(e),o=Ql(t,n);try{return await o.parseAsync([...e]),0}catch(r){if(r instanceof ic)return YZ(r,t,n);const a=Bs(r,{baseUrl:qm()});return(r instanceof et||r instanceof T)&&r.reported||t.io.stderr(ws(a,{json:n})),a.exitCode}}Object.defineProperty(exports,"EXIT_CODES",{enumerable:!0,get:function(){return $}});Object.defineProperty(exports,"createCliApp",{enumerable:!0,get:function(){return Ql}});Object.defineProperty(exports,"runCli",{enumerable:!0,get:function(){return CZ}});
|